summaryrefslogtreecommitdiff
path: root/src/helpers/MonitorFrameScheduler.hpp
diff options
context:
space:
mode:
authorvaxerski <vaxry@vaxry.net>2025-08-16 16:52:28 +0200
committervaxerski <vaxry@vaxry.net>2025-08-16 16:52:40 +0200
commit78c9e2080c800e9da0792b73ca436ef49384bfb7 (patch)
tree29fb029e91650aa00e26bd3c6a2f01f20b1d3137 /src/helpers/MonitorFrameScheduler.hpp
parent1cbb62ed6a3d9232448a89fe569d253794e5f114 (diff)
framescheduler: fix edge case crashes
rare UAFs because renderMonitor can call onDisconnect (ugh, that should be changed...) fixes #11073
Diffstat (limited to 'src/helpers/MonitorFrameScheduler.hpp')
-rw-r--r--src/helpers/MonitorFrameScheduler.hpp20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/helpers/MonitorFrameScheduler.hpp b/src/helpers/MonitorFrameScheduler.hpp
index e6eab9c9..c9b45a64 100644
--- a/src/helpers/MonitorFrameScheduler.hpp
+++ b/src/helpers/MonitorFrameScheduler.hpp
@@ -22,15 +22,19 @@ class CMonitorFrameScheduler {
void onFrame();
private:
- bool canRender();
- void onFinishRender();
- bool newSchedulingEnabled();
+ bool canRender();
+ void onFinishRender();
+ bool newSchedulingEnabled();
- bool m_renderAtFrame = true;
- bool m_pendingThird = false;
- hrc::time_point m_lastRenderBegun;
+ bool m_renderAtFrame = true;
+ bool m_pendingThird = false;
+ hrc::time_point m_lastRenderBegun;
- PHLMONITORREF m_monitor;
+ PHLMONITORREF m_monitor;
- UP<CEGLSync> m_sync;
+ UP<CEGLSync> m_sync;
+
+ WP<CMonitorFrameScheduler> m_self;
+
+ friend class CMonitor;
};