summaryrefslogtreecommitdiff
path: root/src/renderManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/renderManager.cpp')
-rw-r--r--src/renderManager.cpp20
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();
-}