From ec93babed6e3927753be2a4849e460bad5af8df7 Mon Sep 17 00:00:00 2001 From: WarmUpTill Date: Wed, 27 Jul 2022 14:08:07 +0200 Subject: [PATCH] Fix duration modifier of media conditions not saving --- src/macro-condition.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/macro-condition.cpp b/src/macro-condition.cpp index 985be8d0..9f712561 100644 --- a/src/macro-condition.cpp +++ b/src/macro-condition.cpp @@ -73,7 +73,14 @@ bool MacroCondition::Save(obs_data_t *obj) MacroSegment::Save(obj); obs_data_set_string(obj, "id", GetId().c_str()); obs_data_set_int(obj, "logic", static_cast(_logic)); - _duration.Save(obj); + + // To avoid conflicts with conditions which also use the Duration class + // save the duration modifier in a separate obj + auto durObj = obs_data_create(); + _duration.Save(durObj); + obs_data_set_obj(obj, "durationModifier", durObj); + obs_data_release(durObj); + return true; } @@ -81,7 +88,14 @@ bool MacroCondition::Load(obs_data_t *obj) { MacroSegment::Load(obj); _logic = static_cast(obs_data_get_int(obj, "logic")); - _duration.Load(obj); + if (obs_data_has_user_value(obj, "durationModifier")) { + auto durObj = obs_data_get_obj(obj, "durationModifier"); + _duration.Load(durObj); + obs_data_release(durObj); + } else { + // For backwards compatability + _duration.Load(obj); + } return true; }