mirror of
https://github.com/WarmUpTill/SceneSwitcher.git
synced 2026-09-15 04:56:17 -05:00
3b63db2bde9002201f6dd44ceb3d47e972588d24
Guard the vendor event emission with obs_get_module("obs-websocket").
During obs_shutdown() modules are unloaded one-by-one; obs-websocket is
unloaded before advanced-scene-switcher, so the proc handler pointer (_ph)
cached in obs-websocket-api.h is already stale when FreeSceneSwitcher()
runs its stop steps. proc_handler_call() then dereferences freed memory
(use-after-free in pthread_mutex_unlock).
The existing OBSIsShuttingDown() guard does not catch this path: the
forced-exit that follows a "Source Cleanup Error" (scene collection
switch) never fires the SCRIPTING_SHUTDOWN frontend event, so the
plugin's obsIsShuttingDown flag is not set. obs_get_module() returns NULL
once the module is unloaded, which is the reliable signal that
obs-websocket's proc handler is gone.
Refs: #1404
An automation plugin for OBS Studio.
More information can be found in the OBS forums or the plugin's wiki.
Downloads
Binaries for Windows, MacOS, and Linux are available in the Releases section.
Installing the plugin
For the Windows and MacOS platforms, it is recommended to run the provided installers.
On Linux the plugin is available via the Flatpak package manager for users who installed OBS via Flatpak:
flatpak install com.obsproject.Studio.Plugin.SceneSwitcher
More information can be found here.
Contributing
- If you wish to contribute code to the project, have a look at this section describing how to compile the plugin.
- You can add custom conditions and actions at runtime using the API described here.
- You can optionally use pre-commit to automatically handle formatting.
- If you wish to contribute translations, feel free to submit pull requests for the corresponding files under
data/locale.
Description
Languages
C++
95.1%
CMake
3.6%
Python
0.5%
Lua
0.4%
Objective-C++
0.3%