UI: Only defer property updates for input and transition sources

Deferring properties was only ever made for input and transition
sources. As other property dialogs do not have an "Ok" button that would
cause an update to happen, if the deferred flag was set the callback
would never be called.
Also clarifies the docs to reflect this.
This commit is contained in:
gxalpha 2023-04-28 13:33:18 +02:00 • committed by Ryan Foster
commit 2fbd54958d
2 changed files with 21 additions and 5 deletions

View file

@ -88,19 +88,33 @@ Q_DECLARE_METATYPE(media_frames_per_second);
void OBSPropertiesView::ReloadProperties()
{
deferUpdate = false;
if (weakObj || rawObj) {
OBSObject strongObj = GetObject();
void *obj = strongObj ? strongObj.Get() : rawObj;
if (obj)
if (obj) {
properties.reset(reloadCallback(obj));
if (obs_obj_get_type(obj) == OBS_OBJ_TYPE_SOURCE) {
enum obs_source_type type = obs_source_get_type(
(obs_source_t *)obj);
if (type == OBS_SOURCE_TYPE_INPUT ||
type == OBS_SOURCE_TYPE_TRANSITION) {
uint32_t flags =
obs_properties_get_flags(
properties.get());
deferUpdate =
(flags &
OBS_PROPERTIES_DEFER_UPDATE) !=
0;
}
}
}
} else {
properties.reset(reloadCallback((void *)type.c_str()));
obs_properties_apply_settings(properties.get(), settings);
}
uint32_t flags = obs_properties_get_flags(properties.get());
deferUpdate = (flags & OBS_PROPERTIES_DEFER_UPDATE) != 0;
RefreshProperties();
}

View file

@ -51,7 +51,9 @@ General Functions
- OBS_PROPERTIES_DEFER_UPDATE - A hint that tells the
front-end to defers updating the settings until the
user has finished editing all properties rather than
immediately updating any settings
immediately updating any settings. Currently only
works for properties of input and transition sources,
this flag is a no-op for other properties at this time.
---------------------