From 32e201ebb997513f367bc6b9ab7ce49a5f514f76 Mon Sep 17 00:00:00 2001 From: derrod Date: Mon, 4 Dec 2023 22:50:01 +0100 Subject: [PATCH] UI: Save invalid transition source data in safe mode --- UI/window-basic-main-transitions.cpp | 7 +++++++ UI/window-basic-main.hpp | 1 + 2 files changed, 8 insertions(+) diff --git a/UI/window-basic-main-transitions.cpp b/UI/window-basic-main-transitions.cpp index bc799068a..e4e4c72fa 100644 --- a/UI/window-basic-main-transitions.cpp +++ b/UI/window-basic-main-transitions.cpp @@ -1779,6 +1779,10 @@ obs_data_array_t *OBSBasic::SaveTransitions() obs_data_array_push_back(transitions, sourceData); } + for (const OBSDataAutoRelease &transition : safeModeTransitions) { + obs_data_array_push_back(transitions, transition); + } + return transitions; } @@ -1787,6 +1791,7 @@ void OBSBasic::LoadTransitions(obs_data_array_t *transitions, { size_t count = obs_data_array_count(transitions); + safeModeTransitions.clear(); for (size_t i = 0; i < count; i++) { OBSDataAutoRelease item = obs_data_array_item(transitions, i); const char *name = obs_data_get_string(item, "name"); @@ -1806,6 +1811,8 @@ void OBSBasic::LoadTransitions(obs_data_array_t *transitions, ui->transitions->count() - 1); if (cb) cb(private_data, source); + } else if (safe_mode || disable_3p_plugins) { + safeModeTransitions.push_back(std::move(item)); } } } diff --git a/UI/window-basic-main.hpp b/UI/window-basic-main.hpp index 632316d65..473b5fb9e 100644 --- a/UI/window-basic-main.hpp +++ b/UI/window-basic-main.hpp @@ -235,6 +235,7 @@ private: QStringList oldExtraDockNames; OBSDataAutoRelease safeModeModuleData; + std::vector safeModeTransitions; bool loaded = false; long disableSaving = 1;