libobs: Add `obs_enum_all_sources()`

There is currently no way to enumerate *all* sources in OBS. Only
inputs and scenes have a way to be enumerated. Some applications
like obs-websocket have features that need to take advantage
of enumerating all sources in order to function properly.
master
tt2468 2021-05-13 23:56:54 -07:00 committed by Dillon Pentz
parent 74c3781554
commit 53a8a326da
2 changed files with 11 additions and 0 deletions

View File

@ -1526,6 +1526,13 @@ static inline void obs_enum(void *pstart, pthread_mutex_t *mutex, void *proc,
pthread_mutex_unlock(mutex);
}
void obs_enum_all_sources(bool (*enum_proc)(void *, obs_source_t *),
void *param)
{
obs_enum(&obs->data.first_source, &obs->data.sources_mutex, enum_proc,
param);
}
void obs_enum_outputs(bool (*enum_proc)(void *, obs_output_t *), void *param)
{
obs_enum(&obs->data.first_output, &obs->data.outputs_mutex, enum_proc,

View File

@ -612,6 +612,10 @@ EXPORT void obs_enum_sources(bool (*enum_proc)(void *, obs_source_t *),
EXPORT void obs_enum_scenes(bool (*enum_proc)(void *, obs_source_t *),
void *param);
/** Enumerates all sources (regardless of type) */
EXPORT void obs_enum_all_sources(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);