libobs: Add obs_enum_scenes for enumerating scenes

Closes obsproject/obs-studio#1507
This commit is contained in:
Michael Fabian 'Xaymar' Dirks 2018-09-30 23:55:40 +02:00 committed by jp9000
parent 35dc89f5ca
commit e55579e63d
2 changed files with 29 additions and 0 deletions

View file

@ -1360,6 +1360,31 @@ void obs_enum_sources(bool (*enum_proc)(void*, obs_source_t*), void *param)
pthread_mutex_unlock(&obs->data.sources_mutex);
}
void obs_enum_scenes(bool (*enum_proc)(void*, obs_source_t*), void *param)
{
obs_source_t *source;
if (!obs) return;
pthread_mutex_lock(&obs->data.sources_mutex);
source = obs->data.first_source;
while (source) {
obs_source_t *next_source =
(obs_source_t*)source->context.next;
if (source->info.type == OBS_SOURCE_TYPE_SCENE &&
!source->context.private &&
!enum_proc(param, source)) {
break;
}
source = next_source;
}
pthread_mutex_unlock(&obs->data.sources_mutex);
}
static inline void obs_enum(void *pstart, pthread_mutex_t *mutex, void *proc,
void *param)
{

View file

@ -556,6 +556,10 @@ EXPORT obs_source_t *obs_get_output_source(uint32_t channel);
EXPORT void obs_enum_sources(bool (*enum_proc)(void*, obs_source_t*),
void *param);
/** Enumerates scenes */
EXPORT void obs_enum_scenes(bool (*enum_proc)(void*, obs_source_t*),
void *param);
/** Enumerates outputs */
EXPORT void obs_enum_outputs(bool (*enum_proc)(void*, obs_output_t*),
void *param);