UI: Cleanup libobs C++ type use

This commit is contained in:
VodBox
2021-11-26 22:25:39 +13:00
parent a8c30373d6
commit 3d544653e8
31 changed files with 538 additions and 992 deletions

View File

@@ -78,9 +78,8 @@ OBSBasicProperties::OBSBasicProperties(QWidget *parent, OBSSource source_)
/* The OBSData constructor increments the reference once */
obs_data_release(oldSettings);
OBSData nd_settings = obs_source_get_settings(source);
OBSDataAutoRelease nd_settings = obs_source_get_settings(source);
obs_data_apply(oldSettings, nd_settings);
obs_data_release(nd_settings);
auto handle_memory = [](void *vp, obs_data_t *old_settings,
obs_data_t *new_settings) {
@@ -93,7 +92,7 @@ OBSBasicProperties::OBSBasicProperties(QWidget *parent, OBSSource source_)
};
view = new OBSPropertiesView(
nd_settings, source,
nd_settings.Get(), source,
(PropertiesReloadCallback)obs_source_properties,
(PropertiesUpdateCallback)handle_memory,
(PropertiesVisualUpdateCb)obs_source_update);
@@ -163,14 +162,11 @@ OBSBasicProperties::OBSBasicProperties(QWidget *parent, OBSSource source_)
sourceB =
obs_source_create_private("scene", "sourceB", nullptr);
obs_source_release(sourceA);
obs_source_release(sourceB);
uint32_t colorA = 0xFFB26F52;
uint32_t colorB = 0xFF6FB252;
CreateTransitionScene(sourceA, "A", colorA);
CreateTransitionScene(sourceB, "B", colorB);
CreateTransitionScene(sourceA.Get(), "A", colorA);
CreateTransitionScene(sourceB.Get(), "B", colorB);
/**
* The cloned source is made from scratch, rather than using
@@ -178,27 +174,23 @@ OBSBasicProperties::OBSBasicProperties(QWidget *parent, OBSSource source_)
* play correctly otherwise.
*/
obs_data_t *settings = obs_source_get_settings(source);
OBSDataAutoRelease settings = obs_source_get_settings(source);
sourceClone = obs_source_create_private(
obs_source_get_id(source), "clone", settings);
obs_source_release(sourceClone);
obs_source_inc_active(sourceClone);
obs_transition_set(sourceClone, sourceA);
obs_data_release(settings);
auto updateCallback = [=]() {
obs_data_t *settings = obs_source_get_settings(source);
OBSDataAutoRelease settings =
obs_source_get_settings(source);
obs_source_update(sourceClone, settings);
obs_transition_clear(sourceClone);
obs_transition_set(sourceClone, sourceA);
obs_transition_force_stop(sourceClone);
obs_data_release(settings);
direction = true;
};
@@ -258,8 +250,8 @@ void OBSBasicProperties::AddPreviewButton()
static obs_source_t *CreateLabel(const char *name, size_t h)
{
obs_data_t *settings = obs_data_create();
obs_data_t *font = obs_data_create();
OBSDataAutoRelease settings = obs_data_create();
OBSDataAutoRelease font = obs_data_create();
std::string text;
text += " ";
@@ -289,26 +281,24 @@ static obs_source_t *CreateLabel(const char *name, size_t h)
obs_source_t *txtSource =
obs_source_create_private(text_source_id, name, settings);
obs_data_release(font);
obs_data_release(settings);
return txtSource;
}
static void CreateTransitionScene(OBSSource scene, const char *text,
uint32_t color)
{
obs_data_t *settings = obs_data_create();
OBSDataAutoRelease settings = obs_data_create();
obs_data_set_int(settings, "width", obs_source_get_width(scene));
obs_data_set_int(settings, "height", obs_source_get_height(scene));
obs_data_set_int(settings, "color", color);
obs_source_t *colorBG = obs_source_create_private(
OBSSourceAutoRelease colorBG = obs_source_create_private(
"color_source", "background", settings);
obs_scene_add(obs_scene_from_source(scene), colorBG);
obs_source_t *label = CreateLabel(text, obs_source_get_height(scene));
OBSSourceAutoRelease label =
CreateLabel(text, obs_source_get_height(scene));
obs_sceneitem_t *item =
obs_scene_add(obs_scene_from_source(scene), label);
@@ -322,10 +312,6 @@ static void CreateTransitionScene(OBSSource scene, const char *text,
obs_sceneitem_set_bounds(item, &size);
obs_sceneitem_set_bounds_type(item, OBS_BOUNDS_SCALE_INNER);
obs_data_release(settings);
obs_source_release(colorBG);
obs_source_release(label);
}
void OBSBasicProperties::SourceRemoved(void *data, calldata_t *params)
@@ -361,27 +347,24 @@ void OBSBasicProperties::on_buttonBox_clicked(QAbstractButton *button)
obs_source_get_name(main->GetCurrentSceneSource());
auto undo_redo = [scene_name](const std::string &data) {
obs_data_t *settings =
OBSDataAutoRelease settings =
obs_data_create_from_json(data.c_str());
obs_source_t *source = obs_get_source_by_name(
OBSSourceAutoRelease source = obs_get_source_by_name(
obs_data_get_string(settings, "undo_sname"));
obs_source_reset_settings(source, settings);
obs_source_update_properties(source);
obs_source_t *scene_source =
OBSSourceAutoRelease scene_source =
obs_get_source_by_name(scene_name.c_str());
OBSBasic::Get()->SetCurrentScene(scene_source, true);
obs_source_release(scene_source);
obs_data_release(settings);
obs_source_release(source);
OBSBasic::Get()->SetCurrentScene(scene_source.Get(),
true);
};
obs_data_t *new_settings = obs_data_create();
obs_data_t *curr_settings = obs_source_get_settings(source);
OBSDataAutoRelease new_settings = obs_data_create();
OBSDataAutoRelease curr_settings =
obs_source_get_settings(source);
obs_data_apply(new_settings, curr_settings);
obs_data_set_string(new_settings, "undo_sname",
obs_source_get_name(source));
@@ -397,9 +380,6 @@ void OBSBasicProperties::on_buttonBox_clicked(QAbstractButton *button)
.arg(obs_source_get_name(source)),
undo_redo, undo_redo, undo_data, redo_data);
obs_data_release(new_settings);
obs_data_release(curr_settings);
acceptClicked = true;
close();
@@ -407,9 +387,8 @@ void OBSBasicProperties::on_buttonBox_clicked(QAbstractButton *button)
view->UpdateSettings();
} else if (val == QDialogButtonBox::RejectRole) {
obs_data_t *settings = obs_source_get_settings(source);
OBSDataAutoRelease settings = obs_source_get_settings(source);
obs_data_clear(settings);
obs_data_release(settings);
if (view->DeferUpdate())
obs_data_apply(settings, oldSettings);
@@ -419,9 +398,8 @@ void OBSBasicProperties::on_buttonBox_clicked(QAbstractButton *button)
close();
} else if (val == QDialogButtonBox::ResetRole) {
obs_data_t *settings = obs_source_get_settings(source);
OBSDataAutoRelease settings = obs_source_get_settings(source);
obs_data_clear(settings);
obs_data_release(settings);
if (!view->DeferUpdate())
obs_source_update(source, nullptr);
@@ -542,14 +520,11 @@ void OBSBasicProperties::Init()
int OBSBasicProperties::CheckSettings()
{
OBSData currentSettings = obs_source_get_settings(source);
OBSDataAutoRelease currentSettings = obs_source_get_settings(source);
const char *oldSettingsJson = obs_data_get_json(oldSettings);
const char *currentSettingsJson = obs_data_get_json(currentSettings);
int ret = strcmp(currentSettingsJson, oldSettingsJson);
obs_data_release(currentSettings);
return ret;
return strcmp(currentSettingsJson, oldSettingsJson);
}
bool OBSBasicProperties::ConfirmQuit()