frontend-tools: Cleanup libobs C++ type use

This commit is contained in:
VodBox 2021-11-26 22:26:35 +13:00
parent 3d544653e8
commit c3409b5bb5
4 changed files with 36 additions and 68 deletions

View File

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

View File

@ -226,10 +226,9 @@ void CaptionsDialog::on_provider_currentIndexChanged(int idx)
static void caption_text(const std::string &text) 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) { if (output) {
obs_output_output_caption_text1(output, text.c_str()); 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 *) static void save_caption_data(obs_data_t *save_data, bool saving, void *)
{ {
if (saving) { if (saving) {
obs_data_t *obj = obs_data_create(); OBSDataAutoRelease obj = obs_data_create();
obs_data_set_string(obj, "source", obs_data_set_string(obj, "source",
captions->source_name.c_str()); 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()); captions->handler_id.c_str());
obs_data_set_obj(save_data, "captions", obj); obs_data_set_obj(save_data, "captions", obj);
obs_data_release(obj);
} else { } else {
captions->stop(); captions->stop();
obs_data_t *obj = obs_data_get_obj(save_data, "captions"); OBSDataAutoRelease obj =
obs_data_get_obj(save_data, "captions");
if (!obj) if (!obj)
obj = obs_data_create(); 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->handler_id = obs_data_get_string(obj, "provider");
captions->source = captions->source =
GetWeakSourceByName(captions->source_name.c_str()); GetWeakSourceByName(captions->source_name.c_str());
obs_data_release(obj);
if (enabled) if (enabled)
captions->start(); captions->start();

View File

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

View File

@ -243,8 +243,7 @@ void ScriptsTool::ReloadScript(const char *path)
if (strcmp(script_path, path) == 0) { if (strcmp(script_path, path) == 0) {
obs_script_reload(script); obs_script_reload(script);
OBSData settings = obs_data_create(); OBSDataAutoRelease settings = obs_data_create();
obs_data_release(settings);
obs_properties_t *prop = obs_properties_t *prop =
obs_script_get_properties(script); obs_script_get_properties(script);
@ -275,9 +274,9 @@ void ScriptsTool::SetScriptDefaults(const char *path)
for (OBSScript &script : scriptData->scripts) { for (OBSScript &script : scriptData->scripts) {
const char *script_path = obs_script_get_path(script); const char *script_path = obs_script_get_path(script);
if (strcmp(script_path, path) == 0) { 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_clear(settings);
obs_data_release(settings);
obs_script_update(script, nullptr); obs_script_update(script, nullptr);
on_reloadScripts_clicked(); on_reloadScripts_clicked();
@ -353,8 +352,7 @@ void ScriptsTool::on_addScripts_clicked()
item->setData(Qt::UserRole, QString(file)); item->setData(Qt::UserRole, QString(file));
ui->scripts->addItem(item); ui->scripts->addItem(item);
OBSData settings = obs_data_create(); OBSDataAutoRelease settings = obs_data_create();
obs_data_release(settings);
obs_properties_t *prop = obs_properties_t *prop =
obs_script_get_properties(script); obs_script_get_properties(script);
@ -499,11 +497,10 @@ void ScriptsTool::on_scripts_currentRowChanged(int row)
return; return;
} }
OBSData settings = obs_script_get_settings(script); OBSDataAutoRelease settings = obs_script_get_settings(script);
obs_data_release(settings);
propertiesView = new OBSPropertiesView( propertiesView = new OBSPropertiesView(
settings, script, settings.Get(), script,
(PropertiesReloadCallback)obs_script_get_properties, nullptr, (PropertiesReloadCallback)obs_script_get_properties, nullptr,
(PropertiesVisualUpdateCb)obs_script_update); (PropertiesVisualUpdateCb)obs_script_update);
ui->propertiesLayout->addWidget(propertiesView); 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 *) 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; delete scriptData;
scriptData = new ScriptData; scriptData = new ScriptData;
size_t size = obs_data_array_count(array); size_t size = obs_data_array_count(array);
for (size_t i = 0; i < size; i++) { 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"); 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); obs_script_t *script = obs_script_create(path, settings);
if (script) { if (script) {
scriptData->scripts.emplace_back(script); scriptData->scripts.emplace_back(script);
} }
obs_data_release(settings);
obs_data_release(obj);
} }
if (scriptsWindow) if (scriptsWindow)
scriptsWindow->RefreshLists(); scriptsWindow->RefreshLists();
obs_data_array_release(array);
} }
static void save_script_data(obs_data_t *save_data, bool saving, void *) 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) if (!saving)
return; return;
obs_data_array_t *array = obs_data_array_create(); OBSDataArrayAutoRelease array = obs_data_array_create();
for (OBSScript &script : scriptData->scripts) { for (OBSScript &script : scriptData->scripts) {
const char *script_path = obs_script_get_path(script); 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_string(obj, "path", script_path);
obs_data_set_obj(obj, "settings", settings); obs_data_set_obj(obj, "settings", settings);
obs_data_array_push_back(array, obj); 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_set_array(save_data, "scripts-tool", array);
obs_data_array_release(array);
} }
static void script_log(void *, obs_script_t *script, int log_level, static void script_log(void *, obs_script_t *script, int log_level,