static gboolean enumerate_video_source_devices(GClosure *callback) { OwrLocalMediaSource *source; GList *sources = NULL; GError *error = NULL; GDir *dev_dir; const gchar *filename; dev_dir = g_dir_open("/dev", 0, &error); while ((filename = g_dir_read_name(dev_dir))) { source = maybe_create_source_from_filename(filename); if (source) { sources = g_list_prepend(sources, source); } } g_dir_close(dev_dir); sources = g_list_reverse(sources); _owr_utils_call_closure_with_list(callback, sources); return FALSE; }
static gboolean cb_call_closure_with_list_later(CallbackAndList *cal) { _owr_utils_call_closure_with_list(cal->callback, cal->list); g_slice_free(CallbackAndList, cal); return FALSE; }
static gboolean enumerate_audio_source_devices(GClosure *callback) { OwrLocalMediaSource *source; source = _owr_local_media_source_new_cached(-1, "Default audio input", OWR_MEDIA_TYPE_AUDIO, OWR_SOURCE_TYPE_CAPTURE); _owr_utils_call_closure_with_list(callback, g_list_prepend(NULL, source)); return FALSE; }
static void callback_merger_on_destroy_data(CallbackMergeContext *context, GClosure *closure) { OWR_UNUSED(closure); _owr_utils_call_closure_with_list(context->callback, context->list); g_mutex_clear(&context->mutex); if (context->item_destroy) g_list_free_full(context->list, context->item_destroy); else g_list_free(context->list); g_free(context); }
static gboolean enumerate_audio_source_devices(GClosure *callback) { _owr_utils_call_closure_with_list(callback, _owr_get_core_audio_sources()); return FALSE; }