The previous fix for repeated names accidentally meant that if a scene
item in a scene was meant to show another scene that was lower in the
list, it would fail to create the item, and wouldn't make it into the
imported collection.
This fix makes sure that scenes as sources still works properly in that
situation.
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.