Browse Source

frontend-tools: Cleanup libobs C++ type use

VodBox 3 years ago
parent
commit
c3409b5bb5

+ 16 - 32
UI/frontend-plugins/frontend-tools/auto-scene-switcher.cpp

@@ -33,9 +33,7 @@ struct SceneSwitch {
 
 static inline bool WeakSourceValid(obs_weak_source_t *ws)
 {
-	obs_source_t *source = obs_weak_source_get_source(ws);
-	if (source)
-		obs_source_release(source);
+	OBSSourceAutoRelease source = obs_weak_source_get_source(ws);
 	return !!source;
 }
 
@@ -268,13 +266,11 @@ void SceneSwitcher::on_startAtLaunch_toggled(bool value)
 
 void SceneSwitcher::UpdateNonMatchingScene(const QString &name)
 {
-	obs_source_t *scene = obs_get_source_by_name(name.toUtf8().constData());
-	obs_weak_source_t *ws = obs_source_get_weak_source(scene);
+	OBSSourceAutoRelease scene =
+		obs_get_source_by_name(name.toUtf8().constData());
+	OBSWeakSourceAutoRelease ws = obs_source_get_weak_source(scene);
 
-	switcher->nonMatchingScene = ws;
-
-	obs_weak_source_release(ws);
-	obs_source_release(scene);
+	switcher->nonMatchingScene = ws.Get();
 }
 
 void SceneSwitcher::on_noMatchDontSwitch_clicked()
@@ -341,15 +337,15 @@ static void SaveSceneSwitcher(obs_data_t *save_data, bool saving, void *)
 {
 	if (saving) {
 		lock_guard<mutex> lock(switcher->m);
-		obs_data_t *obj = obs_data_create();
-		obs_data_array_t *array = obs_data_array_create();
+		OBSDataAutoRelease obj = obs_data_create();
+		OBSDataArrayAutoRelease array = obs_data_array_create();
 
 		switcher->Prune();
 
 		for (SceneSwitch &s : switcher->switches) {
-			obs_data_t *array_obj = obs_data_create();
+			OBSDataAutoRelease array_obj = obs_data_create();
 
-			obs_source_t *source =
+			OBSSourceAutoRelease source =
 				obs_weak_source_get_source(s.scene);
 			if (source) {
 				const char *n = obs_source_get_name(source);
@@ -357,10 +353,7 @@ static void SaveSceneSwitcher(obs_data_t *save_data, bool saving, void *)
 				obs_data_set_string(array_obj, "window_title",
 						    s.window.c_str());
 				obs_data_array_push_back(array, array_obj);
-				obs_source_release(source);
 			}
-
-			obs_data_release(array_obj);
 		}
 
 		string nonMatchingSceneName =
@@ -375,15 +368,13 @@ static void SaveSceneSwitcher(obs_data_t *save_data, bool saving, void *)
 		obs_data_set_array(obj, "switches", array);
 
 		obs_data_set_obj(save_data, "auto-scene-switcher", obj);
-
-		obs_data_array_release(array);
-		obs_data_release(obj);
 	} else {
 		switcher->m.lock();
 
-		obs_data_t *obj =
+		OBSDataAutoRelease obj =
 			obs_data_get_obj(save_data, "auto-scene-switcher");
-		obs_data_array_t *array = obs_data_get_array(obj, "switches");
+		OBSDataArrayAutoRelease array =
+			obs_data_get_array(obj, "switches");
 		size_t count = obs_data_array_count(array);
 
 		if (!obj)
@@ -404,7 +395,8 @@ static void SaveSceneSwitcher(obs_data_t *save_data, bool saving, void *)
 		switcher->switches.clear();
 
 		for (size_t i = 0; i < count; i++) {
-			obs_data_t *array_obj = obs_data_array_item(array, i);
+			OBSDataAutoRelease array_obj =
+				obs_data_array_item(array, i);
 
 			const char *scene =
 				obs_data_get_string(array_obj, "scene");
@@ -413,13 +405,8 @@ static void SaveSceneSwitcher(obs_data_t *save_data, bool saving, void *)
 
 			switcher->switches.emplace_back(
 				GetWeakSourceByName(scene), window);
-
-			obs_data_release(array_obj);
 		}
 
-		obs_data_array_release(array);
-		obs_data_release(obj);
-
 		switcher->m.unlock();
 
 		if (active)
@@ -484,16 +471,13 @@ void SwitcherData::Thread()
 			}
 
 			if (match) {
-				obs_source_t *source =
+				OBSSourceAutoRelease source =
 					obs_weak_source_get_source(scene);
-				obs_source_t *currentSource =
+				OBSSourceAutoRelease currentSource =
 					obs_frontend_get_current_scene();
 
 				if (source && source != currentSource)
 					obs_frontend_set_current_scene(source);
-
-				obs_source_release(currentSource);
-				obs_source_release(source);
 			}
 		}
 

+ 4 - 6
UI/frontend-plugins/frontend-tools/captions.cpp

@@ -226,10 +226,9 @@ void CaptionsDialog::on_provider_currentIndexChanged(int idx)
 
 static void caption_text(const std::string &text)
 {
-	obs_output *output = obs_frontend_get_streaming_output();
+	OBSOutputAutoRelease output = obs_frontend_get_streaming_output();
 	if (output) {
 		obs_output_output_caption_text1(output, text.c_str());
-		obs_output_release(output);
 	}
 }
 
@@ -396,7 +395,7 @@ static void obs_event(enum obs_frontend_event event, void *)
 static void save_caption_data(obs_data_t *save_data, bool saving, void *)
 {
 	if (saving) {
-		obs_data_t *obj = obs_data_create();
+		OBSDataAutoRelease obj = obs_data_create();
 
 		obs_data_set_string(obj, "source",
 				    captions->source_name.c_str());
@@ -406,11 +405,11 @@ static void save_caption_data(obs_data_t *save_data, bool saving, void *)
 				    captions->handler_id.c_str());
 
 		obs_data_set_obj(save_data, "captions", obj);
-		obs_data_release(obj);
 	} else {
 		captions->stop();
 
-		obs_data_t *obj = obs_data_get_obj(save_data, "captions");
+		OBSDataAutoRelease obj =
+			obs_data_get_obj(save_data, "captions");
 		if (!obj)
 			obj = obs_data_create();
 
@@ -424,7 +423,6 @@ static void save_caption_data(obs_data_t *save_data, bool saving, void *)
 		captions->handler_id = obs_data_get_string(obj, "provider");
 		captions->source =
 			GetWeakSourceByName(captions->source_name.c_str());
-		obs_data_release(obj);
 
 		if (enabled)
 			captions->start();

+ 3 - 6
UI/frontend-plugins/frontend-tools/output-timer.cpp

@@ -250,7 +250,7 @@ void OutputTimer::EventStopRecording()
 static void SaveOutputTimer(obs_data_t *save_data, bool saving, void *)
 {
 	if (saving) {
-		obs_data_t *obj = obs_data_create();
+		OBSDataAutoRelease obj = obs_data_create();
 
 		obs_data_set_int(obj, "streamTimerHours",
 				 ot->ui->streamingTimerHours->value());
@@ -275,10 +275,9 @@ static void SaveOutputTimer(obs_data_t *save_data, bool saving, void *)
 				  ot->ui->pauseRecordTimer->isChecked());
 
 		obs_data_set_obj(save_data, "output-timer", obj);
-
-		obs_data_release(obj);
 	} else {
-		obs_data_t *obj = obs_data_get_obj(save_data, "output-timer");
+		OBSDataAutoRelease obj =
+			obs_data_get_obj(save_data, "output-timer");
 
 		if (!obj)
 			obj = obs_data_create();
@@ -304,8 +303,6 @@ static void SaveOutputTimer(obs_data_t *save_data, bool saving, void *)
 
 		ot->ui->pauseRecordTimer->setChecked(
 			obs_data_get_bool(obj, "pauseRecordTimer"));
-
-		obs_data_release(obj);
 	}
 }
 

+ 13 - 24
UI/frontend-plugins/frontend-tools/scripts.cpp

@@ -243,8 +243,7 @@ void ScriptsTool::ReloadScript(const char *path)
 		if (strcmp(script_path, path) == 0) {
 			obs_script_reload(script);
 
-			OBSData settings = obs_data_create();
-			obs_data_release(settings);
+			OBSDataAutoRelease settings = obs_data_create();
 
 			obs_properties_t *prop =
 				obs_script_get_properties(script);
@@ -275,9 +274,9 @@ void ScriptsTool::SetScriptDefaults(const char *path)
 	for (OBSScript &script : scriptData->scripts) {
 		const char *script_path = obs_script_get_path(script);
 		if (strcmp(script_path, path) == 0) {
-			obs_data_t *settings = obs_script_get_settings(script);
+			OBSDataAutoRelease settings =
+				obs_script_get_settings(script);
 			obs_data_clear(settings);
-			obs_data_release(settings);
 
 			obs_script_update(script, nullptr);
 			on_reloadScripts_clicked();
@@ -353,8 +352,7 @@ void ScriptsTool::on_addScripts_clicked()
 			item->setData(Qt::UserRole, QString(file));
 			ui->scripts->addItem(item);
 
-			OBSData settings = obs_data_create();
-			obs_data_release(settings);
+			OBSDataAutoRelease settings = obs_data_create();
 
 			obs_properties_t *prop =
 				obs_script_get_properties(script);
@@ -499,11 +497,10 @@ void ScriptsTool::on_scripts_currentRowChanged(int row)
 		return;
 	}
 
-	OBSData settings = obs_script_get_settings(script);
-	obs_data_release(settings);
+	OBSDataAutoRelease settings = obs_script_get_settings(script);
 
 	propertiesView = new OBSPropertiesView(
-		settings, script,
+		settings.Get(), script,
 		(PropertiesReloadCallback)obs_script_get_properties, nullptr,
 		(PropertiesVisualUpdateCb)obs_script_update);
 	ui->propertiesLayout->addWidget(propertiesView);
@@ -585,30 +582,26 @@ static void obs_event(enum obs_frontend_event event, void *)
 
 static void load_script_data(obs_data_t *load_data, bool, void *)
 {
-	obs_data_array_t *array = obs_data_get_array(load_data, "scripts-tool");
+	OBSDataArrayAutoRelease array =
+		obs_data_get_array(load_data, "scripts-tool");
 
 	delete scriptData;
 	scriptData = new ScriptData;
 
 	size_t size = obs_data_array_count(array);
 	for (size_t i = 0; i < size; i++) {
-		obs_data_t *obj = obs_data_array_item(array, i);
+		OBSDataAutoRelease obj = obs_data_array_item(array, i);
 		const char *path = obs_data_get_string(obj, "path");
-		obs_data_t *settings = obs_data_get_obj(obj, "settings");
+		OBSDataAutoRelease settings = obs_data_get_obj(obj, "settings");
 
 		obs_script_t *script = obs_script_create(path, settings);
 		if (script) {
 			scriptData->scripts.emplace_back(script);
 		}
-
-		obs_data_release(settings);
-		obs_data_release(obj);
 	}
 
 	if (scriptsWindow)
 		scriptsWindow->RefreshLists();
-
-	obs_data_array_release(array);
 }
 
 static void save_script_data(obs_data_t *save_data, bool saving, void *)
@@ -616,23 +609,19 @@ static void save_script_data(obs_data_t *save_data, bool saving, void *)
 	if (!saving)
 		return;
 
-	obs_data_array_t *array = obs_data_array_create();
+	OBSDataArrayAutoRelease array = obs_data_array_create();
 
 	for (OBSScript &script : scriptData->scripts) {
 		const char *script_path = obs_script_get_path(script);
-		obs_data_t *settings = obs_script_save(script);
+		OBSDataAutoRelease settings = obs_script_save(script);
 
-		obs_data_t *obj = obs_data_create();
+		OBSDataAutoRelease obj = obs_data_create();
 		obs_data_set_string(obj, "path", script_path);
 		obs_data_set_obj(obj, "settings", settings);
 		obs_data_array_push_back(array, obj);
-		obs_data_release(obj);
-
-		obs_data_release(settings);
 	}
 
 	obs_data_set_array(save_data, "scripts-tool", array);
-	obs_data_array_release(array);
 }
 
 static void script_log(void *, obs_script_t *script, int log_level,