framescheduler: fix edge case crashes

rare UAFs because renderMonitor can call onDisconnect (ugh, that should be changed...)

fixes #11073
This commit is contained in:
vaxerski 2025-08-16 16:52:28 +02:00
parent 1cbb62ed6a
commit 78c9e2080c
3 changed files with 38 additions and 12 deletions

View file

@ -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;
};