368 Commits

Author SHA1 Message Date
Warchamp7
f730063da3 frontend: Adjustments to Add Source window 2026-07-16 14:33:56 -04:00
Warchamp7
6750a6e9f5 frontend: Change source window button label 2026-07-16 14:33:56 -04:00
Warchamp7
a9bcb4f9f8 frontend: Update recent sources text 2026-07-16 14:33:56 -04:00
Richard Stanway
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
derrod
f7e4fba19f frontend: Add defunct Twitch Soundtrack plugin to DLL blocklist 2026-07-14 13:47:07 -04:00
Matt Gajownik
f2db0972ee Update translations from Crowdin 2026-07-09 14:48:07 -04:00
Warchamp7
83f5459afa frontend: Fix empty volume name label 2026-07-06 16:42:49 -04:00
Warchamp7
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
Warchamp7
1b0fc3b8be frontend: Fix resizing horizontal volume name 2026-07-02 18:49:44 -04:00
Warchamp7
b99ccb0367 frontend: Fix invokeMethod function name 2026-07-02 15:54:32 -04:00
Warchamp7
137fe34ce2 frontend: Remove What's New window padding 2026-07-02 15:32:09 -04:00
Warchamp7
02b0a796d5 frontend: Remove What's New bottom button 2026-07-02 15:32:09 -04:00
LinuxUserGD
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
Warchamp7
dcbb7840fe frontend: Show warning icon for Monitor Only 2026-07-01 14:27:15 -04:00
Warchamp7
04d36e09b9 frontend: Remove Monitor Only from UI 2026-07-01 14:27:15 -04:00
Warchamp7
4819d1714b frontend: Use same base theme on Win 10/11 2026-06-30 16:48:31 -04:00
Richard Stanway
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
Warchamp7
85e54825e9 frontend: Fix duplicate layout name 2026-06-19 18:52:08 -04:00
tytan652
873eea74e3 frontend: Explicitly set plugin manager linkage to nlohmann_json 2026-06-19 18:20:23 -04:00
Exeldro
98f5714b92 frontend: Fix pasting scene item on not the current scene 2026-06-17 17:23:00 -04:00
Warchamp7
696e8495df frontend: Remove volume control tri-state logic 2026-06-17 16:34:16 -04:00
Warchamp7
fcab6489b5 frontend: Clean up function names 2026-06-17 16:34:16 -04:00
Warchamp7
6ff9db6f13 frontend: Fix volume control state desync 2026-06-17 16:34:16 -04:00
PatTheMav
556d5fdbda frontend: Apply clang-format 22 formatting 2026-06-17 15:17:09 -04:00
Warchamp7
30b63c6849 Update C++ files with braces 2026-06-09 13:41:19 -04:00
PatTheMav
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
PatTheMav
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 Huotari
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
PatTheMav
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 Howell
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
Warchamp7
9f4320ec70 frontend: Adjust shutdown logic more 2026-06-08 12:01:28 -04:00
PatTheMav
f61619ce30 frontend: Fix multitrack custom config handling
Custom configuration for multitrack-enabled services is only supposed
to be available for the "rtmp_custom" service type, as that's also
the condition for the corresponding text input to become visible in the
settings dialog.

When a user switches their desired service from the custom service back
to another service that also supports multitrack, the custom service
configuration is still present and will be applied even though it
should only be effective for the custom service.

This change makes the simple decision to ignore any available custom
multitrack configuration if the service is not "rtmp_custom" and
requires an "auto_config_url" to be available in that case. Otherwise
the "rtmp_custom" service requires an "custom_config" to be available.

That way the implementation reflects the behavior of the settings dialog
and will not lead to the present unexpected behavior, including:

* The custom configuration is "merged" with the config ID provided
  via the "auto_config_url".
* A non-custom service might fail to configure because the custom config
  is applied and might be missing required fields.
* A non-custom service might succeed to configure because the custom
  config is applied and has all required fields, but the service was
  meant for an entirely different service.

Additionally the unused "MultitrackVideoDeveloperModeEnabled" function
was removed. For simplicity's sake, all legacy code paths that allowed
interference or custom overrides with the service configuration for
established services are removed.

If such functionality is still desired, it needs to be reimplemented in
a service-agnostic way, taking the possibility of other multitrack-
capable services into account.
2026-06-05 16:43:12 -04:00
PatTheMav
1829492e6b cmake: Move frontend plugins into main plugins dir
Frontend plugins should not require being placed in the frontend
directory to be built successfully. Indeed they should only depend
on libobs and the obs-frontend-api and thus their source tree should
be able to exist anywhere (even standalone) and the plugin should still
compile successfully (just like any 3rd party plugin).

Thus moving those plugins into the main plugin directory ensures that
they don't require on any "special sauce" within the source tree to
compile.
2026-06-05 16:00:18 -04:00
PatTheMav
35c7a5a173 cmake: Fix frontend feature flag mismatch
The actual frontend provided an "ENABLE_FRONTEND" build flag, whereas
the global project still provided an "ENABLE_UI" flag, which itself was
only read and respected by the scripting module.

This change retains the global flag and makes both the actual frontend
as well as the scripting module respect its value.
2026-06-05 16:00:18 -04:00
Richard Stanway
77eabcc06a frontend: Set better default DLL directory settings on Windows
This helps mitigate "DLL planting" attacks by removing the current
directory from most DLL loading calls.
2026-06-05 15:27:30 -04:00
Ryan Foster
3b4872c5c0 frontend: Replace implicit "=" with "this" 2026-06-05 14:48:32 -04:00
Alex Luccisano
af77628900 frontend: Fix null settings and DBR for custom configs
When using custom RTMP output with a JSON config that omits
encoder settings, settings.dump() produces "null" which
obs_data_create_from_json cannot parse. Fall back to
obs_data_create() for null/non-object settings so encoders
use their defaults.

Additionally, when bitrate_interpolation_points is absent,
the code unconditionally set interpolation_table_data as
empty arrays. This caused build_dbr_interpolation_table to
wipe the default linear table, leaving DBR enabled but
unable to adjust bitrates during congestion. Only set the
interpolation data when all encoders provide it, otherwise
fall back to the default linear 0-to-max interpolation.
2026-06-05 14:11:55 -04:00
Alex Luccisano
14f25811d1 frontend: Remove multitrack locale strings
Remove the locale strings that are no longer needed now that
`HandleIncompatibleSettings()` is removed, and replace some
`<br>` tags with \n to fix rendering issues on MacOS.
2026-06-05 14:11:55 -04:00
Ruwen Hahn
cd95b3bf49 frontend: Add dynamic bitrate support to multitrack video
The bitrate interpolation points are sent in JSON configuration and
need to be forwarded to `create_video_encoders()`. Also remove the
`HandleIncompatibleSettings()` handler because there are no longer any
incompatible settings.
2026-06-05 14:11:55 -04:00
Wu Haoyu
151097d3bd frontend: Fix a dereference of nullptr
`outputResolution` may not be editable and outputResolution->lineEdit()
can return `nullptr` which causes crash.
2026-06-02 15:15:34 -04:00
Warchamp7
686ee75a05 frontend: Set up theme watcher during init 2026-05-28 16:09:19 -04:00
John Bowers
4d6d9a5166 frontend: Slight change to multi-track text
Change text to indicate that enhanced broadcasting/MT does not have
to configure multiple encodes, although it often/usually does.
2026-05-27 12:45:53 -04:00
Ryan Foster
4726edd113 frontend: Fix updates failing when configured without What's New
The updates config folder is used to download files tied to update
branch selection and application updates. If this folder does not exist,
the downloads fail. Tying this folder creation to What's New, which also
uses this folder, seems incorrect, since it is also uses for application
updates. Remove the ifdef guard for folder creation.
2026-05-26 17:07:05 -04:00
Exeldro
854948b8df frontend: Add copy paste functions 2026-05-22 17:25:23 -04:00
Warchamp7
a0a480dc80 frontend: Add spacing to properties hint icon 2026-05-19 16:48:52 -04:00
Warchamp7
638f885e5d frontend: Fix thumbnail update rate 2026-05-19 13:36:52 -04:00
Warchamp7
855b8a9d6f frontend: Add minimum width to spinboxes 2026-05-08 14:35:15 -04:00
Richard Stanway
cd7562791f frontend: Apply process mitigation policies for Windows
DEP: Enable DEP as it's still opt-in even on Windows 10. No OBS code or
plugins should be executing data as code and this is an important
mitigation against stack-based buffer overflows.

ASLR: Enable and force ASLR. This makes it harder for any potential
exploits to use fixed offsets into OBS or Windows DLLs to run gadgets.

Extension Points: Disable extension points. These are typically used for
system-wide code injection, and we have generally had trouble with
various things injecting into OBS and causing issues.

Handle Check: Enable strict handle checks when running debug builds.
This will raise an exception if we operate on an invalid handle,
something that should hopefully not ever happen in the current code.
2026-05-08 14:08:12 -04:00