From c3409b5bb5b186fe37e1f001cd7e83ba91bfb948 Mon Sep 17 00:00:00 2001 From: VodBox Date: Fri, 26 Nov 2021 22:26:35 +1300 Subject: [PATCH] frontend-tools: Cleanup libobs C++ type use --- .../frontend-tools/auto-scene-switcher.cpp | 48 +++++++------------ .../frontend-tools/captions.cpp | 10 ++-- .../frontend-tools/output-timer.cpp | 9 ++-- .../frontend-tools/scripts.cpp | 37 +++++--------- 4 files changed, 36 insertions(+), 68 deletions(-) diff --git a/UI/frontend-plugins/frontend-tools/auto-scene-switcher.cpp b/UI/frontend-plugins/frontend-tools/auto-scene-switcher.cpp index fd94be712..d8f3985c9 100644 --- a/UI/frontend-plugins/frontend-tools/auto-scene-switcher.cpp +++ b/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 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); } } diff --git a/UI/frontend-plugins/frontend-tools/captions.cpp b/UI/frontend-plugins/frontend-tools/captions.cpp index 4928e6447..30bf345dc 100644 --- a/UI/frontend-plugins/frontend-tools/captions.cpp +++ b/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(); diff --git a/UI/frontend-plugins/frontend-tools/output-timer.cpp b/UI/frontend-plugins/frontend-tools/output-timer.cpp index be2cba8b1..c0fba7ac0 100644 --- a/UI/frontend-plugins/frontend-tools/output-timer.cpp +++ b/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); } } diff --git a/UI/frontend-plugins/frontend-tools/scripts.cpp b/UI/frontend-plugins/frontend-tools/scripts.cpp index b26c2b669..e47ad444d 100644 --- a/UI/frontend-plugins/frontend-tools/scripts.cpp +++ b/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,