This is an automated email from the git hooks/post-receive script.

bluesabre pushed a 
commit to branch 
master
in repository panel-plugins/xfce4-pulseaudio-plugin.

commit 77e1080b4db37ea0081d8608c867dcc6f009aa9d
Author: Sean Davis <smd.seanda...@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.
_______________________________________________
Xfce4-commits mailing list
Xfce4-commits@xfce.org
https://mail.xfce.org/mailman/listinfo/xfce4-commits

Reply via email to