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-05-20 16:55:50 -07:00
committed by Lain
parent ccedbc0218
commit 58fb63030c
2 changed files with 21 additions and 5 deletions
+18 -4
View File
@@ -90,19 +90,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();
}
+3 -1
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.
---------------------