Merge pull request #1961 from Xaymar/patch-fix_property_groups

libobs: Fix modified callback and remove by name for groups
This commit is contained in:
Jim 2019-08-16 13:16:34 -07:00 committed by GitHub
commit d0c72334b2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -336,27 +336,44 @@ void obs_properties_remove_by_name(obs_properties_t *props, const char *name)
break;
}
if (cur->type == OBS_PROPERTY_GROUP) {
obs_properties_remove_by_name(
obs_property_group_content(cur), name);
}
prev = cur;
cur = cur->next;
}
}
void obs_properties_apply_settings_internal(obs_properties_t *props,
obs_data_t *settings,
obs_properties_t *realprops)
{
struct obs_property *p;
p = props->first_property;
while (p) {
if (p->type == OBS_PROPERTY_GROUP) {
obs_properties_apply_settings_internal(
obs_property_group_content(p), settings,
realprops);
}
if (p->modified)
p->modified(realprops, p, settings);
else if (p->modified2)
p->modified2(p->priv, realprops, p, settings);
p = p->next;
}
}
void obs_properties_apply_settings(obs_properties_t *props,
obs_data_t *settings)
{
struct obs_property *p;
if (!props)
return;
p = props->first_property;
while (p) {
if (p->modified)
p->modified(props, p, settings);
else if (p->modified2)
p->modified2(p->priv, props, p, settings);
p = p->next;
}
obs_properties_apply_settings_internal(props, settings, props);
}
/* ------------------------------------------------------------------------- */