New profile state is similar to first start: settings are wiped, encoders
not setup. It may make sense to show the auto configuration wizard when
a new profile is made as well.
There is a checkbox option to show the wizard. If a profile is created
with the checkbox off, the checkbox will remain defaulted to off next
prompt.
Due to the fact that a global was used on GenerateSpecifiedFilename to
save the remux file name, when a screenshot was made, it would overwrite
the filename being remuxed, because screenshots use the same function to
generate filenames as well.
This solves that problem by removing the global and the changes to
GeneratedSpecifiedFilename, and isolating that to the output handler.
Coincidentally, this bug probably also happened with replay buffers
under certain circumstances.
Fixesobsproject/obs-studio#3497Closesobsproject/obs-studio#3498
Fixes the browse button in the remux file dialog not having the proper
style applied. This is a bit of a workaround because it is still unknown
why the button was white.
The source toolbar allows quick and easy access to properties and
filers, and shows common properties/features of a source type. For
example, when you select a media source, VLC source, or the slideshow
source, you'll get media controls to control playback of the media. If
you select a text source you can edit the font, color, or text if
applicable. Or if you select a capture source, you can select the
display/window/etc to capture for that source.
If the source toolbar is not desired and is viewed as taking up valuable
space in the window, it can be disabled via the view menu.
Co-authored-by: Clayton Groeneveld <claytong1214@gmail.com>
Co-authored-by: Jim <obs.jim@gmail.com>
This adds a check when compiling for linux to check for a ChromeOS
container specific directory. If this directory exists OBS will fail to
start with an error that ChromeOS is unsupported.
The OBSContext never called obs_startup but would always call
obs_shutdown in its destructor, resulting in shutdown calls even if
libobs wasn't initialized (eg due to a startup error). Instead, we now
track if libobs was initialized in OBSApp and call shutdown in the
destructor.
When distributing OBS via third party platforms that have their own
update systems we want to be able to disable the OBS updater without
having to resort to having a separate build entirely.
Adds a virtual camera button to the main user interface. If virtual
camera is not installed, it will not add the button. On Windows, it
detects whether the virtual camera filters are properly registered, and
will only add the button if the virtual camera filter is confirmed
registered.
Also adds a virtual camera option to the auto-configuration wizard,
which will just simply set the user's resolution/scale to 1920x1080 at
30 FPS.
This change makes it so OBS will still launch even if a theme is
missing. This change also deprecates the "CurrentTheme" config key, and
is replaced by "CurrentTheme2".
This is because a previous change to make sure OBS fell back to the
System theme in case of a missing theme had been accidentally removed.
Changing the key prevents a new version of OBS setting a theme that
doesn't exist in an older version, which would prevent that version from
launching.
Both BTTV and FFZ are fairly popular however they do occasionally
interfere. To give users the option to chose whichever one they like
most we add a new setting that allows BTTV, FFZ, both, or neither.
Defaults to "None" for new users. Existing users will be migrated to
"Both" as that's the previous behavior.
(This commit also modifies the UI)
This solves the issue where OBS would be deprioritized by Windows over
fullscreen games, causing OBS to lag out whereas the games would still
run fine.
This reverts commit b5843caa484068d6fcc5f5fe8ee2dc06078500ff.
This breaks some hotkeys because the signals are tied to a signal which
is now triggered because "toggled" is used instead of "clicked", so just
revert it for now for the release and look at it later post-patch.
This commit fixes various issues with screen readers in the main OBS
interface. These were tested using NVDA on Windows 10 1903.
Checkboxes or buttons which toggle, when receiving an activate signal
from the screen reader would visually update, but not perform any
action. This is because they're listening only for clicks. They should
all now be listening for toggles instead.
The screen reader would navigate through the UI in the order that
elements are defined in the .ui XML, and not by their row positions.
The XML has been reordered so that things should be defined in their row
order.
Audio track selection now says Track 1, 2, etc, rather than just the
number. Various checkboxes that just say "Enable" now have accessible
text that says what the enable is for (since it says "checkbox", the
fact it's an enable should hopefully be clear). Type in the recording
tab of output now has accessible text which says "Recording Type".
All the right side buttons in hotkeys now have tooltips, and by
extension, accessible text. Currently it does not yet say what hotkey
the action is in relation to, but that would require more locales.
The parameter "inFocus" was being given the opposite of what the name
implies: it was being set to false when in focus, and true when not in
focus. This fixes that confusion.
Code submissions have continually suffered from formatting
inconsistencies that constantly have to be addressed. Using
clang-format simplifies this by making code formatting more consistent,
and allows automation of the code formatting so that maintainers can
focus more on the code itself instead of code formatting.
The system theme was named Default even though the default theme is Dark.
This addresses that by renaming Default.qss to System.qss. I've made it
backwards compatible so users already using this theme are not affected.
The theme list now shows up as:
-System
-Dark (Default)
-Acri
-Rachni
I have also made it so that you can specify the default theme in the
UI config file.
Allows the ability to use invokeMethod on the OBSApp object to execute
an std::function. This allows deferring an std::function call to the Qt
event queue.
Although log files are saved with the date in the name of the log file,
it's also nice to be able to see it inside the log file itself,
especially when uploaded to a text service.