Increment checks for the what's new file were not working as intended;
old stored increments would unintentionally pass to newer versions if
the newer versions did not explicitly start up with a whatsnew.json file
that had their version. The previous attempt to fix made it so that it
used a completely separate global.ini entry when a matching entry was
found. However, this entry did not take into account the beta or release
candidate number of the current build. This fixes it to bake in the
beta/rc number into the entry.
This #if test was intended to not show messages for new users, but
instead just made it so messages wouldn't show at all if the entry
wasn't previously set. Plus the expression was bad anyway.
This was causing betas and release candidates to not show what's new
messages when they should have been.
Just remove this code as it's silly to have at this point anyway. All
users should see what's new messages if they open the program, even if
for the first time.
- Requires MbedTLS on Linux
- Enabled by default on macOS and Flatpak
- Enabled on linux via ENABLE_WHATSNEW_LINUX
- Enables compilation of blake2 on Linux/macOS
- Makes header name check also work with lowercase header
- Changes WahtsNew to be only enabled when browser panels are available
Since Yami uses a different font, the 0 dB mark at the top of the
vertical meters would be cut off. This adds a 1px padding to the top
and bottom of the volume meters, when in vertical mode.
This reverts commit 08cee21158.
Turns out that while this did improve theme switching performance, it
also completely breaks styling on macOS and introduces visual quirks
on Windows after switching themes, such as sliders and dropdown contents.
# Conflicts:
# UI/obs-app.cpp
# UI/obs-app.hpp
- The buttons in the accessibility settings were a fixed height, so
they would be rendered in a undesirable way with the Yami theme.
- Also fixes clear button sizing issues in hotkeys sections
The empty state of the SourcesTree widget looks rather busy, with
multiple icons and text without spacing. Revamp that state to use
a single, faded-out, 32px icon, add some spacing between the icon
and the text, and put the icon above the text.
Exact same set of visual changes as before, but this one required
removing some hardcoded sizes from VisibilityItemWidget that were
clipping icons and text, and messing up with the height of items.
New icons for expanding and collapsing groups will be introduced
by next commit, so rename the current one to right.svg - it also
better matches the current filename layout, since we have up.svg,
down.svg, and left.svg.
Setting fixed sizes breaks rendering of the icons in subtle
ways, such as cutting 1px from their sizes. Removing these
fixes sizes seem to allow Qt to correctly render these icons,
and allows us to remove some negative margins hacks that were
added to deal with it.
Some languages such as Spanish or Brazilian Portuguese have longer
words that make the sidebar scroll. Unfortunately Qt reports a rather
large minimum size for the sidebar, so simply removing the maximum
size is not an option.
Increase maximum width of the sidebar to 180px.
The current icon style is somewhat all over the place, with some
icons having thin lines, some others having thicker lines; some
filling the pixel grid in center, others in edges; some trying to
reduce subpixel positioning, some completely unaware of it.
Rework these icons to have a consistent style, with elongated
lines, rounded strokes, and proper center alignment.
The "no_sources.svg" asset is not covered by this work because this
empty state will be worked on in a separate commit.
Further changes will adjust specific UI elements to better match
the icon style.
These icons are derived from the GNOME icon library. I've changed
the fill colour to #fefefe for Dark theme icons, and #000000 for
embedded icons. If further icons are needed, they can be found at
https://teams.pages.gitlab.gnome.org/Design/icon-development-kit-www/
Calling `devicePixelRatioF` from any thread but the main UI thread
triggers thread-safety warnings at runtime on macOS, because Qt uses
NSView calls to determine the value.
NSView calls are only allowed to be made from the main thread on macOS,
so instead the value is stored as a property of the OBSQTDisplay at
initialization, to be retrieved from the preview object later.
Static functions that do not have access to the preview object have the
pixel ratio passed in their call signature.
Allows making QPushButtons use the QToolButton styling.
Current usage is for transitions dock buttons.
May be unneeded after #6756 but doesn't hurt to have
This shows distance between sides of preview and edges of sources.
This will allow users to more easily align sources.
Co-authored-by: Palakis <contact@slepin.fr>
Use JXR for HDR video on Windows. Other operating systems will tonemap
HDR to SDR, and save to PNG. Continue to take PNG screenshots for SDR.
We will probably support EXR for Mac/Linux someday.
Adds a frontend hotkey that splits the current recording file. Ideally,
this would only appear if file splitting is enabled like the replay
buffer hotkey, however that is an output hotkey which is hidden because
the output doesn't exist. This doesn't work here since the recording
output is obviously always available, but is unaware of whether file
splitting is enabled until the output is started.
Theme Meta allows individual themes to provide additional information to
OBS.
The primarily goal is for a theme to define a "parent", allowing to
extend existing themes with additional attributes.
Allows the user to know what plugins failed to load. This is
particularly useful if we're going to block Qt5 plugins as well, or if
certain plugins can't load because they're incompatible with a newer
version.
A combobox with `OBS_COMBO_FORMAT_FLOAT` type couldn't be initialized to
select current item from the settings data. This commit will create
QVariant value with the similar code as that of adding the items and
search the current item using that value.
- Adds frames around certain elements for a better element hierarchy
- Moves the scroll areas into the tabs themselves
- Hides stacked widgets that aren't visible to prevent scrolling of invisible content
This change introduces an accessibility menu to settings, along with
options for overriding the colors used by OBS in the mixer and in the
preview to be more color blind friendly than the options provided by the
current theme.
Documentation appears to wrongly claim that this is available in 10.15,
while in reality it's only 11+. This would lead to a crash on 10.15
since the symbol doesn't exist there.
Switch to Visual Studio 2022 and clang-format 13.
The Ubuntu 22.04 image currently has clang-format 12.0.1, 13.0.1, and
14.0.0. VS2022 17.2 ships clang-format 13.0.1, so let's use that for now
until VS2022 17.3 is available with clang-format 14.
This commit also makes the necessary changes to allow the clang-format
check to pass.
This commit also updates the obs-browser submodules with the necessary
changes.
With https://github.com/obsproject/obs-studio/pull/5148, it was
brought up that the loading of the missing files was not thread
safe, as the missing files were being loaded late in the loading
process. This PR tries to fix that problem, while still simplifying
the original missing files code.
This change makes it so that if you select a service, it will check to
see what codecs that service supports, and only list encoders of those
codecs.
If the service doesn't support a codec and you currently have an
unsupported codec selected in output settings, then it'll prompt you
with a dialog telling the user it will switch to a supported codec, and
if they click yes, then it'll change the codec for the user. If they
click no, then it'll switch back to the previously selected service.
If QT_VERSION is not defined, it gets define with the AUTO value. And
its definition is moved to the helper file.
find_qt now:
- Check quietly for Qt5 and Qt6
- If QT_VERSION is set to AUTO. It checks firstly if Qt5 was found it
will use it. If not it do the same for Qt6
- If QT_VERSION is set to 5 or 6, it checks if the choice was found and
use it. And if not, it falls back to the other if found.
- If neither Qt5 or Qt6 are found, a fatal error is emitted.
- The macro saved the _QT_VERSION in the cache to replace QT_VERSION,
so the process is not repeated each time that find_qt is used.
- When Qt::Gui is in the Linux component list, Qt::GuiPrivate is added.
So using the versioned one is no longer required.
Uses a separate version entry for the "what's new" version check to
ensure that it properly resets whenever a "what's new" entry is ready to
be displayed.
This is more of a safety precaution to ensure that the "what's new"
thread only executes its result function in the UI thread when emitted,
because the result function can read/write config files.
Adds functions to check and/or request specific macOS permissions
(audio device access, video device access, accessibility access, and
screen capture access).
By default only audio capture, video capture, and accessibility are
requested on launch - the first two have straight-forward "Yes/No"
prompts, the latter requires people to enable OBS in the settings
application (but is required for hotkey functionality, independent
of scene setups).
The Breeze Qt style plugin adds frame arround QDockWidget with QPainter
which can not be modifed. To avoid this the base style is enforce to the
Qt default style on Linux: Fusion.
This feature is meant to reduce maximum audio buffering and turn off
dynamic buffering mode. This allows the lowest possible consistent
latency for audio buffering, which is useful for the decklink and NDI
outputs which cannot rely on audio timestamps for synchronization.
This can have a negative effect of making audio segments (partial or in
full) cut out. So audio glitching or audio loss can occur if this is
enabled.
Certain services have custom server lits handling which I had forgotten
about, so although it would have been nice to have this refactor, we'll
have to live with relying on the plugin properties object directly for a
while.
This also reverts obsproject/obs-studio#6530 and
obsproject/obs-studio#6683 because that change depended on this
problematic refactor code.
This reverts commits:
f2e6122881,
bc80d0ca95,
050a29da1a,
22ffc04f73,
275e510aad,
2fa5ffe4df.
bbeafeabdd change how the combobox is filled.
`UpdateColorFormatSpaceWarning` did not get the required change to use
the combobox data rather than the text.
This makes the scene/source tooltips easier to
understand.
Add -> Add Scene, Add Source
Remove -> Remove Selected Scene, Remove Selected Source(s)
MoveUp -> Move Scene Up, Move Source(s) Up
MoveDown -> Move Scene Down, Move Sources(s) Down
Properties -> Open Source Properties
Filters -> Open Source Filters
Adds the Apple Silicon hardware encoder as a simple mode option. For
recordings this only requires being on Apple Silicon (since we use the
Constant Quality setting), while for streaming it requires the user to
be on macOS 13 or newer (since we're using CBR).
Removes font-family definition for now, and changes
other font sizes to pt units instead of px
Also adds a margin to the SceneTree/SourceTree line
edits to fix qss padding weirdness
This significantly improves performance when switching themes.
The original intent was to "clear" customizations applied by the
previously selected theme. This change does not seem to achieve that goal.
When the user changes theme, it is applied immediately. If the user
clicks Cancel, the previous theme is restored. This additional SetTheme
call was unnecessarily causing the existing theme to be re-applied,
resulting in a momentary hang without clear cause.