summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-05-31 17:17:44 +0200
committervaxerski <43317083+vaxerski@users.noreply.github.com>2022-05-31 17:17:44 +0200
commite73df80782593f0cab39a5f3e7a5a005203c9b0c (patch)
treef8a820c102590b2fcda837089655cae26b191e0b /src
parent0d7131d30efba3b8d279ddaada6651b11751226b (diff)
Add mon in mon out events and fix crash
Diffstat (limited to 'src')
-rw-r--r--src/Compositor.cpp5
-rw-r--r--src/events/Monitors.cpp6
2 files changed, 8 insertions, 3 deletions
diff --git a/src/Compositor.cpp b/src/Compositor.cpp
index 4dfb5297..f7f1d68f 100644
--- a/src/Compositor.cpp
+++ b/src/Compositor.cpp
@@ -1053,8 +1053,9 @@ void CCompositor::moveWorkspaceToMonitor(CWorkspace* pWorkspace, SMonitor* pMoni
if (SWITCHINGISACTIVE) { // if it was active, preserve its' status. If it wasn't, don't.
Debug::log(LOG, "moveWorkspaceToMonitor: SWITCHINGISACTIVE, active %d -> %d", pMonitor->activeWorkspace, pWorkspace->m_iID);
-
- getWorkspaceByID(pMonitor->activeWorkspace)->startAnim(false, false);
+
+ if (const auto PWORKSPACE = getWorkspaceByID(pMonitor->activeWorkspace); PWORKSPACE)
+ getWorkspaceByID(pMonitor->activeWorkspace)->startAnim(false, false);
pMonitor->activeWorkspace = pWorkspace->m_iID;
g_pLayoutManager->getCurrentLayout()->recalculateMonitor(pMonitor->ID);
diff --git a/src/events/Monitors.cpp b/src/events/Monitors.cpp
index 43e861d0..e3b0b190 100644
--- a/src/events/Monitors.cpp
+++ b/src/events/Monitors.cpp
@@ -141,7 +141,9 @@ void Events::listener_newOutput(wl_listener* listener, void* data) {
//
if (!g_pCompositor->m_pLastMonitor) // set the last monitor if it isnt set yet
- g_pCompositor->m_pLastMonitor = PNEWMONITOR;
+ g_pCompositor->m_pLastMonitor = PNEWMONITOR;
+
+ g_pEventManager->postEvent(SHyprIPCEvent("monitoradded", PNEWMONITOR->szName));
// ready to process cuz we have a monitor
g_pCompositor->m_bReadyToProcess = true;
@@ -341,6 +343,8 @@ void Events::listener_monitorDestroy(void* owner, void* data) {
Debug::log(LOG, "Removed monitor %s!", pMonitor->szName.c_str());
+ g_pEventManager->postEvent(SHyprIPCEvent("monitorremoved", pMonitor->szName));
+
g_pCompositor->m_lMonitors.remove(*pMonitor);
// update the pMostHzMonitor