From 0395dc40a38b5d2d1628b9a3c249d6902bc7b6eb Mon Sep 17 00:00:00 2001 From: Mike Griese Date: Thu, 9 Feb 2023 16:39:15 -0600 Subject: [PATCH] Revert "This actually seems to make the lifetime management worse - we just dtor the WindowEmperor randomly now, which is no good" This reverts commit 7e91bdb28999ef7e2b3cb3672ff90f4665c06c49. --- .../WindowsTerminal/WindowEmperor.cpp | 24 ++++--------------- src/cascadia/WindowsTerminal/WindowThread.cpp | 7 ------ src/cascadia/WindowsTerminal/WindowThread.h | 3 --- 3 files changed, 5 insertions(+), 29 deletions(-) diff --git a/src/cascadia/WindowsTerminal/WindowEmperor.cpp b/src/cascadia/WindowsTerminal/WindowEmperor.cpp index 08ca26483d6..678ef2b0e1c 100644 --- a/src/cascadia/WindowsTerminal/WindowEmperor.cpp +++ b/src/cascadia/WindowsTerminal/WindowEmperor.cpp @@ -155,27 +155,13 @@ void WindowEmperor::CreateNewWindowThread(Remoting::WindowRequestedArgs args, co co_await wil::resume_foreground(this->_dispatcher); this->_checkWindowsForNotificationIcon(); }); - window->Exited([this, peasant]() { - // find the window in _windows who's peasant's Id matches the peasant's Id - // and remove it - _windows.erase(std::remove_if(_windows.begin(), _windows.end(), [&](const auto& w) { - return w->Peasant().GetID() == peasant.GetID(); - }), - _windows.end()); - if (_windows.size() == 0) - { - _close(); - } - }); - auto result = window->WindowProc(); - return result; + + return window->WindowProc(); }; - // _threads.emplace_back(func); - // LOG_IF_FAILED(SetThreadDescription(_threads.back().native_handle(), L"Window Thread")); - std::thread myWindowThread{ func }; - LOG_IF_FAILED(SetThreadDescription(myWindowThread.native_handle(), L"Window Thread")); - myWindowThread.detach(); + _threads.emplace_back(func); + + LOG_IF_FAILED(SetThreadDescription(_threads.back().native_handle(), L"Window Thread")); } void WindowEmperor::_becomeMonarch() diff --git a/src/cascadia/WindowsTerminal/WindowThread.cpp b/src/cascadia/WindowsTerminal/WindowThread.cpp index 2e910707bb4..50fcdd4f19f 100644 --- a/src/cascadia/WindowsTerminal/WindowThread.cpp +++ b/src/cascadia/WindowsTerminal/WindowThread.cpp @@ -85,12 +85,5 @@ int WindowThread::WindowProc() TranslateMessage(&message); DispatchMessage(&message); } - - _ExitedHandlers(); return 0; } - -winrt::Microsoft::Terminal::Remoting::Peasant WindowThread::Peasant() -{ - return _peasant; -} diff --git a/src/cascadia/WindowsTerminal/WindowThread.h b/src/cascadia/WindowsTerminal/WindowThread.h index 501665e2d30..d97a9dfbc43 100644 --- a/src/cascadia/WindowsTerminal/WindowThread.h +++ b/src/cascadia/WindowsTerminal/WindowThread.h @@ -14,9 +14,6 @@ class WindowThread int WindowProc(); winrt::TerminalApp::TerminalWindow Logic(); - winrt::Microsoft::Terminal::Remoting::Peasant Peasant(); - - WINRT_CALLBACK(Exited, winrt::delegate<>); private: ::AppHost _host;