From b1179f4e50209015268dfd03e70e7461f1603def Mon Sep 17 00:00:00 2001 From: WarmUpTill Date: Thu, 22 Oct 2020 21:00:41 +0200 Subject: [PATCH] fix mem leaks which could occur with new UI --- src/switch-audio.cpp | 3 ++- src/switch-executable.cpp | 5 ++--- src/switch-file.cpp | 5 ++--- src/switch-pause.cpp | 3 +-- src/switch-random.cpp | 5 ++--- src/switch-screen-region.cpp | 5 ++--- src/switch-sequence.cpp | 6 +++--- src/switch-transitions.cpp | 12 +++++------- src/switch-window.cpp | 4 ++-- 9 files changed, 21 insertions(+), 27 deletions(-) diff --git a/src/switch-audio.cpp b/src/switch-audio.cpp index 537f5a85..28c2362d 100644 --- a/src/switch-audio.cpp +++ b/src/switch-audio.cpp @@ -118,7 +118,8 @@ void SwitcherData::saveAudioSwitches(obs_data_t *obj) obs_weak_source_get_source(s.transition); obs_source_t *audioSrouce = obs_weak_source_get_source(s.audioSource); - if ((s.usePreviousScene || sceneSource) && transition) { + if ((s.usePreviousScene || sceneSource) && transition && + audioSrouce) { const char *sceneName = obs_source_get_name(sceneSource); const char *transitionName = diff --git a/src/switch-executable.cpp b/src/switch-executable.cpp index 5aa15be8..df414929 100644 --- a/src/switch-executable.cpp +++ b/src/switch-executable.cpp @@ -152,10 +152,9 @@ void SwitcherData::saveExecutableSwitches(obs_data_t *obj) s.exe.toUtf8()); obs_data_set_bool(array_obj, "infocus", s.inFocus); obs_data_array_push_back(executableArray, array_obj); - obs_source_release(source); - obs_source_release(transition); } - + obs_source_release(source); + obs_source_release(transition); obs_data_release(array_obj); } obs_data_set_array(obj, "executableSwitches", executableArray); diff --git a/src/switch-file.cpp b/src/switch-file.cpp index 71375639..5d5b832e 100644 --- a/src/switch-file.cpp +++ b/src/switch-file.cpp @@ -381,10 +381,9 @@ void SwitcherData::saveFileSwitches(obs_data_t *obj) obs_data_set_bool(array_obj, "useRegex", s.useRegex); obs_data_set_bool(array_obj, "useTime", s.useTime); obs_data_array_push_back(fileArray, array_obj); - obs_source_release(source); - obs_source_release(transition); } - + obs_source_release(source); + obs_source_release(transition); obs_data_release(array_obj); } obs_data_set_array(obj, "fileSwitches", fileArray); diff --git a/src/switch-pause.cpp b/src/switch-pause.cpp index 9d37aaa4..7aebcbcf 100644 --- a/src/switch-pause.cpp +++ b/src/switch-pause.cpp @@ -240,9 +240,8 @@ void SwitcherData::savePauseSwitches(obs_data_t *obj) const char *n = obs_source_get_name(source); obs_data_set_string(array_obj, "pauseScene", n); obs_data_array_push_back(pauseScenesArray, array_obj); - obs_source_release(source); } - + obs_source_release(source); obs_data_release(array_obj); } obs_data_set_array(obj, "pauseScenes", pauseScenesArray); diff --git a/src/switch-random.cpp b/src/switch-random.cpp index 5d9714b4..ef81556c 100644 --- a/src/switch-random.cpp +++ b/src/switch-random.cpp @@ -84,10 +84,9 @@ void SwitcherData::saveRandomSwitches(obs_data_t *obj) transitionName); obs_data_set_double(array_obj, "delay", s.delay); obs_data_array_push_back(randomArray, array_obj); - obs_source_release(source); - obs_source_release(transition); } - + obs_source_release(source); + obs_source_release(transition); obs_data_release(array_obj); } obs_data_set_array(obj, "randomSwitches", randomArray); diff --git a/src/switch-screen-region.cpp b/src/switch-screen-region.cpp index 06532bb2..73ae97bf 100644 --- a/src/switch-screen-region.cpp +++ b/src/switch-screen-region.cpp @@ -179,10 +179,9 @@ void SwitcherData::saveScreenRegionSwitches(obs_data_t *obj) obs_data_set_int(array_obj, "maxX", s.maxX); obs_data_set_int(array_obj, "maxY", s.maxY); obs_data_array_push_back(screenRegionArray, array_obj); - obs_source_release(source); - obs_source_release(transition); } - + obs_source_release(source); + obs_source_release(transition); obs_data_release(array_obj); } obs_data_set_array(obj, "screenRegion", screenRegionArray); diff --git a/src/switch-sequence.cpp b/src/switch-sequence.cpp index 5004ede8..b05e21a4 100644 --- a/src/switch-sequence.cpp +++ b/src/switch-sequence.cpp @@ -202,11 +202,11 @@ void SwitcherData::saveSceneSequenceSwitches(obs_data_t *obj) obs_data_set_int(array_obj, "delayMultiplier", s.delayMultiplier); obs_data_array_push_back(sceneSequenceArray, array_obj); - obs_source_release(source1); - obs_source_release(source2); - obs_source_release(transition); } + obs_source_release(source1); + obs_source_release(source2); + obs_source_release(transition); obs_data_release(array_obj); } obs_data_set_array(obj, "sceneRoundTrip", sceneSequenceArray); diff --git a/src/switch-transitions.cpp b/src/switch-transitions.cpp index 8d362f51..23634830 100644 --- a/src/switch-transitions.cpp +++ b/src/switch-transitions.cpp @@ -284,11 +284,10 @@ void SwitcherData::saveSceneTransitions(obs_data_t *obj) transitionName); obs_data_array_push_back(sceneTransitionsArray, array_obj); - obs_source_release(source1); - obs_source_release(source2); - obs_source_release(transition); } - + obs_source_release(source1); + obs_source_release(source2); + obs_source_release(transition); obs_data_release(array_obj); } obs_data_set_array(obj, "sceneTransitions", sceneTransitionsArray); @@ -310,10 +309,9 @@ void SwitcherData::saveSceneTransitions(obs_data_t *obj) transitionName); obs_data_array_push_back(defaultTransitionsArray, array_obj); - obs_source_release(source); - obs_source_release(transition); } - + obs_source_release(source); + obs_source_release(transition); obs_data_release(array_obj); } obs_data_set_array(obj, "defaultTransitions", defaultTransitionsArray); diff --git a/src/switch-window.cpp b/src/switch-window.cpp index 30225f66..40112adc 100644 --- a/src/switch-window.cpp +++ b/src/switch-window.cpp @@ -269,9 +269,9 @@ void SwitcherData::saveWindowTitleSwitches(obs_data_t *obj) obs_data_set_bool(array_obj, "maximized", s.maximized); obs_data_set_bool(array_obj, "focus", s.focus); obs_data_array_push_back(windowTitleArray, array_obj); - obs_source_release(source); - obs_source_release(transition); } + obs_source_release(source); + obs_source_release(transition); obs_data_release(array_obj); } obs_data_set_array(obj, "switches", windowTitleArray);