diff options
| author | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-12-22 12:15:00 +0000 |
|---|---|---|
| committer | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-12-22 12:15:07 +0000 |
| commit | 6749c8abd787f054b919e43bae562d8899c3287a (patch) | |
| tree | b18edfef943cf02ffaef633dded9037574efd9a3 /src/events/Monitors.cpp | |
| parent | 8c094b0eec7724c75dd4a1cd7d29b1ff3fe32d18 (diff) | |
fix dynamic monitor disables corrupting pmosthz
Diffstat (limited to 'src/events/Monitors.cpp')
| -rw-r--r-- | src/events/Monitors.cpp | 24 |
1 files changed, 4 insertions, 20 deletions
diff --git a/src/events/Monitors.cpp b/src/events/Monitors.cpp index db8a4553..09b2dc4b 100644 --- a/src/events/Monitors.cpp +++ b/src/events/Monitors.cpp @@ -15,9 +15,7 @@ // // // --------------------------------------------------------- // -CMonitor* pMostHzMonitor = nullptr; - -void Events::listener_change(wl_listener* listener, void* data) { +void Events::listener_change(wl_listener* listener, void* data) { // layout got changed, let's update monitors. const auto CONFIG = wlr_output_configuration_v1_create(); @@ -80,8 +78,8 @@ void Events::listener_newOutput(wl_listener* listener, void* data) { PNEWMONITOR->onConnect(false); - if ((!pMostHzMonitor || PNEWMONITOR->refreshRate > pMostHzMonitor->refreshRate) && PNEWMONITOR->m_bEnabled) - pMostHzMonitor = PNEWMONITOR; + if ((!g_pHyprRenderer->m_pMostHzMonitor || PNEWMONITOR->refreshRate > g_pHyprRenderer->m_pMostHzMonitor->refreshRate) && PNEWMONITOR->m_bEnabled) + g_pHyprRenderer->m_pMostHzMonitor = PNEWMONITOR; // ready to process cuz we have a monitor if (PNEWMONITOR->m_bEnabled) { @@ -140,7 +138,7 @@ void Events::listener_monitorFrame(void* owner, void* data) { } // checks // - if (PMONITOR->ID == pMostHzMonitor->ID || + if (PMONITOR->ID == g_pHyprRenderer->m_pMostHzMonitor->ID || !*PNOVFR) { // unfortunately with VFR we don't have the guarantee mostHz is going to be updated all the time, so we have to ignore that g_pCompositor->sanityCheckWorkspaces(); g_pAnimationManager->tick(); @@ -340,20 +338,6 @@ void Events::listener_monitorDestroy(void* owner, void* data) { Debug::log(LOG, "Removing monitor %s from realMonitors", pMonitor->output->name); std::erase_if(g_pCompositor->m_vRealMonitors, [&](std::shared_ptr<CMonitor>& el) { return el.get() == pMonitor; }); - - if (pMostHzMonitor == pMonitor) { - int mostHz = 0; - CMonitor* pMonitorMostHz = nullptr; - - for (auto& m : g_pCompositor->m_vMonitors) { - if (m->refreshRate > mostHz) { - pMonitorMostHz = m.get(); - mostHz = m->refreshRate; - } - } - - pMostHzMonitor = pMonitorMostHz; - } } } |
