Fix media condition "any" / "all" selection ignoring some source types

This commit is contained in:
WarmUpTill 2024-01-02 12:53:56 +01:00 committed by WarmUpTill
parent a113327476
commit 2defa06ba4
3 changed files with 10 additions and 7 deletions

View File

@ -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);

View File

@ -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<QStringList *>(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;

View File

@ -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();