This ensures that the OBSBasicSettings destructor has been run before
the restart prompt appears, preventing bugs related to OBS shutting down
with the settings window still having active callbacks.
This can be fired by a callback during source removal. The code was
re-adding the source that was just removed, causing the program to
freeze when trying to remove all sources.
When an audio source is removed, it signals its "destroy" callbacks.
One of the callbacks is OBSSourceLabel::SourceDestroyed. When its Qt
destroy signal is fired, it causes a call to LoadAudioSources to refresh
the source list. LoadAudioSources deletes the old layout, and so the
QWidget that the OBSSource is based on is freed while it's still in the
middle of running the signal callback, resulting in access to freed
memory.
The audio track should always be 0 for RTMP output. The previous code
accidentally used the audio track index to set the encoder track index.
If the chosen audio track was track 2, this enabled the experimental
multi-track RTMP output code. This then caused streams to fail as if
there were network problems, as popular RTMP services like Twitch don't
understand the multi-track RTMP stream and the connection hangs.
(This commit also modifies libobs)
Hides encoders that are marked as internal. Same general functionality
as DEPRECATED but not actually deprecated, just internal-only.
This replaces the previous Open File dialog for importing collections
with a window for importing many collections at once, based on the remux
window, along with support for importing from OBS Classic, XSplit
Broadcaster and from Streamlabs' fork. This also translates sources
between OSes that Studio supports.
The current updater code won't prompt the user if an output is active or
if game capture is in use. These are both fairly common situations to be
in as soon as OBS starts up - for example, the NDI and VirtualCam
plugins both start outputs automatically, and a game capture source will
hook if the game is open.
It should be fairly obvious to a user that OBS will be closed when an
update is installed. Given the low frequency of game capture updates,
the risk of an update encountering in-use files is also very low, and
the standalone updater UI already shows a prompt should this happen.