static void empathy_mic_menu_list_microphones_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) { EmpathyMicMonitor *monitor = EMPATHY_MIC_MONITOR (source_object); EmpathyMicMenu *self = user_data; GError *error = NULL; const GList *mics = NULL; mics = empathy_mic_monitor_list_microphones_finish (monitor, result, &error); if (error != NULL) { DEBUG ("Failed to get microphone list: %s", error->message); g_clear_error (&error); return; } for (; mics != NULL; mics = mics->next) { EmpathyMicrophone *mic = mics->data; empathy_mic_menu_add_microphone (self, mic->name, mic->description, mic->index, mic->is_monitor); } empathy_mic_menu_update (self); }
static void empathy_audio_src_get_current_mic_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) { EmpathyMicMonitor *monitor = EMPATHY_MIC_MONITOR (source_object); EmpathyGstAudioSrc *self = user_data; EmpathyGstAudioSrcPrivate *priv = EMPATHY_GST_AUDIO_SRC_GET_PRIVATE (self); guint source_idx; GError *error = NULL; source_idx = empathy_mic_monitor_get_current_mic_finish (monitor, result, &error); if (error != NULL) { DEBUG ("Failed to get current mic: %s", error->message); g_clear_error (&error); return; } if (priv->source_idx == source_idx) return; priv->source_idx = source_idx; g_object_notify (G_OBJECT (self), "microphone"); }
static void empathy_audio_src_change_microphone_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) { EmpathyMicMonitor *monitor = EMPATHY_MIC_MONITOR (source_object); GSimpleAsyncResult *simple = user_data; GError *error = NULL; if (!empathy_mic_monitor_change_microphone_finish (monitor, result, &error)) { g_simple_async_result_take_error (simple, error); } g_simple_async_result_complete (simple); g_object_unref (simple); }