386 Commits
Author SHA1 Message Date
tytan652andRyan Foster 71ef44f06e cmake: Require MbedTLS 3 and exclude 4 or later
Until the codebase is updated to support it, CMake will explicitly search
for version 3 that is supported by the codebase.
2026-08-21 15:00:09 -04:00
Nick von KaenelandRyan Foster f40cf8dd72 frontend: Scale simple output recording audio bitrate by channel count
The recording audio bitrate was hardcoded to 192 kbps regardless of
channel layout. For a 5.1 mix this yields ~32 kbps per channel which is
very low quality. Scale proportionally from the stereo reference (192
kbps) using the active channel count, snapping to the closest bitrate
supported by the selected encoder (AAC or Opus).

Stereo recordings are unchanged (192 * 2 / 2 = 192 kbps).
2026-08-21 13:14:46 -04:00
Warchamp7andRyan Foster dfad5c86f6 frontend: Ensure pending profile changes are saved 2026-08-21 12:43:30 -04:00
Richard StanwayandRyan Foster e86c7e501e frontend: Abort if obs-transitions failed to load
The frontend UI assumes transitions are always available and crashes if
none are present. Resolving the crashes resulted in a completely broken
UI, so it's safe to assume that transitions are a core requirement for a
working OBS.

Crash reports indicate that obs-transitions is failing to load for some
users, so we should handle the case where no transitions load and abort
with an error instead of crashing.
2026-08-20 22:41:07 -04:00
Warchamp7andRyan Foster 080b8afcf7 frontend: Add info notices to theme files 2026-08-20 22:15:11 -04:00
Warchamp7andRyan Foster 0043697fc5 frontend: Remove native widget property 2026-08-20 19:22:01 -04:00
WarmUpTillandRyan Foster a07884d752 obs-frontend-api: Fix repeated preview en-/disables not working 2026-08-20 18:54:10 -04:00
PenwywernandRyan Foster f6933c9639 frontend: Don't read unloaded module in source toolbar 2026-08-20 18:25:04 -04:00
PenwywernandRyan Foster 5cecae04f2 frontend: Ensure source type exists before creating toolbar 2026-08-20 18:25:04 -04:00
derrodandRyan Foster 782a15aaf9 frontend: Remove superfluous hidden check 2026-08-20 17:26:22 -04:00
Warchamp7andRyan Foster 3bf06991a5 frontend: Fix SourceButton rename handler 2026-08-20 16:56:10 -04:00
derrodandRyan Foster 8c86ed05d4 frontend: Add Encoder availability check 2026-08-20 16:16:59 -04:00
Warchamp7andRyan Foster 14e3dae77f frontend: Fix spacer in permissions dialog 2026-08-10 17:48:54 -04:00
Warchamp7andRyan Foster f5b6d8da12 frontend: Update forms to fully qualified enums 2026-08-10 17:48:54 -04:00
Warchamp7andRyan Foster 4abbcf0b6d frontend: Update invokeMethod to use functions 2026-08-10 16:27:32 -04:00
Richard StanwayandRyan Foster 88de106cff frontend, plugins: Remove PreferSystem32Images mitigation
This process mitigation flag is inherited by child processes and applies
to load-time DLL resolution, pushing the application's own directory
below the system directories. If there are system-installed copies of
dependent DLLs such as FFmpeg, those get loaded when OBS is updated as
the updater and subsequent relaunch of OBS inherit the mitigation.

As we use SetDefaultDllDirectories, this mitigation is less important,
the proper fix would be to use /DEPENDENTLOADFLAG to protect load-time
import resolution.
2026-08-04 17:19:45 -04:00
Warchamp7andRyan Foster 7546be7266 frontend: Fix default thumbnail positioning 2026-07-21 14:07:32 -04:00
jcmandRyan Foster 01e68ca6ad frontend: Fix deprecated header order in Add Source dialog 2026-07-20 16:03:54 -04:00
Warchamp7andRyan Foster f730063da3 frontend: Adjustments to Add Source window 2026-07-16 14:33:56 -04:00
Warchamp7andRyan Foster 6750a6e9f5 frontend: Change source window button label 2026-07-16 14:33:56 -04:00
Warchamp7andRyan Foster a9bcb4f9f8 frontend: Update recent sources text 2026-07-16 14:33:56 -04:00
Richard StanwayandRyan Foster 9d38a93831 frontend: Add Image SAFER to DLL blocklist
More useless "security" software to try to prevent screenshots that
installs global hooks and kernel drivers. Crash reports indicate that
their hook attaches to and subsequently crashes OBS.
2026-07-14 15:12:13 -04:00
derrodandRyan Foster f7e4fba19f frontend: Add defunct Twitch Soundtrack plugin to DLL blocklist 2026-07-14 13:47:07 -04:00
Matt GajownikandRyan Foster f2db0972ee Update translations from Crowdin 2026-07-09 14:48:07 -04:00
Warchamp7andRyan Foster 83f5459afa frontend: Fix empty volume name label 2026-07-06 16:42:49 -04:00
Warchamp7andRyan Foster 30d3b89b3b frontend: Parent mixer context menu to window
Parent the QMenu to the window. Fixes a warning for "QWidgetWindow
must be a top level window."
2026-07-02 18:49:44 -04:00
Warchamp7andRyan Foster 1b0fc3b8be frontend: Fix resizing horizontal volume name 2026-07-02 18:49:44 -04:00
Warchamp7andRyan Foster b99ccb0367 frontend: Fix invokeMethod function name 2026-07-02 15:54:32 -04:00
Warchamp7andRyan Foster 137fe34ce2 frontend: Remove What's New window padding 2026-07-02 15:32:09 -04:00
Warchamp7andRyan Foster 02b0a796d5 frontend: Remove What's New bottom button 2026-07-02 15:32:09 -04:00
LinuxUserGDandRyan Foster 7a52bedca1 frontend: Add missing <functional> include
Fixes the compile error `no template named 'function' in namespace 'std'`
2026-07-01 16:17:37 -04:00
Warchamp7andRyan Foster dcbb7840fe frontend: Show warning icon for Monitor Only 2026-07-01 14:27:15 -04:00
Warchamp7andRyan Foster 04d36e09b9 frontend: Remove Monitor Only from UI 2026-07-01 14:27:15 -04:00
Warchamp7andRyan Foster 4819d1714b frontend: Use same base theme on Win 10/11 2026-06-30 16:48:31 -04:00
Richard StanwayandRyan Foster 091dbeec81 frontend: Merge Windows process mitigation functions
We already started using SetProcessMitigationPolicy before #5164 got
merged and we dropped Windows 7 support, so we can do away with the
runtime detection too.
2026-06-26 14:38:23 -04:00
Ryan Foster 21733a0543 frontend: Re-enable extension points
Apparently, disabling extension points disables legacy IMEs, which is
undesirable.
2026-06-20 13:41:27 -04:00
Warchamp7andRyan Foster 85e54825e9 frontend: Fix duplicate layout name 2026-06-19 18:52:08 -04:00
tytan652andRyan Foster 873eea74e3 frontend: Explicitly set plugin manager linkage to nlohmann_json 2026-06-19 18:20:23 -04:00
ExeldroandRyan Foster 98f5714b92 frontend: Fix pasting scene item on not the current scene 2026-06-17 17:23:00 -04:00
Warchamp7andRyan Foster 696e8495df frontend: Remove volume control tri-state logic 2026-06-17 16:34:16 -04:00
Warchamp7andRyan Foster fcab6489b5 frontend: Clean up function names 2026-06-17 16:34:16 -04:00
Warchamp7andRyan Foster 6ff9db6f13 frontend: Fix volume control state desync 2026-06-17 16:34:16 -04:00
PatTheMavandRyan Foster 556d5fdbda frontend: Apply clang-format 22 formatting 2026-06-17 15:17:09 -04:00
Warchamp7andRyan Foster 30b63c6849 Update C++ files with braces 2026-06-09 13:41:19 -04:00
PatTheMavandRyan Foster 0db6d4f88c frontend: Use conditional custom Sparkle feed
When OBS runs via Rosetta 2 emulation on an Apple Silicon host, the
next automatic update via Sparkle should use a native Apple Silicon
build rather than the newest Intel build.

This is achieved by setting a custom feed URL on the delegate object
which will then respond with this URL (or alternatively with "nil")
when Sparkle calls the appropriate delegate method.
2026-06-08 18:49:46 -04:00
PatTheMavandRyan Foster d91999b4cf frontend: Add feedUrlStringForUpdater delegate
Adds necessary delegate method to OBSSupdateDelegate to provide
alternative AppCast feed URL at runtime.

The NSString pointer is allowed to be "nil" as Sparkle will only use
a non-nil return value to change from the default feed URL.
2026-06-08 18:49:46 -04:00
Jimi HuotariandRyan Foster 714caa7aa3 frontend: Fix build with Qt 6.12
After Qt upstream commit 556028d16a0 [1], 'QHash' and 'QSet' need
to be explicitly included when using 'QT_ENABLE_STRICT_MODE_UP_TO'.

1. https://code.qt.io/cgit/qt/qtbase.git/commit/?id=556028d16a059006cc5a03676260aff5428b767e

Signed-off-by: Jimi Huotari <chiitoo@gentoo.org>
2026-06-08 17:08:45 -04:00
PatTheMavandRyan Foster 6b1845fe8a frontend: Fix OAuth and dock state save corruption
When the app is quit on macOS, the underlying process is either
triggered by an application-level "Quit" event or by a main window
"close" event.

If the application-level "Quit" event is the trigger, OBSBasic::saveAll
is called twice: First by Qt's session manager (via OBSApp::commitData)
and another time by the main window's close event handled by
OBSBasic::closeWindow.

However if the main window is closed first (and is the first to call
"saveAll") the underlying OAuth data object is destroyed after the data
has been saved. When the second "saveAll" call takes place, it
encounters a "nullptr" for the auth object, which makes "Auth::Save"
effectively remove any OAuth configuration from the settings file
(undoing prior work).

At the other end, if the application quits first, some dock windows
might have been explicitly closed by Qt before the main window is closed
and thus the second call to "saveAll" will overwrite valid browser dock
state data with incomplete data (any dock that has been closed by Qt
before will not be present in that data).

Wrapping the code responsible for saving OAuth and browser dock state
data in a "std::call_once" block should ensure that this data is only
written once and by whoever gets to call "saveAll" first (at which point
state data is still considered "complete").
2026-06-08 15:08:24 -04:00
Rob HowellandRyan Foster 026ec264b8 frontend: Fix group bounds not resizing when removing items 2026-06-08 14:25:47 -04:00
Ryan Foster 93ba0b33ed frontend: Fix Apple ifndef preprocessor check
Currently, this is causing this branch to be called even on Apple
because __APPLE_ is not defined anywhere.
2026-06-08 13:55:00 -04:00