Details
-
Bug
-
Resolution: Unresolved
-
P1: Critical
-
None
-
6.8.0, 6.8.1, 6.8.2, 6.8.3
-
None
-
OBS Studio on Windows. A build from master branch is currently needed because there is no tagged OBS Studio release with Qt 6.8.2.
-
-
Windows
Description
OBS Studio has migrated from Qt 6.6.3 to 6.8.2. OBS builds with 6.8.2 are not released yet.
OBS Studio uses several browser docks, which are Qt dock widgets that contain a browser instance, specifically from CEF (Chromium Embedded Framework). During startup of OBS, `restoreState()` is used, and this has been working fine until updating to Qt 6.8.2. Specifically, once several browser docks are restored, with one of them in the docked state of the main window, all Qt windows begin rapidly flashing and eventually the app hangs. Task Manager must be used to kill the process.
Attempting to debug the app is difficult because the debugger is also frozen and cannot interrupt the loop. Profiling reveals that `QApplication::notify()` is being called in a tight loop. Breaking this loop sometimes occurs by quickly clicking each window (or dock) after application start, thereby providing a focus() event for each widget.
After tedious iteration and testing, the commit that introduced this behavior is in Qt base: https://code.qt.io/cgit/qt/qtbase.git/commit/?id=f20be43b827ffa5c9361bc128fd930841435bdf6
Please note this issue was found on Windows, but very likely exists for Linux and Mac as well (OBS Studio runs on all 3).