From 5d720219bf5ae9eda13cb421b1719d0c91e9f432 Mon Sep 17 00:00:00 2001 From: WarmUpTill Date: Mon, 26 Apr 2021 21:10:03 +0200 Subject: [PATCH] Clean up transition tab save and load --- src/headers/switch-transitions.hpp | 4 ++ src/switch-transitions.cpp | 66 ++++++++++++++---------------- 2 files changed, 35 insertions(+), 35 deletions(-) diff --git a/src/headers/switch-transitions.hpp b/src/headers/switch-transitions.hpp index fd1e4053..31419a77 100644 --- a/src/headers/switch-transitions.hpp +++ b/src/headers/switch-transitions.hpp @@ -10,6 +10,8 @@ struct SceneTransition : SceneSwitcherEntry { const char *getType() { return "transition"; } bool initialized(); bool valid(); + void save(obs_data_t *obj); + void load(obs_data_t *obj); inline SceneTransition(){}; inline SceneTransition(OBSWeakSource scene_, OBSWeakSource scene2_, @@ -26,6 +28,8 @@ struct DefaultSceneTransition : SceneSwitcherEntry { static unsigned int delay; const char *getType() { return "def_transition"; } + void save(obs_data_t *obj); + void load(obs_data_t *obj); bool checkMatch(OBSWeakSource currentScene); void setTransition(); diff --git a/src/switch-transitions.cpp b/src/switch-transitions.cpp index 126e06f1..04f997e7 100644 --- a/src/switch-transitions.cpp +++ b/src/switch-transitions.cpp @@ -310,26 +310,9 @@ void SwitcherData::saveSceneTransitions(obs_data_t *obj) for (SceneTransition &s : sceneTransitions) { obs_data_t *array_obj = obs_data_create(); - obs_source_t *source1 = obs_weak_source_get_source(s.scene); - obs_source_t *source2 = obs_weak_source_get_source(s.scene2); - obs_source_t *transition = - obs_weak_source_get_source(s.transition); - if (source1 && source2 && transition) { - const char *sceneName1 = obs_source_get_name(source1); - const char *sceneName2 = obs_source_get_name(source2); - const char *transitionName = - obs_source_get_name(transition); - obs_data_set_string(array_obj, "Scene1", sceneName1); - obs_data_set_string(array_obj, "Scene2", sceneName2); - obs_data_set_string(array_obj, "transition", - transitionName); - obs_data_set_double(array_obj, "duration", s.duration); - obs_data_array_push_back(sceneTransitionsArray, - array_obj); - } - obs_source_release(source1); - obs_source_release(source2); - obs_source_release(transition); + s.save(array_obj); + obs_data_array_push_back(sceneTransitionsArray, array_obj); + obs_data_release(array_obj); } obs_data_set_array(obj, "sceneTransitions", sceneTransitionsArray); @@ -339,21 +322,9 @@ void SwitcherData::saveSceneTransitions(obs_data_t *obj) for (DefaultSceneTransition &s : defaultSceneTransitions) { obs_data_t *array_obj = obs_data_create(); - obs_source_t *source = obs_weak_source_get_source(s.scene); - obs_source_t *transition = - obs_weak_source_get_source(s.transition); - if (source && transition) { - const char *sceneName = obs_source_get_name(source); - const char *transitionName = - obs_source_get_name(transition); - obs_data_set_string(array_obj, "Scene", sceneName); - obs_data_set_string(array_obj, "transition", - transitionName); - obs_data_array_push_back(defaultTransitionsArray, - array_obj); - } - obs_source_release(source); - obs_source_release(transition); + s.save(array_obj); + obs_data_array_push_back(defaultTransitionsArray, array_obj); + obs_data_release(array_obj); } obs_data_set_array(obj, "defaultTransitions", defaultTransitionsArray); @@ -495,6 +466,21 @@ bool SceneTransition::valid() (SceneSwitcherEntry::valid() && WeakSourceValid(scene2)); } +void SceneTransition::save(obs_data_t *obj) +{ + SceneSwitcherEntry::save(obj, "targetType", "Scene1"); + obs_data_set_string(obj, "Scene2", GetWeakSourceName(scene2).c_str()); + obs_data_set_double(obj, "duration", duration); +} + +void SceneTransition::load(obs_data_t *obj) +{ + SceneSwitcherEntry::load(obj, "targetType", "Scene1"); + const char *sourceName = obs_data_get_string(obj, "Scene2"); + scene2 = GetWeakSourceByName(sourceName); + duration = obs_data_get_double(obj, "duration"); +} + TransitionSwitchWidget::TransitionSwitchWidget(QWidget *parent, SceneTransition *s) : SwitchWidget(parent, s, false, false, false) @@ -611,6 +597,16 @@ void DefTransitionSwitchWidget::swapSwitchData(DefTransitionSwitchWidget *s1, s2->setSwitchData(t); } +void DefaultSceneTransition::save(obs_data_t *obj) +{ + SceneSwitcherEntry::save(obj, "targetType", "Scene"); +} + +void DefaultSceneTransition::load(obs_data_t *obj) +{ + SceneSwitcherEntry::load(obj, "targetType", "Scene"); +} + bool DefaultSceneTransition::checkMatch(OBSWeakSource currentScene) { return scene == currentScene;