mirror of
https://github.com/obsproject/obs-studio.git
synced 2026-03-10 02:26:15 -04:00
UI: Cleanup libobs C++ type use
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user