This introduces a split of the current single ConfigFile instance for
all configuration into two separate instances.
The app config instance contains system-wide settings that mainly
concern the working of the app itself, whereas the user config instance
contains settings actually exposed to the user for the configuration.
The frontend API was never explicitly cleaned up which has lead to
several crashes from plugins continuing to call it even after OBS itself
has been destroyed. We now destroy the API after the exit event, so
further calls by plugins will be no-ops instead of potentially accessing
destroyed OBS state.
This also required some changes to our own use of the API, as we relied
on the OBSBasic destructor to clean up some callbacks, by which point
the API should have already been destroyed.
Some plugin does that by deleting the QAction returned by
obs_frontend_add_dock().
Now that obs_frontend_add_dock() is deprecated,
obs_frontend_add_custom_qdock() replace this usage.
8dda8d3500 added a few functions to get the last
recording/replay/screenshot path, but it should return allocations
because it's possible for the data to be modified at a later point.
Adds the following events:
- `OBS_FRONTEND_EVENT_SCENE_COLLECTION_CHANGING`
- `OBS_FRONTEND_EVENT_PROFILE_CHANGING`
Both emitted right before the change occurs. Can provide plugins with
better awareness of these critical operations happening, so that they
can react accordingly.
This adds functions to the frontend api to start/stop the virtual
camera, to check if it is active and adds function to get the output
reference. It also adds api events for when the virtual camera is
started or stopped.
* 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)
Adds `obs_frontend_set_tbar_position` and `obs_frontend_release_tbar`,
which allow plugins and scripts to control the tbar in OBS.
This specific change is required for the `SetTBarPosition`
request to be added to obs-websocket.
Adds support for pausing recordings. When settings are eligible for
recordings, a pause button will appear next to the recording button. If
the settings are not eligible, it will warn the user in the output
settings that they cannot pause recordings if those settings are used.
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.