diff options
Diffstat (limited to 'src/renderManager.cpp')
| -rw-r--r-- | src/renderManager.cpp | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/src/renderManager.cpp b/src/renderManager.cpp index d3720c7..c103285 100644 --- a/src/renderManager.cpp +++ b/src/renderManager.cpp @@ -2,10 +2,22 @@ #include "log.hpp" CRenderManager::CRenderManager() - : screen(ftxui::ScreenInteractive::Fullscreen()) { - log(SYS, "RenderManager: initialized"); + : screen(ftxui::ScreenInteractive::TerminalOutput()) { + if (std::atexit([]() { g_pRenderManager->exitLoop(); })) + log(ERR, "Failed to register SessionManager atexit handler, will fallback to quick_exit after hang"); + log(LOG, "RenderManager: initialized"); }; +CRenderManager::~CRenderManager() { + exitLoop(); + log(SYS, "RenderManager: bye"); +} + +void CRenderManager::exitLoop() { + screen.ExitLoopClosure()(); + screen.Exit(); +} + void CRenderManager::enterLoop() { screen.Loop(renderer); } @@ -13,7 +25,3 @@ void CRenderManager::enterLoop() { void CRenderManager::setRenderer(ftxui::Component component) { renderer = std::move(component); } - -CRenderManager::~CRenderManager() { - screen.Exit(); -} |
