From 2defa06ba4798ecafff376ba556daddb3f7f2f96 Mon Sep 17 00:00:00 2001 From: WarmUpTill Date: Tue, 2 Jan 2024 12:53:56 +0100 Subject: [PATCH] Fix media condition "any" / "all" selection ignoring some source types --- src/macro-core/macro-condition-media.cpp | 5 +---- src/utils/utility.cpp | 10 +++++++--- src/utils/utility.hpp | 2 ++ 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/macro-core/macro-condition-media.cpp b/src/macro-core/macro-condition-media.cpp index 3a676d18..eb38ba36 100644 --- a/src/macro-core/macro-condition-media.cpp +++ b/src/macro-core/macro-condition-media.cpp @@ -219,10 +219,7 @@ static bool enumSceneItem(obs_scene_t *, obs_sceneitem_t *item, void *ptr) } auto source = obs_sceneitem_get_source(item); - std::string sourceId = obs_source_get_id(source); - - if (sourceId.compare("ffmpeg_source") == 0 || - sourceId.compare("vlc_source") == 0) { + if (IsMediaSource(source)) { OBSWeakSourceAutoRelease weak = obs_source_get_weak_source(source); sources->emplace_back(weak); diff --git a/src/utils/utility.cpp b/src/utils/utility.cpp index ae8cff58..ac664248 100644 --- a/src/utils/utility.cpp +++ b/src/utils/utility.cpp @@ -907,14 +907,18 @@ void populateVideoSelection(QComboBox *sel, bool addMainOutput, bool addScenes, sel->setCurrentIndex(0); } +bool IsMediaSource(obs_source_t *source) +{ + uint32_t flags = obs_source_get_output_flags(source); + return (flags & OBS_SOURCE_CONTROLLABLE_MEDIA) != 0; +} + QStringList GetMediaSourceNames() { auto sourceEnum = [](void *param, obs_source_t *source) -> bool /* -- */ { QStringList *list = reinterpret_cast(param); - uint32_t flags = obs_source_get_output_flags(source); - - if ((flags & OBS_SOURCE_CONTROLLABLE_MEDIA) != 0) { + if (IsMediaSource(source)) { *list << obs_source_get_name(source); } return true; diff --git a/src/utils/utility.hpp b/src/utils/utility.hpp index e3a2fe61..b693b2c2 100644 --- a/src/utils/utility.hpp +++ b/src/utils/utility.hpp @@ -47,6 +47,8 @@ std::string GetSceneItemTransform(obs_scene_item *item); /* Selection helpers */ +bool IsMediaSource(obs_source_t *source); + QStringList GetAudioSourceNames(); QStringList GetSourcesWithFilterNames(); QStringList GetMediaSourceNames();