From cdacfc946c062982a5e865b9a4f849b5ce2fb05f Mon Sep 17 00:00:00 2001 From: WarmUpTill Date: Sat, 20 Apr 2024 12:30:40 +0200 Subject: [PATCH] Save macro segment settings in separate object To avoid conflicts with other setting of the segment --- lib/macro/macro-segment.cpp | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/lib/macro/macro-segment.cpp b/lib/macro/macro-segment.cpp index 551314d7..2f4e41b9 100644 --- a/lib/macro/macro-segment.cpp +++ b/lib/macro/macro-segment.cpp @@ -20,17 +20,30 @@ MacroSegment::MacroSegment(Macro *m, bool supportsVariableValue) bool MacroSegment::Save(obs_data_t *obj) const { - obs_data_set_bool(obj, "collapsed", _collapsed); - obs_data_set_bool(obj, "useCustomLabel", _useCustomLabel); - obs_data_set_string(obj, "customLabel", _customLabel.c_str()); + OBSDataAutoRelease data = obs_data_create(); + obs_data_set_bool(data, "collapsed", _collapsed); + obs_data_set_bool(data, "useCustomLabel", _useCustomLabel); + obs_data_set_string(data, "customLabel", _customLabel.c_str()); + obs_data_set_obj(obj, "segmentSettings", data); return true; } bool MacroSegment::Load(obs_data_t *obj) { - _collapsed = obs_data_get_bool(obj, "collapsed"); - _useCustomLabel = obs_data_get_bool(obj, "useCustomLabel"); - _customLabel = obs_data_get_string(obj, "customLabel"); + // TODO: remove this fallback at some point + if (obs_data_has_user_value(obj, "segmentSettings")) { + OBSDataAutoRelease data = + obs_data_get_obj(obj, "segmentSettings"); + _collapsed = obs_data_get_bool(data, "collapsed"); + _useCustomLabel = obs_data_get_bool(data, "useCustomLabel"); + _customLabel = obs_data_get_string(data, "customLabel"); + } else { + _collapsed = obs_data_get_bool(obj, "collapsed"); + _useCustomLabel = false; + _customLabel = obs_module_text( + "AdvSceneSwitcher.macroTab.segment.defaultCustomLabel"); + } + ClearAvailableTempvars(); return true; }