UI: Ignore sources selection self-update roundtrips

This commit is contained in:
Palana
2015-06-28 04:10:10 +02:00
parent 41689fe746
commit 66fd1b2e80
2 changed files with 15 additions and 2 deletions
+14 -2
View File
@@ -1206,7 +1206,7 @@ void OBSBasic::RenameSources(QString newName, QString prevName)
void OBSBasic::SelectSceneItem(OBSScene scene, OBSSceneItem item, bool select)
{
if (scene != GetCurrentScene())
if (scene != GetCurrentScene() || ignoreSelectionUpdate)
return;
for (int i = 0; i < ui->sources->count(); i++) {
@@ -2326,7 +2326,19 @@ void OBSBasic::on_sources_currentItemChanged(QListWidgetItem *current,
if ((obs_source_get_output_flags(source) & OBS_SOURCE_VIDEO) == 0)
return;
obs_scene_enum_items(GetCurrentScene(), select_one, &item);
auto IgnoreSelfUpdate = [&](obs_scene_t *scene)
{
ignoreSelectionUpdate = true;
obs_scene_enum_items(scene, select_one, &item);
ignoreSelectionUpdate = false;
};
using IgnoreSelfUpdate_t = decltype(IgnoreSelfUpdate);
obs_scene_atomic_update(GetCurrentScene(),
[](void *data, obs_scene_t *scene)
{
(*static_cast<IgnoreSelfUpdate_t*>(data))(scene);
}, static_cast<void*>(&IgnoreSelfUpdate));
UNUSED_PARAMETER(prev);
}