Let the output handler hold a ref to the blackbox, not to the recorder

This commit is contained in:
Dustin L. Howett 2025-03-07 18:10:32 -06:00
parent 0197d501d9
commit a76925e20f
2 changed files with 10 additions and 8 deletions

View File

@ -132,12 +132,14 @@ ConnectionRecorder::~ConnectionRecorder() noexcept
void ConnectionRecorder::Connection(const winrt::Microsoft::Terminal::TerminalConnection::ITerminalConnection& connection)
{
_connectionEvents.output = connection.TerminalOutput(winrt::auto_revoke, [this](const winrt::hstring& output) {
this->_blackbox->Log(output);
_connectionEvents.output = connection.TerminalOutput(winrt::auto_revoke, [blackbox = _blackbox](const winrt::hstring& output) {
blackbox->Log(output);
});
#if 0
_connectionEvents.stateChanged = connection.StateChanged(winrt::auto_revoke, [this](auto&&, auto&&) {
});
#endif
_connection = connection;
}

View File

@ -119,15 +119,15 @@ struct ConnectionRecorder : public winrt::implements<ConnectionRecorder, winrt::
void Stop();
private:
bool _started{ false };
std::shared_ptr<Blackbox> _blackbox;
std::wstring _filePath;
winrt::Microsoft::Terminal::TerminalConnection::ITerminalConnection _connection{ nullptr };
struct
{
winrt::Microsoft::Terminal::TerminalConnection::ITerminalConnection::StateChanged_revoker stateChanged;
winrt::Microsoft::Terminal::TerminalConnection::ITerminalConnection::TerminalOutput_revoker output;
} _connectionEvents;
winrt::Microsoft::Terminal::TerminalConnection::ITerminalConnection _connection{ nullptr };
bool _started{ false };
std::shared_ptr<Blackbox> _blackbox;
std::wstring _filePath;
};