[Xfce4-commits] [panel-plugins/xfce4-pulseaudio-plugin] 01/01: Wait for the pulseaudio volume sink to be connected to get the current volume state at startup (Bugs #14071, #13677)
noreply at xfce.org
noreply at xfce.org
Sat Feb 24 14:45:02 CET 2018
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 77e1080b4db37ea0081d8608c867dcc6f009aa9d
Author: Sean Davis <smd.seandavis at gmail.com>
Date: Sat Feb 24 08:44:44 2018 -0500
Wait for the pulseaudio volume sink to be connected to get the current volume state at startup (Bugs #14071, #13677)
---
panel-plugin/pulseaudio-button.c | 23 +++++++++++++++++++++++
panel-plugin/pulseaudio-volume.c | 28 ++++++++++++++++++++++++----
panel-plugin/pulseaudio-volume.h | 2 ++
3 files changed, 49 insertions(+), 4 deletions(-)
diff --git a/panel-plugin/pulseaudio-button.c b/panel-plugin/pulseaudio-button.c
index 92d8f3a..5657107 100644
--- a/panel-plugin/pulseaudio-button.c
+++ b/panel-plugin/pulseaudio-button.c
@@ -280,12 +280,30 @@ pulseaudio_button_update_icons (PulseaudioButton *button)
+static gboolean
+pulseaudio_button_sink_connection_timeout (gpointer userdata)
+{
+ PulseaudioButton *button = PULSEAUDIO_BUTTON (userdata);
+ gboolean sink_connected = pulseaudio_volume_get_sink_connected (button->volume);
+
+ if (sink_connected)
+ {
+ pulseaudio_button_update (button, TRUE);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+
+
static void
pulseaudio_button_update (PulseaudioButton *button,
gboolean force_update)
{
gdouble volume;
gboolean connected;
+ gboolean sink_connected;
gboolean muted;
gchar *tip_text;
const gchar *icon_name;
@@ -296,6 +314,8 @@ pulseaudio_button_update (PulseaudioButton *button,
volume = pulseaudio_volume_get_volume (button->volume);
muted = pulseaudio_volume_get_muted (button->volume);
connected = pulseaudio_volume_get_connected (button->volume);
+ sink_connected = pulseaudio_volume_get_sink_connected (button->volume);
+
if (!connected)
icon_name = icons[V_MUTED];
else if (muted)
@@ -324,6 +344,9 @@ pulseaudio_button_update (PulseaudioButton *button,
gtk_image_set_from_icon_name (GTK_IMAGE (button->image), icon_name, GTK_ICON_SIZE_BUTTON);
gtk_image_set_pixel_size (GTK_IMAGE (button->image), button->icon_size);
}
+
+ if (!sink_connected)
+ g_timeout_add (250, pulseaudio_button_sink_connection_timeout, button);
}
diff --git a/panel-plugin/pulseaudio-volume.c b/panel-plugin/pulseaudio-volume.c
index c181ae5..55c8070 100644
--- a/panel-plugin/pulseaudio-volume.c
+++ b/panel-plugin/pulseaudio-volume.c
@@ -536,6 +536,26 @@ pulseaudio_volume_get_connected (PulseaudioVolume *volume)
+gboolean
+pulseaudio_volume_get_sink_connected (PulseaudioVolume *volume)
+{
+ g_return_val_if_fail (IS_PULSEAUDIO_VOLUME (volume), FALSE);
+
+ return volume->sink_connected;
+}
+
+
+
+gboolean
+pulseaudio_volume_get_source_connected (PulseaudioVolume *volume)
+{
+ g_return_val_if_fail (IS_PULSEAUDIO_VOLUME (volume), FALSE);
+
+ return volume->source_connected;
+}
+
+
+
static gdouble
pulseaudio_volume_v2d (PulseaudioVolume *volume,
pa_volume_t pa_volume)
@@ -737,10 +757,10 @@ pulseaudio_volume_set_volume (PulseaudioVolume *volume,
vol_trim = MIN (MAX (vol, 0.0), vol_max);
if (volume->volume != vol_trim)
- {
- volume->volume = vol_trim;
- pa_context_get_server_info (volume->pa_context, pulseaudio_volume_set_volume_cb1, volume);
- }
+ {
+ volume->volume = vol_trim;
+ pa_context_get_server_info (volume->pa_context, pulseaudio_volume_set_volume_cb1, volume);
+ }
}
diff --git a/panel-plugin/pulseaudio-volume.h b/panel-plugin/pulseaudio-volume.h
index 33cff96..8eebc35 100644
--- a/panel-plugin/pulseaudio-volume.h
+++ b/panel-plugin/pulseaudio-volume.h
@@ -39,6 +39,8 @@ GType pulseaudio_volume_get_type (void) G_GNUC_
PulseaudioVolume *pulseaudio_volume_new (PulseaudioConfig *config);
gboolean pulseaudio_volume_get_connected (PulseaudioVolume *volume);
+gboolean pulseaudio_volume_get_sink_connected (PulseaudioVolume *volume);
+gboolean pulseaudio_volume_get_source_connected (PulseaudioVolume *volume);
gdouble pulseaudio_volume_get_volume (PulseaudioVolume *volume);
void pulseaudio_volume_set_volume (PulseaudioVolume *volume,
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Xfce4-commits
mailing list