Commit Graph
14622 Commits
Author SHA1 Message Date
Richard StanwayandRyan Foster ab48cd0b3d UI: Add TikTok Live Studio Virtual Camera to DLL blocklist
Ref: https://www.hanselman.com/blog/webcam-randomly-pausing-in-obs-discord-and-websites-lsvcam-and-tiktok-studio
2024-10-30 14:16:47 -04:00
PatTheMavandRyan Foster 1cf6b3d45e UI: Restore frontend API events being dispatched during initialization
The frontend API events "OBS_FRONTEND_EVENT_SCENE_CHANGED" and
"OBS_FRONTEND_EVENT_PREVIEW_SCENE_CHANGED" are not dispatched if
disableSaving has a value > 0. Prior code decremented disableSaving to
0 globally (regardless of whether saving was necessary, which is only
the case if a new collection is created as a fallback for a missing
scene collection).

Thus the updated code exhibits different event dispatch behavior then
old code which some plugins might have relied on. To avoid introducing
new behavior, explicitly create the environment to allow the dispatch
to take place and remove/refactor the events in a later version.
2024-10-30 13:46:36 -04:00
gxalphaandRyan Foster 23910f471f UI: Remove LineEditAutoResize widget
This widget was created primarily for the custom YouTube chat input and
used solely for that. With the custom YouTube input gone, it serves no
further purpose. If it's needed again in the future, it can be recreated
from the history.

Effectively reverts 5a298106bc.
2024-10-30 11:59:33 -04:00
gxalphaandRyan Foster de31ec80ae UI: Remove SendChatMessage from YoutubeApiWrappers
With the custom YouTube chat sending removed in the parent commit,
there's no need to keep these functions anymore.

Effectively reverts 49dfc113c1.
2024-10-30 11:59:33 -04:00
gxalphaandRyan Foster 4730292394 UI: Remove custom YouTube chat input
The custom chat was originally introduced as a workaround because the
ability to chat was always missing due to limitations on YouTube's side.
With the introduction of first-party YouTube chat features in
9b8fa0f0ca, it only has the limited use
case when the user is logged in via the API (in OBS settings), but isn't
logged in in the integration docks. As it's quite a bit of code for not
a lot of value, I think it's worth removing. Users should log in via the
panel instead.

Effectively reverts 3513c78be2.
2024-10-30 11:59:33 -04:00
dimtpapandRyan Foster 7c523c495c linux-pipewire: Fix memory leaks 2024-10-29 15:47:19 -04:00
Charlie LiandRyan Foster 7e1e60cece cmake: Install desktop files and icons on FreeBSD 2024-10-29 15:20:20 -04:00
tytan652andRyan Foster 52a0486c4c cmake/plugins: Enable -Wswitch on GCC
This warning is already enabled for Clang which causes issue for things
that are usually built with MSVC or GCC (e.g. non-macOS plugins).

obs-nvenc switch warning is also fixed in this commit.
obs-qsv11 has switch warning set to not become errors.
2024-10-25 13:01:33 -04:00
Matt GajownikandRyan Foster 0eef4e25ee UI: Split out Whats New dialog, fix crash on shutdown
CEF crashes on shutdown if any browser window remains open during the
shutdown flow. Reproducible 100% of the time on Linux with What's New.
The previous implementation of the What's New dialog correctly deleted
all the Qt widgets, but the CEF internal event flow would only call the
"preparing to close" function, and never the "window safely closed"
function. Moving the code (practically unchanged) to a custom QDialog
solves the problem entirely, and is more consistent with other uses.
2024-10-24 16:01:46 -04:00
tytan652andRyan Foster 2e075f7513 cmake: Fix target_add_resource ARGN support on Linux
This fixes how the AUTHORS file is installed.
2024-10-24 15:08:37 -04:00
derrodandRyan Foster 3ee7655fe4 UI: Log Twitch 403 error bodies 2024-10-23 12:51:56 -04:00
Matt Gajownik 9908c7941f UI: Don't load Restream UI before CEF is ready 2024-10-23 17:33:18 +11:00
Ed MasteandRyan Foster d9b1b8213a CI: Enable WebRTC on FreeBSD
Install www/libdatachannel and leave ENABLE_WEBRTC at the default of ON.
2024-10-22 16:11:08 -04:00
tytan652andRyan Foster 03bc6d7cb4 build-aux: Remove CEF stripping workaround
This cause issues in Flatpak IDE like GNOME Builder.
2024-10-22 15:08:10 -04:00
derrodandRyan Foster e8968ba715 obs-nvenc: Force at least 4 b-frames when using UHQ tune 31.0.0-beta2 2024-10-21 12:18:05 -04:00
PatTheMavandRyan Foster 072102701c UI: Use custom property on QAction to retain profile or collection name
On some platforms (e.g. KDE) accelerators are automatically added to
the text properties of QActions, thus changing the value returned by
text().

Thus we cannot rely on the text to always represent the same text that
we set originally and have to explicitly store and retrieve the value
as a property.

Coincidentally this not only fixes possible issues on other platforms,
but is also architecturally more correct.
2024-10-21 11:51:33 -04:00
PatTheMavandRyan Foster 918fe6171d UI: Update order of profiles and scene collections in their menus
The old method to update the profile menu iterated over the directory
entries of the profile directory in the order provided by the operating
system.

The system calls used for this explicitly state that the order of items
is "undefined" but seems to have followed a case-insensitive
alphabetical order on Windows, an order which users have come to expect.

The new code uses a std::map to store discovered profiles and scene
collections, which is ordered by key and with std::string used for keys
this means a lexicographical sorting of keys which is case-sensitive.

To restore the old behavior, profiles and scene collections need to be
added to their respective menus sorted by case-insensitive order, which
has to be done manually before adding the items.
2024-10-21 11:51:33 -04:00
Ed MasteandRyan Foster 39b91d8875 UI: Restore XDG config path update for FreeBSD
Restore move_to_xdg from commit ba02e065fe to migrate from pre-XDG
config path $HOME/.obs-studio on FreeBSD.
2024-10-18 18:19:19 -04:00
Ed MasteandRyan Foster c928fac339 libobs: Remove non-USE_XDG code
That is, leave only the code that was under USE_XDG.  Previously the
Linux CMake build defined USE_XDG unconditionally, while it was not set
by the FreeBSD build.

The non-USE_XDG code was broken, and FreeBSD should follow the XDG
convention anyway (in particular, storing config files typically under
$HOME/.config/obs-studio).  Defining USE_XDG in the os-freebsd.cmake
files would leave the non-USE_XDG code unused anywhere, so instead just
remove it.
2024-10-18 18:19:19 -04:00
Ryan Foster b18b1346a0 obs-browser: Update version to 2.24.4
910617b - Wait for CEF close event for docks
a76b4d8 - Update version to 2.24.4
2024-10-18 17:44:01 -04:00
Ryan Foster 05d2ee1b6f obs-browser: Update version to 2.24.3
c31adce - Bump nlohmann/json required
aa8953c - clang-format: Increase column limit from 80 to 120
b89a128 - Fix blank Dev Tools window title
4dafce8 - cmake: Fix CEF minimum version
f459def - CI: Port check-changes action from obs-studio
3773257 - build-aux: Add clang-format scripts
0f4af02 - CI: Port run-clang-format action from obs-studio
5823260 - CI: Port check-format workflow from obs-studio
be035cd - CI: Remove old clang-format workflow and shell scripts
362b9a3 - clang-format: Update to clang-format 17.0.3
941c48b - CI: Port appropriate workflows to call check-format
fc946f2 - Replace obs-websocket-api copy with CMake target
31fd647 - Update version to 2.24.3
2024-10-17 15:26:39 -04:00
Warchamp7andRyan Foster 6ca0a88f0e UI: Remove toolButton styling 2024-10-16 13:49:34 -04:00
Warchamp7andRyan Foster 7b052cba45 UI: Replace toolButton property with style class 2024-10-16 13:49:34 -04:00
Ed MasteandRyan Foster 5dccefdc82 CONTRIBUTING.rst: Update for 120 column limit
Commit a1fbf1015f updated .clang-format and existing code for 120
columns, so change Coding Guidelines to match.
2024-10-16 13:29:47 -04:00
Ed MasteandRyan Foster b24c5aa26a CI: Bump FreeBSD image to 14.1 2024-10-16 13:01:48 -04:00
derrodandRyan Foster e97d7c10c2 libobs: Fix items in groups using wrong scale reference 2024-10-16 12:24:18 -04:00
derrodandRyan Foster bece05bbc6 libobs: Fix ungrouped transfom calculation in relative mode 2024-10-16 12:24:18 -04:00
Dimitry AndricandRyan Foster 94866fbcc5 obs-outputs: Add cast to fix build with Clang 19
Clang 19 has become more strict about mixing different enum types, which
resulted in an error building multimedia/obs-studio on FreeBSD:

/wrkdirs/usr/ports/multimedia/obs-studio/work/obs-studio-30.2.3/plugins
    /obs-outputs/flv-mux.c:659:37: error: bitwise operation between
    different enumeration types ('enum multitrack_type_t' and 'enum
    packet_type_t') [-Werror,-Wenum-enum-conversion]
2024-10-16 11:59:06 -04:00
Ed MasteandRyan Foster b654dba30a UI: Catch error from copy in MigrateGlobalSettings
During development on FreeBSD I encountered an uncaught exception abort
from the copy in MigrateGlobalSettings.  Catch the error and print a
user-facing message:

error: Unable to migrate global configuration - copy failed.
2024-10-16 11:37:22 -04:00
Ryan Foster edd7a387a4 obs-qsv11: Update minimum VPL version to 2.9
Since we no longer support Ubuntu 22.04, we can bump the minimum VPL
version to 2.9 which is available in Ubuntu 24.04 packages.
2024-10-15 14:52:04 -04:00
PatTheMavandRyan Foster ca4bc1ad36 UI: Fix initialization bug when launching without existing profile
SetupNewProfile is used to create new profiles when OBS is already
running, which requires resetting program state for the new profile.

This function cannot be used to create a new profile as a fallback
for either a non-existing profile or for a fresh installation of OBS
Studio because by the point this is called from OBSBasic::OBSInit, the
runtime modules are not loaded yet and as such no services exist.

Activating the new profile without a profile reset fixes this issue
as the reset will be done explicitly by OBSBasic::OBSInit later.
2024-10-15 14:28:43 -04:00
Ryan Foster 77d74dd0da UI: Set minimum version for nlohmann_json to 3.11
We know this is the minimum version that we require, so we can just fail
during configure if somehow an older version is found.
2024-10-15 13:30:34 -04:00
gxalphaandRyan Foster ba6a6bfdcb UI/themes: Consistently select indicator-mute instead of MuteCheckBox
cb026964b0 changed most instances of
MuteCheckBox as a selector for the button that mutes/unmutes a source in
the mixer to indicator-mute, but left a few instances of the old
selector, especially in variant themes while the base theme got changed.
This lead to competing selections where apparently indicator-mute won
which meant that the variant themes wouldn't override the base.
Changing all instances of MuteCheckBox to to indicator-mute fixes this
and hopefully prevents future uses of MuteCheckBox as a selector
anywhere.
2024-10-11 14:04:27 -04:00
ExeldroandRyan Foster 88cd7b70db libobs: Add source profiler to public headers 2024-10-10 17:19:45 -04:00
PatTheMavandRyan Foster 3995b4662d UI: Fix crash when providing scene collection or profile via CLI
When a starting scene collection or profile is provided, current code
would crash as the corresponding collections and management functions
do not exist yet (they are tied to OBSBasic, which is not initialized
that early in the program execution).

This change moves the checks for command line arguments into OBSBasic
into the parts responsible for initializing profiles and scene
collections and check for arguments provided via command line there.
2024-10-10 16:38:33 -04:00
PatTheMavandRyan Foster d9d9881789 UI: Fix deletion of scene collection backup on collection deletion
When a scene collection is deleted, the generated backup files should
not automatically be deleted. This was new behavior introduced in OBS
30.0.0.

This change restores the prior behavior.
2024-10-10 16:38:33 -04:00
PatTheMavandRyan Foster a05f5f5009 UI: Fix activation order of profile and scene collections after delete
After a profile or scene collection is deleted, the last item in each
list would have been automatically activated as the new current profile
or scene collection.

This is opposite to prior behavior, which would always select the first
item in the list.

This code restores the prior behavior.
2024-10-10 16:38:33 -04:00
gxalphaandRyan Foster 4575a0ecb3 UI/themes: Fix selectors in Yami Light
Amends cb026964b0.
2024-10-10 14:37:02 -04:00
Matt Gajownik 4bc67755d1 UI: Correctly set Yami border radius for buttons in tables 2024-10-10 12:54:55 +11:00
derrodandRyan Foster 93533d8e42 CI: Fix rclone env var formatting in Windows Patches action 2024-10-08 18:03:06 -04:00
Ryan Foster 9f425af189 CI: Fix sparkle-appcast comment syntax
Prevent a parsing error on GitHub Actions.
31.0.0-beta1
2024-10-08 15:54:38 -04:00
Norihiro KamaeandRyan Foster 03d9fee46e shared/opts-parser: Fix crash when no options were given to the parser
When passing just a space, the number of input options becomes 0. In
this case, calling `bmalloc` should be avoided.
2024-10-08 13:53:07 -04:00
Norihiro KamaeandRyan Foster b082e1be33 libobs/graphics: Remove unused source file graphics-magick.c 2024-10-08 13:25:05 -04:00
derrodandRyan Foster 746d215453 UI: Avoid path<->string conversion when refreshing profile cache 2024-10-08 12:59:45 -04:00
ExeldroandRyan Foster 9e7b51a585 obs-ffmpeg: Fix deadlock on shutting down muxer 2024-10-07 15:16:42 -04:00
tytan652andRyan Foster 2aedaaec51 win-update: Remove legacy CMake file 2024-10-07 15:02:23 -04:00
shiina424andRyan Foster cb1a15ecdf UI: Fix locale key for rename profile text 2024-10-07 14:47:48 -04:00
shiina424andRyan Foster b188874487 obs-nvenc: Add missing locale text 2024-10-07 14:27:52 -04:00
testandRyan Foster 15cd31fdbd UI: Fix settings mismatch 2024-10-07 14:13:25 -04:00
gxalphaandRyan Foster a251e17557 libobs/util: Crash on bmalloc(0)
As outlined in c5965c8605, bmalloc(0) is
pretty much always a mistake, possibly hiding other bugs.
It's been two years since that commit introduced a warning announcing
that this will crash in a future version of OBS, let's make that happen.
2024-10-07 13:52:22 -04:00