[Xfce4-commits] <xfce4-mixer:gber/improvements> Handle identically named tracks by making use of the track index property

Guido Berhoerster noreply at xfce.org
Fri Sep 21 17:18:29 CEST 2012


Updating branch refs/heads/gber/improvements
         to 3c50d140ccf8b220de5efb9b7965abb3936f8774 (commit)
       from bdb4f9ff7fb216a224f864447806d4ce912cc475 (commit)

commit 3c50d140ccf8b220de5efb9b7965abb3936f8774
Author: Guido Berhoerster <guido+xfce at berhoerster.name>
Date:   Fri Sep 21 12:00:36 2012 +0200

    Handle identically named tracks by making use of the track index property
    
    Handle identically named tracks by using an custom track label which sonsists
    of the GstMixerTrack label property and the index value if it is greater than
    0.

 NEWS                                     |    1 +
 libxfce4mixer/libxfce4mixer.c            |   62 ++++++++++++++++++++++++++----
 libxfce4mixer/libxfce4mixer.h            |    1 +
 libxfce4mixer/xfce-mixer-preferences.c   |   16 ++++----
 libxfce4mixer/xfce-mixer-track-combo.c   |    7 +---
 panel-plugin/xfce-mixer-plugin.c         |   15 +++----
 panel-plugin/xfce-plugin-dialog.c        |   13 ++----
 xfce4-mixer/xfce-mixer-controls-dialog.c |   17 +++-----
 xfce4-mixer/xfce-mixer-option.c          |    5 +-
 xfce4-mixer/xfce-mixer-switch.c          |    5 +-
 xfce4-mixer/xfce-mixer-track.c           |    6 +--
 xfce4-mixer/xfce-mixer.c                 |   27 ++++---------
 12 files changed, 97 insertions(+), 78 deletions(-)

diff --git a/NEWS b/NEWS
index 72651a7..10f1d89 100644
--- a/NEWS
+++ b/NEWS
@@ -40,6 +40,7 @@
 - Add tooltips to scale widgets in the mixer.
 - Add runtime debugging mode to both the mixer and the panel plugin.
 - Add man page for xfce4-mixer.
+- Handle identically named tracks by making use of the track index property.
 
 
 4.8.0
diff --git a/libxfce4mixer/libxfce4mixer.c b/libxfce4mixer/libxfce4mixer.c
index da0bfe4..c14ee27 100644
--- a/libxfce4mixer/libxfce4mixer.c
+++ b/libxfce4mixer/libxfce4mixer.c
@@ -40,9 +40,11 @@
 
 
 
-static gboolean _xfce_mixer_filter_mixer  (GstMixer *mixer,
-                                           gpointer  user_data);
-static void     _xfce_mixer_destroy_mixer (GstMixer *mixer);
+static gboolean _xfce_mixer_filter_mixer     (GstMixer *mixer,
+                                              gpointer  user_data);
+static void     _xfce_mixer_add_track_labels (gpointer  data,
+                                              gpointer  user_data);
+static void     _xfce_mixer_destroy_mixer    (GstMixer *mixer);
 
 
 
@@ -83,6 +85,9 @@ xfce_mixer_init (void)
       /* Get list of all available mixer devices */
       mixers = gst_audio_default_registry_mixer_filter (_xfce_mixer_filter_mixer, FALSE, &counter);
 
+      /* Add custom labels to all tracks of all mixers */
+      g_list_foreach (mixers, (GFunc) _xfce_mixer_add_track_labels, NULL);
+
       /* Create a GstBus for notifications */
       bus = gst_bus_new ();
       gst_bus_add_signal_watch (bus);
@@ -195,23 +200,20 @@ xfce_mixer_get_track (GstElement  *card,
 {
   GstMixerTrack *track = NULL;
   const GList   *iter;
-  gchar         *label;
+  const gchar   *label;
 
   g_return_val_if_fail (GST_IS_MIXER (card), NULL);
   g_return_val_if_fail (track_name != NULL, NULL);
 
   for (iter = gst_mixer_list_tracks (GST_MIXER (card)); iter != NULL; iter = g_list_next (iter))
     {
-      g_object_get (GST_MIXER_TRACK (iter->data), "label", &label, NULL);
+      label = xfce_mixer_get_track_label (GST_MIXER_TRACK (iter->data));
 
       if (g_utf8_collate (label, track_name) == 0)
         {
           track = iter->data;
-          g_free (label);
           break;
         }
-      
-      g_free (label);
     }
 
   return track;
@@ -311,6 +313,15 @@ xfce_mixer_get_default_track_list (GstElement *card)
 
 
 
+const gchar *
+xfce_mixer_get_track_label (GstMixerTrack *track)
+{
+  g_return_val_if_fail (GST_IS_MIXER_TRACK (track), NULL);
+  return g_object_get_data (G_OBJECT (track), "xfce-mixer-track-label");
+}
+
+
+
 guint
 xfce_mixer_bus_connect (GCallback callback,
                         gpointer  user_data)
@@ -407,6 +418,41 @@ _xfce_mixer_filter_mixer (GstMixer *mixer,
 
 
 static void
+_xfce_mixer_add_track_labels (gpointer data,
+                              gpointer user_data)
+{
+  GstMixer      *mixer = GST_MIXER (data);
+  const GList   *iter;
+  GstMixerTrack *track;
+  gchar         *label;
+  gchar         *xfce_mixer_label;
+  guint          index;
+
+  for (iter = gst_mixer_list_tracks (mixer); iter != NULL; iter = g_list_next (iter))
+    {
+      track = GST_MIXER_TRACK (iter->data);
+
+      g_object_get (track, "label", &label, "index", &index, NULL);
+
+      /*
+       * Build display label including the index if there are mutiple tracks of
+       * the same name
+       */
+      if (index > 0)
+        xfce_mixer_label = g_strdup_printf ("%s (%d)", label, index);
+      else
+        xfce_mixer_label = g_strdup (label);
+
+      /* Set label to be used by xfce4-mixer */
+      g_object_set_data_full (G_OBJECT (track), "xfce-mixer-track-label", xfce_mixer_label, (GDestroyNotify) g_free);
+
+      g_free (label);
+    }
+}
+
+
+
+static void
 _xfce_mixer_destroy_mixer (GstMixer *mixer)
 {
   gst_element_set_state (GST_ELEMENT (mixer), GST_STATE_NULL);
diff --git a/libxfce4mixer/libxfce4mixer.h b/libxfce4mixer/libxfce4mixer.h
index 8628df9..59b7a1e 100644
--- a/libxfce4mixer/libxfce4mixer.h
+++ b/libxfce4mixer/libxfce4mixer.h
@@ -51,6 +51,7 @@ GstMixerTrack *xfce_mixer_get_track              (GstElement    *card,
                                                   const gchar   *track_name);
 GstMixerTrack *xfce_mixer_get_default_track      (GstElement    *card);
 GList         *xfce_mixer_get_default_track_list (GstElement    *card);
+const gchar   *xfce_mixer_get_track_label        (GstMixerTrack *track);
 guint          xfce_mixer_bus_connect            (GCallback      callback,
                                                   gpointer       user_data);
 void           xfce_mixer_bus_disconnect         (guint          signal_handler_id);
diff --git a/libxfce4mixer/xfce-mixer-preferences.c b/libxfce4mixer/xfce-mixer-preferences.c
index 21faefc..7f939b2 100644
--- a/libxfce4mixer/xfce-mixer-preferences.c
+++ b/libxfce4mixer/xfce-mixer-preferences.c
@@ -387,12 +387,12 @@ xfce_mixer_preferences_get_control_visible (XfceMixerPreferences *preferences,
 static GPtrArray *
 xfce_mixer_preferences_get_default_tracks (XfceMixerPreferences *preferences)
 {
-  GList      *track_list;
-  GList      *iter;
-  GPtrArray  *tracks;
-  GstElement *card;
-  gchar      *track_label;
-  GValue     *value;
+  GList       *track_list;
+  GList       *iter;
+  GPtrArray   *tracks;
+  GstElement  *card;
+  const gchar *track_label;
+  GValue      *value;
 
   tracks = g_ptr_array_new ();
 
@@ -406,8 +406,8 @@ xfce_mixer_preferences_get_default_tracks (XfceMixerPreferences *preferences)
           for (iter = track_list; iter != NULL; iter = g_list_next (iter))
             {
               value = g_value_init (g_new0 (GValue, 1), G_TYPE_STRING);
-              g_object_get (G_OBJECT (iter->data), "label", &track_label, NULL);
-              g_value_take_string (value, track_label);
+              track_label = xfce_mixer_get_track_label (GST_MIXER_TRACK (iter->data));
+              g_value_set_string (value, track_label);
               g_ptr_array_add (tracks, value);
             }
         }
diff --git a/libxfce4mixer/xfce-mixer-track-combo.c b/libxfce4mixer/xfce-mixer-track-combo.c
index 4c19acf..a5e40f9 100644
--- a/libxfce4mixer/xfce-mixer-track-combo.c
+++ b/libxfce4mixer/xfce-mixer-track-combo.c
@@ -192,7 +192,6 @@ xfce_mixer_track_combo_set_soundcard (XfceMixerTrackCombo *combo,
   XfceMixerTrackType type;
   GtkTreeIter        tree_iter;
   const GList       *iter;
-  gchar             *label;
   gint               counter;
   gint               active_index = 0;
   GstMixerTrack     *track;
@@ -222,15 +221,11 @@ xfce_mixer_track_combo_set_soundcard (XfceMixerTrackCombo *combo,
 
       if (type == XFCE_MIXER_TRACK_TYPE_PLAYBACK || type == XFCE_MIXER_TRACK_TYPE_CAPTURE)
         {
-          g_object_get (GST_MIXER_TRACK (iter->data), "label", &label, NULL);
-
           gtk_list_store_append (combo->list_store, &tree_iter);
           gtk_list_store_set (combo->list_store, &tree_iter, 
-                              NAME_COLUMN, label, 
+                              NAME_COLUMN, xfce_mixer_get_track_label (GST_MIXER_TRACK (iter->data)), 
                               TRACK_COLUMN, GST_MIXER_TRACK (iter->data), -1);
 
-          g_free (label);
-
           if (G_UNLIKELY (track != NULL && track == GST_MIXER_TRACK (iter->data)))
             active_index = counter;
 
diff --git a/panel-plugin/xfce-mixer-plugin.c b/panel-plugin/xfce-mixer-plugin.c
index 7cf0a62..ffdf48b 100644
--- a/panel-plugin/xfce-mixer-plugin.c
+++ b/panel-plugin/xfce-mixer-plugin.c
@@ -379,7 +379,7 @@ xfce_mixer_plugin_set_property (GObject      *object,
                 g_free (track_label);
                 track = xfce_mixer_get_default_track (mixer_plugin->card);
                 if (GST_IS_MIXER_TRACK (track))
-                  g_object_get (track, "label", &track_label, NULL);
+                  track_label = g_strdup (xfce_mixer_get_track_label (track));
                 else
                   track_label = NULL;
               }
@@ -727,7 +727,7 @@ xfce_mixer_plugin_update_track (XfceMixerPlugin *mixer_plugin)
   xfce_volume_button_set_is_configured (XFCE_VOLUME_BUTTON (mixer_plugin->button), TRUE);
   xfce_volume_button_set_volume (XFCE_VOLUME_BUTTON (mixer_plugin->button), volume);
   xfce_volume_button_set_muted (XFCE_VOLUME_BUTTON (mixer_plugin->button), muted);
-  xfce_volume_button_set_track_label (XFCE_VOLUME_BUTTON (mixer_plugin->button), mixer_plugin->track_label);
+  xfce_volume_button_set_track_label (XFCE_VOLUME_BUTTON (mixer_plugin->button), xfce_mixer_get_track_label (mixer_plugin->track));
 
   /* Update mute menu item */
   gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (mixer_plugin->mute_menu_item), muted);
@@ -746,7 +746,7 @@ xfce_mixer_plugin_bus_message (GstBus          *bus,
   GstMixerTrack      *track = NULL;
   gboolean            mute;
   gboolean            record;
-  gchar              *label;
+  const gchar        *label;
 
   /* Don't do anything if GstBus messages are to be ignored */
   if (G_UNLIKELY (mixer_plugin->ignore_bus_messages))
@@ -763,18 +763,17 @@ xfce_mixer_plugin_bus_message (GstBus          *bus,
       case GST_MIXER_MESSAGE_VOLUME_CHANGED:
         /* Get the track of the volume changed message */
         gst_mixer_message_parse_volume_changed (message, &track, NULL, NULL);
-        g_object_get (track, "label", &label, NULL);
+        label = xfce_mixer_get_track_label (track);
 
         /* Update the volume button if the message belongs to the current mixer track */
         if (G_UNLIKELY (g_utf8_collate (label, mixer_plugin->track_label) == 0))
           xfce_mixer_plugin_update_track (mixer_plugin);
 
-        g_free (label);
         break;
       case GST_MIXER_MESSAGE_MUTE_TOGGLED:
         /* Parse the mute message */
         gst_mixer_message_parse_mute_toggled (message, &track, &mute);
-        g_object_get (track, "label", &label, NULL);
+        label = xfce_mixer_get_track_label (track);
 
         /* Update the volume button and mute menu item if the message belongs to the current mixer track */
         if (G_UNLIKELY (g_utf8_collate (label, mixer_plugin->track_label) == 0))
@@ -783,12 +782,11 @@ xfce_mixer_plugin_bus_message (GstBus          *bus,
             gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (mixer_plugin->mute_menu_item), mute);
           }
 
-        g_free (label);
         break;
       case GST_MIXER_MESSAGE_RECORD_TOGGLED:
         /* Parse the record message */
         gst_mixer_message_parse_record_toggled (message, &track, &record);
-        g_object_get (track, "label", &label, NULL);
+        label = xfce_mixer_get_track_label (track);
 
         /* Update the volume button and mute menu item if the message belongs to the current mixer track */
         if (G_UNLIKELY (g_utf8_collate (label, mixer_plugin->track_label) == 0))
@@ -797,7 +795,6 @@ xfce_mixer_plugin_bus_message (GstBus          *bus,
             gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (mixer_plugin->mute_menu_item), !record);
           }
 
-        g_free (label);
         break;
       default:
         break;
diff --git a/panel-plugin/xfce-plugin-dialog.c b/panel-plugin/xfce-plugin-dialog.c
index 85a319a..5af61d0 100644
--- a/panel-plugin/xfce-plugin-dialog.c
+++ b/panel-plugin/xfce-plugin-dialog.c
@@ -268,15 +268,13 @@ xfce_plugin_dialog_track_changed (XfcePluginDialog    *dialog,
                                   GstMixerTrack       *track,
                                   XfceMixerTrackCombo *combo)
 {
-  gchar *track_label;
+  const gchar *track_label;
 
-  g_object_get (G_OBJECT (track), "label", &track_label, NULL);
+  track_label = xfce_mixer_get_track_label (track);
 
   g_signal_handlers_block_by_func (G_OBJECT (dialog->plugin), G_CALLBACK (xfce_plugin_dialog_track_property_changed), dialog);
   g_object_set (G_OBJECT (dialog->plugin), "track", track_label, NULL);
   g_signal_handlers_unblock_by_func (G_OBJECT (dialog->plugin), G_CALLBACK (xfce_plugin_dialog_track_property_changed), dialog);
-
-  g_free (track_label);
 }
 
 
@@ -328,8 +326,8 @@ xfce_plugin_dialog_track_property_changed (XfcePluginDialog *dialog,
   GstElement    *card;
   GstMixerTrack *old_track;
   GstMixerTrack *new_track = NULL;
-  gchar         *old_track_label = NULL;
-  gchar         *new_track_label = NULL;
+  const gchar   *old_track_label = NULL;
+  gchar         *new_track_label;
 
   g_return_if_fail (IS_XFCE_PLUGIN_DIALOG (dialog));
   g_return_if_fail (G_IS_OBJECT (object));
@@ -344,7 +342,7 @@ xfce_plugin_dialog_track_property_changed (XfcePluginDialog *dialog,
 
   old_track = xfce_mixer_track_combo_get_active_track (XFCE_MIXER_TRACK_COMBO (dialog->track_combo));
   if (GST_IS_MIXER_TRACK (old_track))
-    g_object_get (G_OBJECT (old_track), "label", &old_track_label, NULL);
+    old_track_label = xfce_mixer_get_track_label (old_track);
 
   if (xfce_mixer_utf8_cmp (old_track_label, new_track_label) != 0)
     {
@@ -355,6 +353,5 @@ xfce_plugin_dialog_track_property_changed (XfcePluginDialog *dialog,
     }
 
   g_free (new_track_label);
-  g_free (old_track_label);
 }
 
diff --git a/xfce4-mixer/xfce-mixer-controls-dialog.c b/xfce4-mixer/xfce-mixer-controls-dialog.c
index baa5c38..9b2fbff 100644
--- a/xfce4-mixer/xfce-mixer-controls-dialog.c
+++ b/xfce4-mixer/xfce-mixer-controls-dialog.c
@@ -37,8 +37,8 @@
 
 
 
-#define VISIBLE_COLUMN 0
-#define NAME_COLUMN    1
+#define VISIBLE_COLUMN       0
+#define NAME_COLUMN          1
 
 
 
@@ -246,7 +246,8 @@ xfce_mixer_controls_dialog_update_dialog (XfceMixerControlsDialog *dialog)
 {
   XfceMixerPreferences *preferences;
   const GList          *iter;
-  gchar                *track_label;
+  GstMixerTrack        *track;
+  const gchar          *track_label;
   gboolean              visible;
   GtkTreeIter           tree_iter;
 
@@ -262,7 +263,8 @@ xfce_mixer_controls_dialog_update_dialog (XfceMixerControlsDialog *dialog)
        iter != NULL;
        iter = g_list_next (iter))
     {
-      g_object_get (GST_MIXER_TRACK (iter->data), "label", &track_label, NULL);
+      track = GST_MIXER_TRACK (iter->data);
+      track_label = xfce_mixer_get_track_label (track);
 
       visible = xfce_mixer_preferences_get_control_visible (preferences, track_label);
 
@@ -271,8 +273,6 @@ xfce_mixer_controls_dialog_update_dialog (XfceMixerControlsDialog *dialog)
                         VISIBLE_COLUMN, visible,
                         NAME_COLUMN, track_label,
                         -1);
-
-      g_free (track_label);
     }
 
   g_object_unref (preferences);
@@ -326,21 +326,16 @@ xfce_mixer_controls_dialog_control_toggled (GtkCellRendererToggle   *renderer,
                                             XfceMixerControlsDialog *dialog)
 {
   GtkTreeIter  iter;
-  gchar       *name;
 
   if (G_UNLIKELY (!gtk_tree_model_get_iter_from_string (GTK_TREE_MODEL (dialog->store), &iter, path)))
     return;
 
-  gtk_tree_model_get (GTK_TREE_MODEL (dialog->store), &iter, NAME_COLUMN, &name, -1);
-
   if (!gtk_cell_renderer_toggle_get_active (renderer))
     gtk_list_store_set (dialog->store, &iter, VISIBLE_COLUMN, TRUE, -1);
   else
     gtk_list_store_set (dialog->store, &iter, VISIBLE_COLUMN, FALSE, -1);
 
   xfce_mixer_controls_dialog_update_preferences (dialog);
-
-  g_free (name);
 }
 
 
diff --git a/xfce4-mixer/xfce-mixer-option.c b/xfce4-mixer/xfce-mixer-option.c
index aba21dd..5f1c946 100644
--- a/xfce4-mixer/xfce-mixer-option.c
+++ b/xfce4-mixer/xfce-mixer-option.c
@@ -161,16 +161,15 @@ xfce_mixer_option_create_contents (XfceMixerOption *option)
   GtkWidget       *label;
   const GList     *iter;
   const gchar     *active_option;
-  gchar           *track_label;
+  const gchar     *track_label;
   gchar           *title;
   gint             i;
 
   gtk_box_set_homogeneous (GTK_BOX (option), FALSE);
   gtk_box_set_spacing (GTK_BOX (option), 12);
 
-  g_object_get (option->track, "label", &track_label, NULL);
+  track_label = xfce_mixer_get_track_label (option->track);
   title = g_strdup_printf ("%s:", track_label);
-  g_free (track_label);
 
   label = gtk_label_new (title);
   gtk_box_pack_start (GTK_BOX (option), label, FALSE, FALSE, 0);
diff --git a/xfce4-mixer/xfce-mixer-switch.c b/xfce4-mixer/xfce-mixer-switch.c
index 38e576f..8e4bd79 100644
--- a/xfce4-mixer/xfce-mixer-switch.c
+++ b/xfce4-mixer/xfce-mixer-switch.c
@@ -158,14 +158,13 @@ xfce_mixer_switch_new (GstElement    *card,
 static void
 xfce_mixer_switch_create_contents (XfceMixerSwitch *mixer_switch)
 {
-  gchar *label;
+  const gchar *label;
 
   gtk_box_set_homogeneous (GTK_BOX (mixer_switch), FALSE);
   gtk_box_set_spacing (GTK_BOX (mixer_switch), 12);
 
-  g_object_get (mixer_switch->track, "label", &label, NULL);
+  label = xfce_mixer_get_track_label (mixer_switch->track);
   mixer_switch->check_button = gtk_check_button_new_with_mnemonic (label);
-  g_free (label);
   gtk_box_pack_start (GTK_BOX (mixer_switch), mixer_switch->check_button, FALSE, FALSE, 0);
   gtk_widget_show (mixer_switch->check_button);
 
diff --git a/xfce4-mixer/xfce-mixer-track.c b/xfce4-mixer/xfce-mixer-track.c
index 366a557..7143a4a 100644
--- a/xfce4-mixer/xfce-mixer-track.c
+++ b/xfce4-mixer/xfce-mixer-track.c
@@ -184,7 +184,7 @@ xfce_mixer_track_create_contents (XfceMixerTrack *track)
   GtkWidget   *button_box;
   GtkWidget   *fader;
   gdouble      step;
-  gchar       *track_label;
+  const gchar *track_label;
   gchar       *tooltip_text;
   gint         channel;
   gint         columns;
@@ -202,7 +202,7 @@ xfce_mixer_track_create_contents (XfceMixerTrack *track)
   gtk_table_set_row_spacings (GTK_TABLE (track), 6);
 
   /* Put the name of the track on top of the other elements */
-  g_object_get (track->gst_track, "label", &track_label, NULL);
+  track_label = xfce_mixer_get_track_label (track->gst_track);
   label = gtk_label_new (track_label);
   gtk_misc_set_alignment (GTK_MISC (label), 0.5f, 0.5f);
   gtk_table_attach (GTK_TABLE (track), label, 0, columns, 0, 1, GTK_FILL, GTK_SHRINK, 0, 0);
@@ -288,8 +288,6 @@ xfce_mixer_track_create_contents (XfceMixerTrack *track)
 
   /* Free volume array */
   g_free (volumes);
-
-  g_free (track_label);
 }
 
 
diff --git a/xfce4-mixer/xfce-mixer.c b/xfce4-mixer/xfce-mixer.c
index 159a610..773f27b 100644
--- a/xfce4-mixer/xfce-mixer.c
+++ b/xfce4-mixer/xfce-mixer.c
@@ -166,7 +166,7 @@ xfce_mixer_constructed (GObject *object)
   GtkWidget            *last_separator[4] = { NULL, NULL, NULL, NULL };
   GtkWidget            *label1;
   GtkWidget            *label2;
-  gchar                *track_label;
+  const gchar          *track_label;
   guint                 num_children[4] = { 0, 0, 0, 0 };
   gint                  i;
 
@@ -202,15 +202,12 @@ xfce_mixer_constructed (GObject *object)
   /* Create controls for all mixer tracks */
   for (iter = gst_mixer_list_tracks (GST_MIXER (mixer->card)); iter != NULL; iter = g_list_next (iter))
     {
-      track = iter->data;
+      track = GST_MIXER_TRACK (iter->data);
 
-      g_object_get (GST_MIXER_TRACK (track), "label", &track_label, NULL);
+      track_label = xfce_mixer_get_track_label (track);
 
       if (!xfce_mixer_preferences_get_control_visible (preferences, track_label))
-        {
-          g_free (track_label);
-          continue;
-        }
+        continue;
 
       /* Determine the type of the mixer track */
       type = xfce_mixer_track_type_new (track);
@@ -275,8 +272,6 @@ xfce_mixer_constructed (GObject *object)
           g_hash_table_insert (mixer->widgets, g_strdup (track_label), track_widget);
           break;
         }
-
-      g_free (track_label);
     }
 
   /* Append tab or destroy all its widgets - depending on the contents of each tab */
@@ -403,7 +398,7 @@ xfce_mixer_bus_message (GstBus     *bus,
   gboolean            muted;
   gboolean            record;
   const gchar        *option;
-  gchar              *label;
+  const gchar        *label;
   gint               *volumes;
   gint                num_channels;
 
@@ -417,10 +412,9 @@ xfce_mixer_bus_message (GstBus     *bus,
   if (type == GST_MIXER_MESSAGE_MUTE_TOGGLED)
     {
       gst_mixer_message_parse_mute_toggled (message, &track, &muted);
-      g_object_get (track, "label", &label, NULL);
+      label = xfce_mixer_get_track_label (track);
       xfce_mixer_debug ("Track '%s' was %s", label, muted ? "muted" : "unmuted");
       widget = g_hash_table_lookup (mixer->widgets, label);
-      g_free (label);
 
       if (IS_XFCE_MIXER_TRACK (widget))
         xfce_mixer_track_update_mute (XFCE_MIXER_TRACK (widget));
@@ -430,10 +424,9 @@ xfce_mixer_bus_message (GstBus     *bus,
   else if (type == GST_MIXER_MESSAGE_RECORD_TOGGLED)
     {
       gst_mixer_message_parse_record_toggled (message, &track, &record);
-      g_object_get (track, "label", &label, NULL);
+      label = xfce_mixer_get_track_label (track);
       xfce_mixer_debug ("Recording on track '%s' was %s", label, record ? "turned on" : "turned off");
       widget = g_hash_table_lookup (mixer->widgets, label);
-      g_free (label);
 
       if (IS_XFCE_MIXER_TRACK (widget))
         xfce_mixer_track_update_record (XFCE_MIXER_TRACK (widget));
@@ -443,10 +436,9 @@ xfce_mixer_bus_message (GstBus     *bus,
   else if (type == GST_MIXER_MESSAGE_VOLUME_CHANGED)
     {
       gst_mixer_message_parse_volume_changed (message, &track, &volumes, &num_channels);
-      g_object_get (track, "label", &label, NULL);
+      label = xfce_mixer_get_track_label (track);
       xfce_mixer_debug ("Volume on track '%s' changed to %i", label, volumes[0]);
       widget = g_hash_table_lookup (mixer->widgets, label);
-      g_free (label);
 
       if (IS_XFCE_MIXER_TRACK (widget))
         xfce_mixer_track_update_volume (XFCE_MIXER_TRACK (widget));
@@ -454,10 +446,9 @@ xfce_mixer_bus_message (GstBus     *bus,
   else if (type == GST_MIXER_MESSAGE_OPTION_CHANGED)
     {
       gst_mixer_message_parse_option_changed (message, &options, &option);
-      g_object_get (GST_MIXER_TRACK (options), "label", &label, NULL);
+      label = xfce_mixer_get_track_label (GST_MIXER_TRACK (options));
       xfce_mixer_debug ("Option '%s' was set to '%s'", label, option);
       widget = g_hash_table_lookup (mixer->widgets, label);
-      g_free (label);
 
       if (IS_XFCE_MIXER_OPTION (widget))
         xfce_mixer_option_update (XFCE_MIXER_OPTION (widget));


More information about the Xfce4-commits mailing list