Fix listener_sessionActive to handle an event correctly when the session get inactivated

This commit is contained in:
Harenayo 2024-06-28 18:03:10 +09:00
parent b7f42a1e88
commit 724f07cd2f
2 changed files with 21 additions and 19 deletions

View File

@ -30,6 +30,7 @@ void Events::listener_RendererDestroy(wl_listener* listener, void* data) {
}
void Events::listener_sessionActive(wl_listener* listener, void* data) {
if (g_pCompositor->m_sWLRSession->active) {
Debug::log(LOG, "Session got activated!");
g_pCompositor->m_bSessionActive = true;
@ -40,4 +41,16 @@ void Events::listener_sessionActive(wl_listener* listener, void* data) {
}
g_pConfigManager->m_bWantsMonitorReload = true;
} else {
Debug::log(LOG, "Session got inactivated!");
g_pCompositor->m_bSessionActive = false;
for (auto& m : g_pCompositor->m_vMonitors) {
m->noFrameSchedule = true;
m->framesToSkip = 1;
}
Debug::log(LOG, "Destroyed all render data, frames to skip for each: 2");
}
}

View File

@ -810,18 +810,7 @@ bool CKeybindManager::handleVT(xkb_keysym_t keysym) {
Debug::log(LOG, "Switching from VT {} to VT {}", ttynum, TTY);
if (!wlr_session_change_vt(g_pCompositor->m_sWLRSession, TTY))
return true; // probably same session
g_pCompositor->m_bSessionActive = false;
for (auto& m : g_pCompositor->m_vMonitors) {
m->noFrameSchedule = true;
m->framesToSkip = 1;
}
Debug::log(LOG, "Switched to VT {}, destroyed all render data, frames to skip for each: 2", TTY);
wlr_session_change_vt(g_pCompositor->m_sWLRSession, TTY);
return true;
}