Clean up transition tab save and load

This commit is contained in:
WarmUpTill 2021-04-26 21:10:03 +02:00 committed by WarmUpTill
parent 484e1aa191
commit 5d720219bf
2 changed files with 35 additions and 35 deletions

View File

@ -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();

View File

@ -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;