libobs: Add obs_property_set_modified_callback2

Allows the ability to pass private data to a callback (useful
specifically for scripting purposes).
This commit is contained in:
jp9000 2018-01-03 15:32:11 -08:00
parent 6d628c1ceb
commit fd9e5d45a3
2 changed files with 23 additions and 2 deletions

View File

@ -154,6 +154,7 @@ struct obs_property {
struct obs_properties *parent;
obs_property_modified_t modified;
obs_property_modified2_t modified2;
struct obs_property *next;
};
@ -281,6 +282,8 @@ void obs_properties_apply_settings(obs_properties_t *props, obs_data_t *settings
while (p) {
if (p->modified)
p->modified(props, p, settings);
else if (p->modified2)
p->modified2(p->priv, props, p, settings);
p = p->next;
}
}
@ -589,10 +592,24 @@ void obs_property_set_modified_callback(obs_property_t *p,
if (p) p->modified = modified;
}
void obs_property_set_modified_callback2(obs_property_t *p,
obs_property_modified2_t modified2, void *priv)
{
if (p) {
p->modified2 = modified2;
p->priv = priv;
}
}
bool obs_property_modified(obs_property_t *p, obs_data_t *settings)
{
if (p && p->modified)
return p->modified(p->parent, p, settings);
if (p) {
if (p->modified) {
return p->modified(p->parent, p, settings);
} else if (p->modified2) {
return p->modified2(p->priv, p->parent, p, settings);
}
}
return false;
}

View File

@ -227,9 +227,13 @@ EXPORT obs_property_t *obs_properties_add_frame_rate(obs_properties_t *props,
*/
typedef bool (*obs_property_modified_t)(obs_properties_t *props,
obs_property_t *property, obs_data_t *settings);
typedef bool (*obs_property_modified2_t)(void *priv, obs_properties_t *props,
obs_property_t *property, obs_data_t *settings);
EXPORT void obs_property_set_modified_callback(obs_property_t *p,
obs_property_modified_t modified);
EXPORT void obs_property_set_modified_callback2(obs_property_t *p,
obs_property_modified2_t modified, void *priv);
EXPORT bool obs_property_modified(obs_property_t *p, obs_data_t *settings);
EXPORT bool obs_property_button_clicked(obs_property_t *p, void *obj);