From 8d349ea4aa4cd7c051756f9dcacc12e62323ce58 Mon Sep 17 00:00:00 2001 From: Clayton Groeneveld Date: Thu, 28 Oct 2021 00:54:34 -0500 Subject: [PATCH] obs-frontend-api: Add scripting shutdown event This event is for when scripts need to know when OBS is exiting. Currently scripts are destroyed before the current exit event. --- UI/obs-frontend-api/obs-frontend-api.h | 1 + UI/window-basic-main.cpp | 3 +++ docs/sphinx/reference-frontend-api.rst | 4 ++++ 3 files changed, 8 insertions(+) diff --git a/UI/obs-frontend-api/obs-frontend-api.h b/UI/obs-frontend-api/obs-frontend-api.h index 298761481..3000d4676 100644 --- a/UI/obs-frontend-api/obs-frontend-api.h +++ b/UI/obs-frontend-api/obs-frontend-api.h @@ -57,6 +57,7 @@ enum obs_frontend_event { OBS_FRONTEND_EVENT_TBAR_VALUE_CHANGED, OBS_FRONTEND_EVENT_SCENE_COLLECTION_CHANGING, OBS_FRONTEND_EVENT_PROFILE_CHANGING, + OBS_FRONTEND_EVENT_SCRIPTING_SHUTDOWN, }; /* ------------------------------------------------------------------------- */ diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp index c9e0cea98..421706bbe 100644 --- a/UI/window-basic-main.cpp +++ b/UI/window-basic-main.cpp @@ -4590,6 +4590,9 @@ void OBSBasic::closeEvent(QCloseEvent *event) ClearExtraBrowserDocks(); #endif + if (api) + api->on_event(OBS_FRONTEND_EVENT_SCRIPTING_SHUTDOWN); + disableSaving++; /* Clear all scene data (dialogs, widgets, widget sub-items, scenes, diff --git a/docs/sphinx/reference-frontend-api.rst b/docs/sphinx/reference-frontend-api.rst index c6313dcd8..af71acfaa 100644 --- a/docs/sphinx/reference-frontend-api.rst +++ b/docs/sphinx/reference-frontend-api.rst @@ -93,6 +93,10 @@ Structures/Enumerations Triggered when a profile has been added/removed/renamed. + - **OBS_FRONTEND_EVENT_SCRIPTING_SHUTDOWN** + + Triggered when scripts are unloaded when exiting OBS. + - **OBS_FRONTEND_EVENT_EXIT** Triggered when the program is about to exit.