Skip to content

Cherry picks#12319

Merged
RytoEX merged 19 commits intoobsproject:release/31.0from
RytoEX:cherry-pick-31-0-4
Jun 27, 2025
Merged

Cherry picks#12319
RytoEX merged 19 commits intoobsproject:release/31.0from
RytoEX:cherry-pick-31-0-4

Conversation

@RytoEX
Copy link
Member

@RytoEX RytoEX commented Jun 27, 2025

Description

Picks:

Motivation and Context

We recently discovered that OBS Studio 31.1.0 will not launch on macOS 11 due to updating Qt from 6.6.3 to 6.8.3. To fix some critical issues for macOS 11 users, it seems prudent to pick some fixes to the release/31.0 branch.

A more limited set of cherry picks are here, if preferred: https://github.com/RytoEX/obs-studio/tree/cherry-pick-31-0-4-limited

How Has This Been Tested?

The changes have been tested in the 31.1.0 beta and RC.

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • Code cleanup (non-breaking change which makes code smaller or more readable)
  • CI

Checklist:

  • My code has been run through clang-format.
  • I have read the contributing document.
  • My code is not on the master branch.
  • The code has been tested.
  • All commit messages are properly formatted and commits squashed where appropriate.
  • I have included updates to all appropriate documentation.

norihiro and others added 19 commits June 26, 2025 18:44
actions/cache versions other than v4, v3, v4.2.0, and v3.4.0 were
deprecated and gradually sunset through February.

@actions/cache versions other than v4.0.0+ were deprecated and gradually
sunset through February.

See:
 * actions/cache#1510
 * actions/toolkit#1890

flathub-infra/flatpak-github-actions/flatpak-builder set its
@actions/cache dependency version to "^3.2.3" and was last updated on
July 29, 2024. As a result, its yarn.lock file specifies version
"3.2.4", which is no longer supported and does not work.

Update flathub-infra/flatpak-github-actions actions now that they have
updated their @actions/cache dependency.

(cherry picked from commit 8db61f2)
Curl reports that the luajit.org git repo is using a self-signed cert.
This is causing git operations to fail. Let's just use the GitHub
mirror.

Cherry Pick Note:
Manually edited to only change the remote and not the commit.

(cherry picked from commit cfb23a5)
The fork has been merge with upstream.

flathub-infra/flatpak-github-actions#17
(cherry picked from commit a368f05)
If the crop values combined are larger than the width or height of the
source, an integer overflow will occur.

This fix converts the width/height values to int, and then clamps
any negative values to 0.

(cherry picked from commit 7f09344)
If a frame has a width or height of zero, this value will make it into
libobs/media-io/video-frame.c:video_frame_init and cause linesizes or
heights to be zero, which will result in a bmalloc(0) call and OBS will
crash.

Instead of letting the call stack get that far, check the frame width
and height here at the source, log an error, and return early if the
frame width or height are zero.

(cherry picked from commit 7cae57d)
Add function that tries to reset v4l2loopback output for module versions
from 0.12.5 to 0.12.7. If successful, then set flag that STREAMON and
STREAMOFF are necessary each time the device is opened/closed.

(cherry picked from commit 12c6feb)
In `parse_decl_string`, it jumps to `fail` label if an error occurs.
However, if the lexer encountered an error for example, `cfp.error_list`
may be empty.

(cherry picked from commit 220b0ec)
This fixes a regression on Linux, introduced in commit 9bc3082.

According to the POSIX specification for the exec family of commands,
"The first argument is the filename or pathname of the executable to
be executed". This was done correctly before, but the above commit
removed "sh" from the arguments, breaking the pipe function on Linux.

(cherry picked from commit 1fc94ec)
Frame width/height check crash if the frame is not given.

We can reorder width/height check after other precondition checks.

(cherry picked from commit 22c4e11)
At a glance, the GenId function looks like it can only return a
16-character hexadecimal string with all characters being [0-9A-F].
However, it seems that it can rarely return a 16-character string that
has one or two space characters at the beginning due to the value of id,
from which the final string is derived, being too low (lower than
1152921504606846976 or 0x1000000000000000) and the printf format
specifier having a width of 16. This results in a string of less than 16
characters that is padded with blank spaces. The end result is a cookie
directory that has leading spaces in its name, which can cause various
issues, such as breaking syncing on OneDrive.

If we set the format specifier to pad with zeroes instead of spaces, the
resulting hexadecimal value is always 16 characters long without spaces.

(cherry picked from commit 9bd4514)
The v3 build did not have the wrapper built. This fixes that.

(cherry picked from commit bbbdb88)
Use a rebuilt CEF of the same version (6533) that additionally disables
use_allocator_shim to avoid memory-related crashes on macOS 13 and
older.

(cherry picked from commit f424129)
When no role is set, the default is QAction::TextHeuristicRole. This
means that the text of the item gets fuzzy-matched in Qt against a set
of possible strings that could indicate that the menu should be in the
application menu on macOS.
For us this meant however that on some languages, the translation of
"WebSocket Server Settings" would begin with "Config", and as such the
related QAction replaces our "Settings" action for the PreferencesRole,
and clicking "Preferences..." in the application menu would open the
websocket settings. It should probably be considered a bug in Qt that
implicit matches via TextHeuristicRole can overwrite ones that are
explicitly set (like our PreferencesRole). However we explicitly set our
roles ourselves anyways and there is no scenario where a  plugin should
overwrite them, we can just default actions added via the Frontend API
to be NoRole; and worry about the Qt bug later.

Cherry Pick Note:
Manually picked due to UI code reorganization.

(cherry picked from commit d3c5d2c)
@RytoEX RytoEX requested a review from PatTheMav June 27, 2025 19:00
@RytoEX RytoEX self-assigned this Jun 27, 2025
@RytoEX RytoEX added Bug Fix Non-breaking change which fixes an issue Seeking Testers Build artifacts on CI labels Jun 27, 2025
@RytoEX RytoEX merged commit f711aa3 into obsproject:release/31.0 Jun 27, 2025
@RytoEX RytoEX deleted the cherry-pick-31-0-4 branch June 27, 2025 21:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Bug Fix Non-breaking change which fixes an issue Seeking Testers Build artifacts on CI

Projects

None yet

Development

Successfully merging this pull request may close these issues.