summaryrefslogtreecommitdiffstats
path: root/src/openglwidgets/qopenglwidget.cpp
diff options
context:
space:
mode:
authorAxel Spoerl <axel.spoerl@qt.io>2025-06-12 20:41:31 +0200
committerAxel Spoerl <axel.spoerl@qt.io>2025-06-14 17:51:17 +0200
commit3416d28c8b0fa8e5cd6622fc86fe6fc5aae9222b (patch)
tree9d5880e1f6b5d68544333bb975fa116568b98c01 /src/openglwidgets/qopenglwidget.cpp
parente45916fadaa4e0d98ef83b3ae32f87cda436c93e (diff)
QWindowsScreenManager::removeScreen() - don't leave stale screen behind
QWindowsScreenManager::removeScreen() read an element from m_screens and removed it. If the removed screen was not the primary screen, QWindowSystemInterface::flushWindowSystemEvents() is called. When removeScreen() is called from handleScreenChanges() in the same class, flushing window events can lead to a re-entry. That is e.g. the case when a RDP connection is closed and the server removes the virtual screen. QWindowScreenManager::removeScreen() removes the platform screen only at the very end, which means that m_screens contains a stale pointer. The re-entry can therefore crash with a double delete. Take the platform screen at the beginning of the method, to make it safe for re-entry. Fixes: QTBUG-135337 Pick-to: 6.10 6.9 6.8 6.5 Change-Id: Id18a6fb3e72922bcdb62c9e79857b6bb713c0c1b Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Wladimir Leuschner <wladimir.leuschner@qt.io>
Diffstat (limited to 'src/openglwidgets/qopenglwidget.cpp')
0 files changed, 0 insertions, 0 deletions