[Xfce4-commits] [panel-plugins/xfce4-pulseaudio-plugin] 05/21: Detect device (dis)connection
noreply at xfce.org
noreply at xfce.org
Sat Sep 23 21:27:31 CEST 2017
This is an automated email from the git hooks/post-receive script.
b l u e s a b r e p u s h e d a c o m m i t t o b r a n c h m a s t e r
in repository panel-plugins/xfce4-pulseaudio-plugin.
commit 223259c89394c144eb3c78f226998c8d5c06271c
Author: Sean Davis <smd.seandavis at gmail.com>
Date: Sun Sep 10 19:35:33 2017 -0400
Detect device (dis)connection
---
panel-plugin/pulseaudio-volume.c | 38 ++++++++++++++++++++++++++++----------
1 file changed, 28 insertions(+), 10 deletions(-)
diff --git a/panel-plugin/pulseaudio-volume.c b/panel-plugin/pulseaudio-volume.c
index 346eb34..7840afa 100644
--- a/panel-plugin/pulseaudio-volume.c
+++ b/panel-plugin/pulseaudio-volume.c
@@ -38,13 +38,21 @@
#include "pulseaudio-volume.h"
-static void pulseaudio_volume_finalize (GObject *object);
-static void pulseaudio_volume_connect (PulseaudioVolume *volume);
-static gdouble pulseaudio_volume_v2d (PulseaudioVolume *volume,
- pa_volume_t vol);
-static pa_volume_t pulseaudio_volume_d2v (PulseaudioVolume *volume,
- gdouble vol);
-static gboolean pulseaudio_volume_reconnect_timeout (gpointer userdata);
+static void pulseaudio_volume_finalize (GObject *object);
+static void pulseaudio_volume_connect (PulseaudioVolume *volume);
+static gdouble pulseaudio_volume_v2d (PulseaudioVolume *volume,
+ pa_volume_t vol);
+static pa_volume_t pulseaudio_volume_d2v (PulseaudioVolume *volume,
+ gdouble vol);
+static gboolean pulseaudio_volume_reconnect_timeout (gpointer userdata);
+static void pulseaudio_volume_get_sink_list_cb (pa_context *context,
+ const pa_sink_info *i,
+ int eol,
+ void *userdata);
+static void pulseaudio_volume_get_source_list_cb (pa_context *context,
+ const pa_source_info *i,
+ int eol,
+ void *userdata);
struct _PulseaudioVolume
@@ -269,6 +277,12 @@ pulseaudio_volume_sink_source_check (PulseaudioVolume *volume,
g_return_if_fail (IS_PULSEAUDIO_VOLUME (volume));
pa_context_get_server_info (context, pulseaudio_volume_server_info_cb, volume);
+
+ g_hash_table_remove_all (volume->sinks);
+ g_hash_table_remove_all (volume->sources);
+
+ pa_context_get_sink_info_list (volume->pa_context, pulseaudio_volume_get_sink_list_cb, volume);
+ pa_context_get_source_info_list (volume->pa_context, pulseaudio_volume_get_source_list_cb, volume);
}
@@ -289,12 +303,18 @@ pulseaudio_volume_subscribe_cb (pa_context *context,
pulseaudio_debug ("received sink event");
break;
+ case PA_SUBSCRIPTION_EVENT_SINK_INPUT :
+ pulseaudio_volume_sink_source_check (volume, context);
+ pulseaudio_debug ("received sink output event");
+ break;
+
case PA_SUBSCRIPTION_EVENT_SOURCE :
pulseaudio_volume_sink_source_check (volume, context);
pulseaudio_debug ("received source event");
break;
case PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT :
+ pulseaudio_volume_sink_source_check (volume, context);
pulseaudio_debug ("received source output event");
break;
@@ -387,7 +407,7 @@ pulseaudio_volume_context_state_cb (pa_context *context,
switch (pa_context_get_state (context))
{
case PA_CONTEXT_READY :
- pa_context_subscribe (context, PA_SUBSCRIPTION_MASK_SINK | PA_SUBSCRIPTION_MASK_SOURCE | PA_SUBSCRIPTION_MASK_SOURCE_OUTPUT | PA_SUBSCRIPTION_MASK_SERVER , NULL, NULL);
+ pa_context_subscribe (context, PA_SUBSCRIPTION_MASK_SINK | PA_SUBSCRIPTION_MASK_SINK_INPUT | PA_SUBSCRIPTION_MASK_SOURCE | PA_SUBSCRIPTION_MASK_SOURCE_OUTPUT | PA_SUBSCRIPTION_MASK_SERVER , NULL, NULL);
pa_context_set_subscribe_callback (context, pulseaudio_volume_subscribe_cb, volume);
pulseaudio_debug ("PulseAudio connection established");
@@ -398,8 +418,6 @@ pulseaudio_volume_context_state_cb (pa_context *context,
g_signal_emit (G_OBJECT (volume), pulseaudio_volume_signals [VOLUME_CHANGED], 0, FALSE);
g_signal_emit (G_OBJECT (volume), pulseaudio_volume_signals [VOLUME_MIC_CHANGED], 0, FALSE);
- pa_context_get_sink_info_list (volume->pa_context, pulseaudio_volume_get_sink_list_cb, volume);
- pa_context_get_source_info_list (volume->pa_context, pulseaudio_volume_get_source_list_cb, volume);
pa_context_get_server_info (volume->pa_context, pulseaudio_volume_get_server_info_cb, volume);
break;
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Xfce4-commits
mailing list