obs-studio/UI
PatTheMav 2226292adc UI: Initialize YouTubeAppDock synchronously to fix Qt runloop issues
The YouTubeAppDock uses its own cookie manager and thus requires a
running CEF instance before creating the dock. Unfortunately creation
of the dock itself and launching the associated browser instance are
coupled in the code.

The UI code to restore browser dock states runs _after_ this code and
unfortunately this is also the only way to ensure that if the user
has closed the YouTubeAppDock before that it stays closed on app
launch (the dock needs to exist in the Widget hierarchy for its state
to be restored).

Alas, outside of Windows, InitBrowserPanelSafeBlock uses a separate
local QEventLoop to block the main thread while still allowing UI
events to be processed to launch a CEF instance.

By this point in the code execution, the primary event loop has not
been started yet, so the event loop launched by
InitBrowserPanelSafeBlock temporarily becomes the main application
event loop, which initializes all Widgets, finds no active window
state for the widgets, and thus treats them as "visible", calls the
showEvent method on every browser dock, which thus loads the associated
websites.

The dock state is restored after all that, which leads to each browser
dock being "shown" (even though the main QApplication hasn't even
started yet), the associated sites are running (including audio and
video output) but then hidden again, which leads to surprising audio
output seemingly coming from "nowhere".

All browser docks call the browser initialization methods synchronously,
which has the benefit of not spinning up a premature event loop, and does
not trigger Qt view state changes before all Widgets have been
initialized. Having the YouTubeAppDock behave the same does thus not
negatively impact UX.
2023-10-08 02:00:38 +02:00
..
cmake cmake: Fix OBS_COMMIT not being set (Windows only) 2023-10-06 17:21:51 -06:00
data UI: Avoid using newlines in error messages 2023-09-12 17:54:42 -07:00
forms UI: Fix IP settings order 2023-09-16 16:16:43 -07:00
frontend-plugins decklink: Add HDR playback support 2023-08-15 13:15:45 -07:00
importers UI/importers: Ignore empty Streamlabs hotkeys 2023-08-12 22:31:01 -04:00
obs-frontend-api UI: Update CMake minimum to 3.22 2023-08-05 16:45:46 -07:00
update UI: Refactor Windows update check to always use LIBOBS_API_VER 2023-10-06 17:21:51 -06:00
win-update/updater updater: Remove non-error logging from multithreaded code 2023-09-05 15:02:41 -04:00
xdg-data build-aux,CI: Split Flatpak manifest in multiple files 2023-05-13 18:26:17 -07:00
adv-audio-control.cpp UI: Replace SIGNAL and SLOT macros in adv-audio-control 2023-07-21 13:16:03 +02:00
adv-audio-control.hpp UI: Replace SIGNAL and SLOT macros in adv-audio-control 2023-07-21 13:16:03 +02:00
api-interface.cpp obs-frontend-api,UI,docs: Add API to add custom docks with no toggle 2023-06-03 16:47:01 -07:00
audio-encoders.cpp clang-format: Set AllowShortLambdasOnASingleLine to Inline 2023-07-15 16:14:55 -07:00
audio-encoders.hpp UI: Add Opus bitrate map and per encoder bitrate list 2023-03-19 17:27:43 +01:00
auth-base.cpp UI: Rework YouTube broadcast setup flow 2021-09-12 13:45:51 +02:00
auth-base.hpp clang-format: Set AllowAllConstructorInitializersOnNextLine to false 2023-07-15 16:14:55 -07:00
auth-listener.cpp UI: Fix AuthListener error HTTP response body 2021-09-16 15:03:28 +02:00
auth-listener.hpp UI: Properly verify state parameter for YouTube auth 2021-09-15 06:16:29 -07:00
auth-oauth.cpp clang-format: Set AllowAllConstructorInitializersOnNextLine to false 2023-07-15 16:14:55 -07:00
auth-oauth.hpp UI: Fix crash on macOS when closing OAUTH browser panel 2023-05-08 18:22:27 -04:00
auth-restream.cpp UI: Set browser dock title in constructor 2023-08-15 12:27:18 -04:00
auth-restream.hpp UI: Refactor integration and browser docks 2023-03-17 20:21:08 +11:00
auth-twitch.cpp UI: Set browser dock title in constructor 2023-08-15 12:27:18 -04:00
auth-twitch.hpp UI: Refactor integration and browser docks 2023-03-17 20:21:08 +11:00
auth-youtube.cpp UI: Don't show native popup for YouTube auth message box 2023-09-11 10:07:16 -07:00
auth-youtube.hpp UI: Fix crash in YoutubeAuth 2023-08-25 19:10:06 -04:00
balance-slider.hpp
clickable-label.hpp
CMakeLists.txt UI: Update CMake minimum to 3.22 2023-08-05 16:45:46 -07:00
context-bar-controls.cpp UI: Localize font picker window title 2023-07-15 16:20:04 -07:00
context-bar-controls.hpp UI: Add application audio capture to toolbar 2022-07-23 17:41:34 -07:00
display-helpers.hpp Update copyrights/names 2023-05-20 01:31:18 -07:00
double-slider.cpp UI: Replace SIGNAL and SLOT macros in custom widgets 2023-07-21 13:16:04 +02:00
double-slider.hpp UI: Replace SIGNAL and SLOT macros in custom widgets 2023-07-21 13:16:04 +02:00
ffmpeg-utils.cpp UI: Refactor getting the default encoder for a format 2023-08-01 11:43:38 -07:00
ffmpeg-utils.hpp UI: Refactor getting the default encoder for a format 2023-08-01 11:43:38 -07:00
focus-list.cpp UI: Remove Qt 5 ifdef guards and code 2023-07-12 13:22:13 -04:00
focus-list.hpp UI: Add ability to reorder filters by drag & drop 2023-06-21 15:33:48 -07:00
horizontal-scroll-area.cpp
horizontal-scroll-area.hpp
hotkey-edit.cpp UI: Remove Qt 5 ifdef guards and code 2023-07-12 13:22:13 -04:00
hotkey-edit.hpp clang-format: Set AllowAllConstructorInitializersOnNextLine to false 2023-07-15 16:14:55 -07:00
item-widget-helpers.cpp Update copyrights/names 2023-05-20 01:31:18 -07:00
item-widget-helpers.hpp Update copyrights/names 2023-05-20 01:31:18 -07:00
lineedit-autoresize.cpp UI: Replace SIGNAL and SLOT macros in custom widgets 2023-07-21 13:16:04 +02:00
lineedit-autoresize.hpp UI: Add vertically expanding LineEdit Widget 2022-06-27 14:35:01 -04:00
locked-checkbox.cpp UI: Source Toolbar 2020-08-17 07:18:18 -07:00
locked-checkbox.hpp UI: Source Toolbar 2020-08-17 07:18:18 -07:00
log-viewer.cpp clang-format: Set AllowAllConstructorInitializersOnNextLine to false 2023-07-15 16:14:55 -07:00
log-viewer.hpp UI: Create Log Viewer window XML file, migrate code 2022-04-10 11:52:11 +10:00
media-controls.cpp UI: Replace SIGNAL and SLOT macros in media controls 2023-07-21 13:16:04 +02:00
media-controls.hpp UI, image-source: Add slide counter to slideshow toolbar 2022-11-20 03:07:27 -05:00
media-slider.cpp UI: Fix Qt 6 position deprecations 2022-07-22 09:37:17 -04:00
media-slider.hpp UI: Add eventFilter to media slider 2022-06-11 16:28:57 -07:00
menu-button.cpp UI: Fix Qt 6 position deprecations 2022-07-22 09:37:17 -04:00
menu-button.hpp
multiview.cpp UI: Fix scenes only multiview label position 2023-07-07 16:38:52 -07:00
multiview.hpp UI: Move multiview render into a new class 2022-07-10 13:45:43 +10:00
mute-checkbox.hpp UI: Add unassigned indicator and warning to mixer 2023-03-25 16:08:25 -07:00
obf.c
obf.h
obs-app.cpp UI: Remove unused static functions 2023-08-26 16:52:35 -07:00
obs-app.hpp UI: Add Safe Mode 2023-07-21 23:22:07 +02:00
obs-proxy-style.cpp Revert "UI: Add workaround for Qt tooltip stylesheet bug" 2023-09-29 18:00:04 +02:00
obs-proxy-style.hpp Revert "UI: Add workaround for Qt tooltip stylesheet bug" 2023-09-29 18:00:04 +02:00
obs.manifest UI: Remove unsupported Windows versions from manifest 2023-02-01 23:00:50 +01:00
obs.rc.in Update copyrights/names 2023-05-20 01:31:18 -07:00
plain-text-edit.cpp UI: Force fixed font in plain text edits 2022-08-22 17:26:50 -07:00
plain-text-edit.hpp UI: Force fixed font in plain text edits 2022-08-22 17:26:50 -07:00
platform-osx.mm Update .clang-format rules for ObjC files for version 16 2023-08-10 17:12:30 -04:00
platform-windows.cpp Update copyrights/names 2023-05-20 01:31:18 -07:00
platform-x11.cpp Update copyrights/names 2023-05-20 01:31:18 -07:00
platform.hpp Update copyrights/names 2023-05-20 01:31:18 -07:00
properties-view.cpp UI: Add high frame rate 119.88 fps to capture device properties 2023-08-12 16:16:24 -07:00
properties-view.hpp UI: Add func to disable properties view deferring 2023-08-03 16:27:55 -07:00
properties-view.moc.hpp UI: Fix missing includes 2020-04-08 17:20:52 -07:00
qt-display.cpp UI: Fix memory leak in OBSQTDisplay 2023-08-17 11:46:28 -07:00
qt-display.hpp UI: Fix crash at render_display while shutdown on macOS 2023-08-15 13:40:09 +09:00
qt-wrappers.cpp UI: Add QDataStream opreators for OBSSource 2023-06-21 15:33:48 -07:00
qt-wrappers.hpp UI: Add QDataStream opreators for OBSSource 2023-06-21 15:33:48 -07:00
record-button.cpp UI: Don't try to make OBSBasic parent of ControlsSplitButton 2023-03-11 09:38:46 +11:00
record-button.hpp UI: Add Virtual Camera source selector dialog 2022-07-31 15:39:18 -07:00
remote-text.cpp clang-format: Set AllowShortLambdasOnASingleLine to Inline 2023-07-15 16:14:55 -07:00
remote-text.hpp Update copyrights/names 2023-05-20 01:31:18 -07:00
scene-tree.cpp UI: Remove Qt 5 ifdef guards and code 2023-07-12 13:22:13 -04:00
scene-tree.hpp UI: Remove workaround for current scene being deselectable on Qt 6.4.3+ 2023-02-11 16:01:27 -08:00
screenshot-obj.hpp Update copyrights/names 2023-05-20 01:31:18 -07:00
slider-absoluteset-style.cpp UI: Use Qt::MiddleButton instead of deprecated Qt::MidButton 2020-12-01 10:54:21 -05:00
slider-absoluteset-style.hpp
slider-ignorewheel.cpp UI: Remove Qt 5 ifdef guards and code 2023-07-12 13:22:13 -04:00
slider-ignorewheel.hpp UI: Make T-Bar unclickable 2023-03-07 13:47:51 -05:00
source-label.cpp
source-label.hpp UI: Fix warnings for Qt 5.15 2020-06-21 18:23:05 -07:00
source-tree.cpp UI: Remove unused ExpandCheckBox 2023-09-09 09:38:42 -07:00
source-tree.hpp UI: Destroy the frontend API after OBS_FRONTEND_EVENT_EXIT 2023-07-15 16:54:51 -07:00
spinbox-ignorewheel.cpp
spinbox-ignorewheel.hpp
ui-config.h.in cmake: Add changes for CMake build framework 3.0 2023-03-26 18:20:38 -04:00
ui-validation.cpp UI: Use connect infos check in before stream check 2023-03-19 18:27:44 +01:00
ui-validation.hpp UI: Add Start Streaming settings check on start 2019-12-11 01:50:41 -08:00
undo-stack-obs.cpp UI: Optimize undo/redo functions with constant references 2022-01-19 21:39:43 +01:00
undo-stack-obs.hpp UI: Optimize undo/redo functions with constant references 2022-01-19 21:39:43 +01:00
url-push-button.cpp UI: Upgrade stream link hotlink to a button 2019-10-30 12:09:07 -07:00
url-push-button.hpp UI: Upgrade stream link hotlink to a button 2019-10-30 12:09:07 -07:00
vertical-scroll-area.cpp
vertical-scroll-area.hpp
visibility-checkbox.cpp UI: Source Toolbar 2020-08-17 07:18:18 -07:00
visibility-checkbox.hpp UI: Source Toolbar 2020-08-17 07:18:18 -07:00
visibility-item-widget.cpp UI: Replace SIGNAL and SLOT macros in custom widgets 2023-07-21 13:16:04 +02:00
visibility-item-widget.hpp UI: Replace SIGNAL and SLOT macros in custom widgets 2023-07-21 13:16:04 +02:00
volume-control.cpp UI: Use std::shared_ptr instead of QSharedPointer 2023-10-04 18:36:20 -04:00
volume-control.hpp UI: Use std::shared_ptr instead of QSharedPointer 2023-10-04 18:36:20 -04:00
win-dll-blocklist.c UI: Relax mc_trans_video_imagescaler.dll DLL block 2023-05-03 19:16:18 -04:00
window-basic-about.cpp UI: Replace SIGNAL and SLOT macros in about dialog 2023-07-21 13:16:04 +02:00
window-basic-about.hpp
window-basic-adv-audio.cpp UI: Cleanup advanced audio window 2022-06-18 23:13:13 +10:00
window-basic-adv-audio.hpp UI: Cleanup advanced audio window 2022-06-18 23:13:13 +10:00
window-basic-auto-config-test.cpp UI: Avoid auto config selecting QSV on linux 2023-07-27 02:34:30 -07:00
window-basic-auto-config.cpp UI: Add stream key tooltip in the auto-config wizard 2023-08-26 16:15:11 -07:00
window-basic-auto-config.hpp clang-format: Set AllowAllConstructorInitializersOnNextLine to false 2023-07-15 16:14:55 -07:00
window-basic-filters.cpp Merge pull request #8689 from gxalpha/no-more-signal-slot-macro 2023-07-29 16:32:56 -07:00
window-basic-filters.hpp UI: Replace SIGNAL and SLOT macros in filters 2023-07-21 13:19:52 +02:00
window-basic-interaction.cpp UI: Remove Qt 5 ifdef guards and code 2023-07-12 13:22:13 -04:00
window-basic-interaction.hpp UI: Remove Qt 5 ifdef guards and code 2023-07-12 13:22:13 -04:00
window-basic-main-browser.cpp Update copyrights/names 2023-05-20 01:31:18 -07:00
window-basic-main-dropfiles.cpp Revert "UI: Support DnD overlay in linuxbrowser" 2023-08-24 15:20:36 -04:00
window-basic-main-icons.cpp libobs, UI: Add OBS_ICON_TYPE_PROCESS_AUDIO_OUTPUT 2022-07-23 17:41:34 -07:00
window-basic-main-outputs.cpp UI: Log if user is ignoring service limits 2023-08-19 16:37:08 -07:00
window-basic-main-outputs.hpp UI: Wait for full vcam deactivation to destroy its view 2023-07-06 15:37:28 -07:00
window-basic-main-profiles.cpp UI: Create/Delete YouTube Dock when switching profiles 2023-09-06 21:50:12 -07:00
window-basic-main-scene-collections.cpp UI: Soft-delete scene collections 2023-07-08 16:39:03 -07:00
window-basic-main-screenshot.cpp Update copyrights/names 2023-05-20 01:31:18 -07:00
window-basic-main-transitions.cpp UI: Replace SIGNAL and SLOT macros in transitions 2023-07-21 13:16:04 +02:00
window-basic-main.cpp UI: Cleanup remaining uses of old version macros 2023-10-06 17:21:51 -06:00
window-basic-main.hpp UI: Use std::shared_ptr instead of QSharedPointer 2023-10-04 18:36:20 -04:00
window-basic-preview.cpp UI: Fix unnecessary GetCurrentScene() call 2023-08-15 17:20:44 -07:00
window-basic-preview.hpp UI: Limit preview scrolling 2023-03-11 15:22:23 -08:00
window-basic-properties.cpp UI: Replace SIGNAL and SLOT macros in properties-view 2023-07-21 13:16:04 +02:00
window-basic-properties.hpp UI: Remove Qt 5 ifdef guards and code 2023-07-12 13:22:13 -04:00
window-basic-settings-a11y.cpp UI: Set loading to true when loading accessibility settings 2023-08-11 21:10:11 -04:00
window-basic-settings-stream.cpp UI: Fix stream key UI not showing when using stream key 2023-08-31 23:39:26 -07:00
window-basic-settings.cpp UI: Fix settings Apply button always being enabled 2023-09-06 12:29:25 -04:00
window-basic-settings.hpp UI: Fix stream key UI not showing when using stream key 2023-08-31 23:39:26 -07:00
window-basic-source-select.cpp UI: Fix source enumeration in source select aborting prematurely 2023-08-28 22:39:53 +02:00
window-basic-source-select.hpp Update copyrights/names 2023-05-20 01:31:18 -07:00
window-basic-stats.cpp UI: Standardize spelling of closable, fix typo 2023-09-11 09:56:27 -07:00
window-basic-stats.hpp UI: Fix stats widget appearance on Yami themes 2022-10-19 15:02:25 -04:00
window-basic-status-bar.cpp UI: Fix alignment of status bar message 2023-08-21 17:46:25 -03:00
window-basic-status-bar.hpp UI: Fix alignment of status bar message 2023-08-21 17:46:25 -03:00
window-basic-transform.cpp UI: Replace SIGNAL and SLOT macros for HookWidget methods 2023-07-21 13:19:52 +02:00
window-basic-transform.hpp UI: Replace SIGNAL and SLOT macros for HookWidget methods 2023-07-21 13:19:52 +02:00
window-basic-vcam-config.cpp UI: Replace SIGNAL and SLOT macros in window-basic-main 2023-07-21 13:19:50 +02:00
window-basic-vcam-config.hpp UI: Use main video on the virtual camera if program 2023-05-30 16:16:07 -07:00
window-basic-vcam.hpp UI: Use main video on the virtual camera if program 2023-05-30 16:16:07 -07:00
window-dock-browser.cpp UI: Store dock titles in BrowserDock instead of relying on Qt 2023-08-15 12:27:18 -04:00
window-dock-browser.hpp UI: Store dock titles in BrowserDock instead of relying on Qt 2023-08-15 12:27:18 -04:00
window-dock-youtube-app.cpp UI: Initialize YouTubeAppDock synchronously to fix Qt runloop issues 2023-10-08 02:00:38 +02:00
window-dock-youtube-app.hpp UI: Set browser dock title in constructor 2023-08-15 12:27:18 -04:00
window-dock.cpp UI: Store dock titles in BrowserDock instead of relying on Qt 2023-08-15 12:27:18 -04:00
window-dock.hpp UI: Store dock titles in BrowserDock instead of relying on Qt 2023-08-15 12:27:18 -04:00
window-extra-browsers.cpp UI: Use std::shared_ptr instead of QSharedPointer 2023-10-04 18:36:20 -04:00
window-extra-browsers.hpp clang-format: Set AllowAllConstructorInitializersOnNextLine to false 2023-07-15 16:14:55 -07:00
window-importer.cpp UI: Replace SIGNAL and SLOT macros in importer 2023-07-21 13:19:52 +02:00
window-importer.hpp UI: Add advanced scene collection importer 2020-02-16 17:56:06 +13:00
window-log-reply.cpp clang-format: Set AllowAllConstructorInitializersOnNextLine to false 2023-07-15 16:14:55 -07:00
window-log-reply.hpp Update copyrights/names 2023-05-20 01:31:18 -07:00
window-main.hpp
window-missing-files.cpp UI: Replace SIGNAL and SLOT macros in missing files 2023-07-21 13:16:04 +02:00
window-missing-files.hpp UI: Add missing files dialog 2021-01-17 10:31:59 +13:00
window-namedialog.cpp Update copyrights/names 2023-05-20 01:31:18 -07:00
window-namedialog.hpp Update copyrights/names 2023-05-20 01:31:18 -07:00
window-permissions.cpp clang-format: Set AllowAllConstructorInitializersOnNextLine to false 2023-07-15 16:14:55 -07:00
window-permissions.hpp Update copyrights/names 2023-05-20 01:31:18 -07:00
window-projector.cpp UI: Replace SIGNAL and SLOT macros for AddProjectorMenuMonitors method 2023-07-21 13:19:52 +02:00
window-projector.hpp UI: Use weak source for projectors 2022-11-17 18:41:23 -05:00
window-remux.cpp UI: Replace SIGNAL and SLOT macros in remux 2023-07-21 13:16:04 +02:00
window-remux.hpp clang-format: Set AllowAllConstructorInitializersOnNextLine to false 2023-07-15 16:14:55 -07:00
window-youtube-actions.cpp UI: Add "YouTube Control Panel" dock panel 2023-08-02 17:49:05 -07:00
window-youtube-actions.hpp UI: Add "YouTube Control Panel" dock panel 2023-08-02 17:49:05 -07:00
youtube-api-wrappers.cpp UI: Increase YouTube API timeout 2023-09-05 10:06:18 -04:00
youtube-api-wrappers.hpp UI: Add "YouTube Control Panel" dock panel 2023-08-02 17:49:05 -07:00