With the queued connection in d68484e7, the "Deselect" signal for
sources which are being deleted is never fired, as the object is gone by
the time the queued signal is processed. This results in the context bar
not updating.
This commit adds a new UpdateContextBarDeferred function, allowing
queuing of only the context bar update instead of the whole signal
handler.
This significantly simplifies the
configuration setting's initial load.
This also fixes as issue where the source toolbar
would initialise as "TextLabel" with enabled
buttons if the user had not yet toggled the setting.
Fixes#3722
The Elgato Streamdeck plugin ships their own Qt5Network.dll on Windows,
which may be ABI incompatible with newer Qt DLLs if we decide to update
our Qt version. So to prevent that plugins (and other plugins) from
using their Qt5Network.dll, we need to explicitly load our
Qt5Network.dll first so that we can prevent it from trying to load
theirs beforehand.
For context on this, previously, we didn't ship Qt5Network on Windows
because we would have to ship OpenSSL with it, but we didn't want to
ship it without SSL support. Because of that, Elgato's Streamdeck plugin
would ship their own Qt5Network.dll library (that didn't have SSL
support anyway). However, Qt recently added support for windows
schannel, which allows SSL support via the Windows API, making it so we
don't have to ship extra libraries to get SSL. So now we can start
shipping Qt5Network without worry.
Moves the "Enforce streaming service bitrate" option from simple output
mode to the stream section, renames it to "Ignore streaming service
setting recommendations" (inverting it). When trying to check it, it
will now also display a message box warning the user that it's generally
a not-so-good idea.
Also displays recommended settings for the service.
Adds a VOD track option (specific to Twitch) that allows a user to
specify which audio track to use for their Twitch VODs, which uses a
separate encoder to encode the track. This allows users the ability to
choose what audio goes on their VOD, separately from the live stream.
The frontend API event OBS_FRONTEND_EVENT_REPLAY_BUFFER_SAVED was not
being triggered when hotkeys were used because it was only set to
trigger when the replay buffer button was clicked, not when a hotkey was
used. This fixes it so that the frontend event sends a signal to the
frontend so that hotkeys will actually work.
* obs-frontend-api: add the event of saving replay buffer
Add OBS_FRONTEND_EVENT_REPLAY_BUFFER_SAVED as given by RFC 33
* UI: Emit the replay buffer saved event to the api
Send the OBS_FRONTEND_EVENT_REPLAY_BUFFER_SAVED to api (as in rfc33)
* docs/sphinx: Add replay buffer saved event
Documentation provided for OBS_FRONTEND_EVENT_REPLAY_BUFFER_SAVED (RFC33)
If the tray is disabled in settings, we no longer allow the command line
parameter to override it and create a tray icon regardless. This matches
the behavior in the UI, where "minimize to tray on startup" becomes
unavailable if the "tray enabled" setting is unselected.
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
This object should not always be created on startup. Instead, only load
it specifically when the user wants to load it.
This fixes a freeze some users were experiencing due to the text widget.
Unfortunately, it is not yet known how that freeze occurred with the log
viewer, so for the time being do not load the log viewer object unless
explicitly created.
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.
It was possible to enable the bandwidth test and disconnect your Twitch
account, resulting in a confusing prompt about streaming in bandwidth
test mode when trying to start a stream.
The old version of the device toolbar was a complex situation. Because
of the fact that device properties can take significant time to query,
this put an unpleasant burden on the UI thread; so to fix this problem,
the device toolbar was made to be threaded. However, threading is a
complex and dangerous thing, and there is a fear that this could cause
complications down the line whenever users are simply selecting devices.
So for the time being, as a safety precaution, simplify the device
toolbar down to just the "activate" button, and make it so that if users
really need to query and change the devices, that they need to
explicitly open the properties. That way the devices aren't being
queried constantly every time a device source is selected.
Alternatively in the future, device enumeration could be cached, but
seeing as that's a significant amount of work and needs to take in to
account whether a user adds/removes a device while the process is
active, that's not going to happen any time soon.
It seems like YouTube applies nonlinear-to-linear sRGB, and
linear-to nonlinear-709 transformations to uploaded videos now. This
makes sRGB too dark on their platform for video players that alias 709
as sRGB, which is almost everyone. Make 709 the default to keep peace.
When the feature was added to allow slashes in recording/replay
filenames to automatically create directories, auto-remux was not
accounted for, and all filenames were assumed to be complete. It used
fi.completeBaseName() to construct the new name which would only add the
last part after the last slash as the filename, causing the remuxed file
to save in the base directory rather than the intended directory. This
fixes that by simply using the input string as the output string,
removing the extension, appending the new extension.
Because the virtual camera stops immediately when you call
obs_output_stop() rather than with a delay like other outputs, it
exposed a bug where the tray icon would show OBS as active when stopping
the source, regardless of the fact that it was stopped. The bug was
that the expression used to activate the tray icon did not check to make
sure that the output was actually active, so add that to the expression.
While editing a scene name, the Qt shortcut key for the renameScene
action remained active. If the user pressed the shortcut key while
actively editing a scene name, the widget would retrigger the action,
causing the name edit to fail and discard the current changes to the
scene name. The scene name would be reset to its previous saved value
and reselected as if the user had pressed the shortcut key for the first
time.
This commit removes the QAction associated with the shortcut key from
the scenes dock widget when editing starts and adds the action back to
the widget once editing is done.
Fixes#3044.
Because devices can take significant time to enumerate, defer the
properties creation to a separate thread. The author of this commit
feels a great amount of displeasure over having to write this.