Skip to content

Commit

Permalink
Fix listener_sessionActive to handle an event correctly when the sess…
Browse files Browse the repository at this point in the history
…ion get inactivated
  • Loading branch information
harenayo committed Jun 29, 2024
1 parent cb8ff20 commit 4fec6d9
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 19 deletions.
27 changes: 20 additions & 7 deletions src/events/Misc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,27 @@ void Events::listener_RendererDestroy(wl_listener* listener, void* data) {
}

void Events::listener_sessionActive(wl_listener* listener, void* data) {
Debug::log(LOG, "Session got activated!");
if (g_pCompositor->m_sWLRSession->active) {
Debug::log(LOG, "Session got activated!");

g_pCompositor->m_bSessionActive = true;
g_pCompositor->m_bSessionActive = true;

for (auto& m : g_pCompositor->m_vMonitors) {
g_pCompositor->scheduleFrameForMonitor(m.get());
g_pHyprRenderer->applyMonitorRule(m.get(), &m->activeMonitorRule, true);
}
for (auto& m : g_pCompositor->m_vMonitors) {
g_pCompositor->scheduleFrameForMonitor(m.get());
g_pHyprRenderer->applyMonitorRule(m.get(), &m->activeMonitorRule, true);
}

g_pConfigManager->m_bWantsMonitorReload = true;
} else {
Debug::log(LOG, "Session got inactivated!");

g_pCompositor->m_bSessionActive = false;

g_pConfigManager->m_bWantsMonitorReload = true;
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");
}
}
13 changes: 1 addition & 12 deletions src/managers/KeybindManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

Expand Down

0 comments on commit 4fec6d9

Please sign in to comment.