Commit Graph
267 Commits
Author SHA1 Message Date
Richard Stanway e715df130b updater: Fix various race conditions and error handling
The main race was possible concurrent access to unordered_map which
could corrupt internal state. Our global variables were also not
atomically updated. DownloadWorkerThread also returned true on error,
which could cause the updater to proceed without all updates being
downloaded which would then fail at the install stage.
2026-02-10 17:46:18 -05:00
Warchamp7 b4ff360139 frontend: Round all output theme values 2026-02-09 16:30:58 -05:00
shiina424 49c9c868ec frontend: Update unassigned audio track warning text 2026-02-05 18:09:31 -05:00
Warchamp7 c1a134ea15 frontend: Adjust log upload text for current logs 2026-02-05 17:30:31 -05:00
trilkk 9776a227ef frontend: Add needed FreeBSD sys/ headers for libprocstat.h to compile 2026-02-05 16:54:16 -05:00
Warchamp7 923118befc frontend: Clean up mixer hidden state 2026-02-04 18:29:20 -05:00
PatTheMav 921dc93927 frontend: Fix macOS crash in application shutdown
With recent changes to the application shutdown logic, events had to
follow a very strict order as certain elements of shutdown code
depend on other elements not being deallocated prematurely.

This turned the (correct) order of events on macOS upside down and
lead to crashes either when the app was quit from within or when
terminated by the OS.

The fix incorporates multiple elements:

* Removal of the custom "Quit" menu item on macOS to use the default
  implementation of Qt's platform plugin.
* Soft-revert (via preprocessor conditionals) parts of the updated
  shutdown logic to prevent emitting recursive shutdown events.
* Handle main window close event by simply emitting a "quit" event
  on the application instance.
* Update POSIX signal handlers to also simply emit a "quit" event.

In combination these changes reduce the number of different code paths
taken during shutdown:

* Closing the app via the menu item, menu item shortcut, or initiated
  by AppKit (OS shutdown/reboot, or quit via Dock/Finder) will emit an
  AppKit "terminate" event for orderly shutdown.
* Closing the main window or sending an appropriate POSIX signal
  triggers the "terminate" event indirectly by emitting the "quit"
  event on the application instance.

Either way a "close" event to the main window happens before the
event loop is terminated and the application instance is torn down
(either directly, or indirectly via Qt's "closeAllWindows" function in
response to "terminate"). The order of events thus is always:

0. Terminate event by AppKit (except when closing the main window)
1. Closing of main window
2. Termination of browser docks
3. Deallocation of main window
4. Termination of application
5. Deallocation of application

NOTE: All this only applies to macOS. The shutdown order and procedures
on Windows and Linux are unchanged.
2026-02-04 17:04:31 -05:00
PatTheMav 21f6f08679 frontend: Fix Youtube app dock destruction
When the main window is closed and with it the application state is torn
down, browser panels need to be explicitly removed before the the CEF
instance used by the application is shut down itself.

For service-based docks this happens as part of the "reset" of the
"auth" pointer (and thus its destructor), for user-created browser
panels this is achieved by the call to "ClearExtraBrowserDocks".

Because the Youtube app dock is a special browser panel that is created
conditionally, but potentially exists globally, it also has to be
closed this way (if it was created).

Otherwise CEF will force-close the underlying browser host instance as
part of its own shutdown and also deallocate the native window used
by the browser. When the QCefWidget then attempts to detach the
native window from the view hierarchy (to avoid this operation from
potentially closing the root window it is anchored to), it will either
attempt to access a CrFatZombie object (and crash) or access deallocated
memory (and also crash).
2026-02-04 17:04:31 -05:00
shiina424 e652dfa5ca frontend: Add headphones icon in Light Theme 2026-02-04 13:51:02 -05:00
shiina424 3851edf4b3 frontend: Add horizontal and vertical icon in Light Theme 2026-02-04 13:51:02 -05:00
shiina424 3c708f2c0a frontend: Fix monitoring icon color in Acri theme 2026-02-03 14:41:26 -05:00
shiina424 bd22d9c4a4 frontend: Fix monitoring icon color in Rachni theme 2026-02-03 14:41:26 -05:00
Warchamp7 f53c843ac0 frontend: Update previewed sources in mixer by visibility 2026-01-28 13:58:01 -05:00
Warchamp7 84361415ff frontend: Close rename dialog if name unchanged 2026-01-28 13:18:47 -05:00
Warchamp7 90d0d593de frontend: Use disabled meter colors when output muted 2026-01-28 12:53:35 -05:00
Warchamp7 694680e8c0 frontend: Revert Add Source dialog update
This reverts commit 5fc2476913.
2026-01-28 12:13:20 -05:00
Warchamp7 8c04e6a3fe frontend: Restrict audio meter update region 2026-01-23 16:18:30 -05:00
Warchamp7 30633344e9 frontend: Force update volume meter backgrounds 2026-01-23 15:21:00 -05:00
Warchamp7 e73662f6c1 frontend: Implement sizeHint for VolumeMeter 2026-01-22 12:32:12 -05:00
Penwywern 71de30f2a9 frontend: Properly update studio mode mixer 2026-01-20 12:34:54 -05:00
Warchamp7 fa49eace7d frontend: Fix audio mixer monitoring state 2026-01-20 12:11:20 -05:00
Warchamp7 f9c084d88c frontend: Update menu text when switching layouts 2026-01-20 11:47:51 -05:00
Warchamp7 5f0bc21168 frontend: Fix default value for full-height docks 2026-01-17 18:15:21 -05:00
shiina424 00f220a6dc frontend: Make Add Existing Button translatable 2026-01-17 14:28:20 -05:00
shiina424 058f9a8377 frontend: Make Audio Mixer Hidden Button translatable 2026-01-17 14:28:20 -05:00
Warchamp7 e6b52f2e9b libobs, frontend: Signal transition_stop for cancelled transitions 2026-01-16 15:57:36 -05:00
Warchamp7 2faf51a7ed frontend: Prevent setting transition during transitions 2026-01-16 15:57:36 -05:00
Warchamp7 67f4ed3478 frontend: Refresh meter background on style change 2026-01-15 17:07:16 -05:00
Warchamp7 cd2c0b556c frontend: Fix audio mixer dialog on classic theme 2026-01-15 16:20:10 -05:00
Warchamp7 0bdee14778 frontend: Only round final theme values 2026-01-15 15:47:31 -05:00
tytan652 c9bbe81d53 frontend: Add vcs-browser to metainfo
flatpak-build-lint warns to add it.
2026-01-15 14:40:53 -05:00
Warchamp7 d05c8cba25 frontend: Remove unused audio mixer widgets 2026-01-15 12:53:30 -05:00
Warchamp7 26f6091b66 frontend: Fix Audio Mixer toolbar tooltips 2026-01-15 11:43:03 -05:00
Warchamp7 ce87cfb6a1 frontend: Round theme variables with "px" units 2026-01-15 11:13:00 -05:00
Dennis Sädtler 68b19f6b88 frontend: Fix groups not being saved to collection 2026-01-14 16:16:23 -05:00
Warchamp7andLain 5fc2476913 frontend: Replace add source dropdown with dialog
Co-Authored-By: Lain <134130700+Lain-B@users.noreply.github.com>
2026-01-14 14:49:38 -05:00
Anton Kesy 22016f309c frontend: Fix typos 2026-01-14 13:47:30 -05:00
Warchamp7 902f6d17e5 frontend: Display volume source names with QLabel 2026-01-13 16:34:33 -05:00
Warchamp7 a42a6c4c5f frontend: Refactor and update Audio Mixer 2026-01-13 16:34:33 -05:00
Warchamp7 3e5cd44fd5 frontend: Add Menu Checkbox widget
Update MenuCheckBox.hpp
2026-01-13 16:34:33 -05:00
Warchamp7 802cf6bd90 frontend: Create event filter for widget state styles 2026-01-13 16:34:33 -05:00
Hoshino Lina 2b53fe0e65 frontend: Fix QSystemTrayIcon and QMenu delete order
QSystemTrayIcon holds a non-owning pointer to the QMenu, so it needs to
be deleted first.

Fixes: #12948
2026-01-12 17:48:14 -05:00
Exeldro cdb7add0b0 frontend-tools: Add lua registered source to module 2026-01-12 07:55:58 -05:00
Matt Gajownik a5f0988933 Update translations from Crowdin 2026-01-10 01:02:43 -05:00
cg2121 ee1539614a frontend: Add more source undo/redo actions
This adds undo/redo actions for scale filtering, blending mode,
blending method, deinterlacing mode and deinterlacing field order.
2026-01-08 21:37:02 -05:00
Warchamp7 6fa1a35ad4 frontend: Update transform dialog 2026-01-08 21:12:30 -05:00
Warchamp7 c01a9bea49 frontend: Create AlignmentSelector widget 2026-01-08 21:12:30 -05:00
cg2121 8c946e792a frontend: Make sure all scene item properties are copied
Scale filtering, show/hide transitions and private settings were
not copied when copying scene items.
2026-01-08 20:18:13 -05:00
Warchamp7 92a83e4c4c frontend: Sync Preview/Program size and positioning 2026-01-08 19:58:07 -05:00
Dennis Sädtler de82ca9293 frontend: Refactor OBSBasic::Save to only save frontend canvas scenes/groups 2026-01-08 15:03:19 -05:00