[Goodies-commits] r3878 - xfmpc/trunk/src

Mike Massonnet mmassonnet at xfce.org
Sun Jan 27 14:55:06 CET 2008


Author: mmassonnet
Date: 2008-01-27 13:55:06 +0000 (Sun, 27 Jan 2008)
New Revision: 3878

Modified:
   xfmpc/trunk/src/interface.c
   xfmpc/trunk/src/interface.h
   xfmpc/trunk/src/mpdclient.c
   xfmpc/trunk/src/mpdclient.h
Log:
* src/mpdclient.c, src/mpdclient.h, src/interface.c, src/interface.h:
  - XfmpcMpdclient is GObjectified
  - Each new instance increments the ref count


Modified: xfmpc/trunk/src/interface.c
===================================================================
--- xfmpc/trunk/src/interface.c	2008-01-27 13:54:59 UTC (rev 3877)
+++ xfmpc/trunk/src/interface.c	2008-01-27 13:55:06 UTC (rev 3878)
@@ -67,11 +67,11 @@
   GtkWindow             parent;
   XfmpcInterfacePriv   *priv;
   XfmpcPreferences     *preferences;
+  XfmpcMpdclient       *mpdclient;
 };
 
 struct _XfmpcInterfacePriv
 {
-  XfmpcMpdclient       *mpdclient;
   GtkWidget            *button_prev;
   GtkWidget            *button_pp; /* play/pause */
   GtkWidget            *button_next;
@@ -144,10 +144,8 @@
 {
   interface->priv = g_slice_new0 (XfmpcInterfacePriv);
   interface->preferences = xfmpc_preferences_get ();
+  interface->mpdclient = xfmpc_mpdclient_new ();
 
-  /* === Mpd client === */
-  interface->priv->mpdclient = xfmpc_mpdclient_new ();
-
   /* === Window === */
   gtk_window_set_icon_name (GTK_WINDOW (interface), "stock_volume");
   gtk_window_set_title (GTK_WINDOW (interface), _("Xfmpc"));
@@ -248,11 +246,11 @@
 
   /* === Signals === */
   g_signal_connect_swapped (interface->priv->button_prev, "clicked",
-                            G_CALLBACK (xfmpc_mpdclient_previous), interface->priv->mpdclient);
+                            G_CALLBACK (xfmpc_mpdclient_previous), interface->mpdclient);
   g_signal_connect_swapped (interface->priv->button_pp, "clicked",
                             G_CALLBACK (xfmpc_interface_pp_clicked), interface);
   g_signal_connect_swapped (interface->priv->button_next, "clicked",
-                            G_CALLBACK (xfmpc_mpdclient_next), interface->priv->mpdclient);
+                            G_CALLBACK (xfmpc_mpdclient_next), interface->mpdclient);
   g_signal_connect_swapped (interface->priv->button_volume, "value-changed",
                             G_CALLBACK (xfmpc_interface_volume_changed), interface);
   g_signal_connect_swapped (progress_box, "button-press-event",
@@ -273,7 +271,7 @@
 {
   XfmpcInterface *interface = XFMPC_INTERFACE (object);
   g_object_unref (G_OBJECT (interface->preferences));
-  xfmpc_mpdclient_free (interface->priv->mpdclient);
+  g_object_unref (G_OBJECT (interface->mpdclient));
   (*G_OBJECT_CLASS (parent_class)->finalize) (object);
 }
 
@@ -302,7 +300,7 @@
 void
 xfmpc_interface_pp_clicked (XfmpcInterface *interface)
 {
-  XfmpcMpdclient *mpdclient = interface->priv->mpdclient;
+  XfmpcMpdclient *mpdclient = interface->mpdclient;
   if (G_UNLIKELY (!xfmpc_mpdclient_pp (mpdclient)))
     return;
   xfmpc_interface_set_pp (interface, xfmpc_mpdclient_is_playing (mpdclient));
@@ -327,7 +325,7 @@
   if (G_UNLIKELY (event->type != GDK_BUTTON_PRESS || event->button != 1))
     return FALSE;
 
-  XfmpcMpdclient *mpdclient = interface->priv->mpdclient;
+  XfmpcMpdclient *mpdclient = interface->mpdclient;
   gint time_total = xfmpc_mpdclient_get_total_time (mpdclient);
   if (G_UNLIKELY (time_total < 0))
     return FALSE;
@@ -345,7 +343,7 @@
                                 gdouble value)
 {
   guint8 volume = value * 100;
-  xfmpc_mpdclient_set_volume (interface->priv->mpdclient, volume);
+  xfmpc_mpdclient_set_volume (interface->mpdclient, volume);
 }
 
 void
@@ -382,12 +380,12 @@
 static gboolean
 xfmpc_interface_refresh (XfmpcInterface *interface)
 {
-  XfmpcMpdclient       *mpdclient = interface->priv->mpdclient;
+  XfmpcMpdclient       *mpdclient = interface->mpdclient;
   gchar                *text = NULL;
 
   if (G_UNLIKELY (xfmpc_mpdclient_connect (mpdclient) == FALSE))
     {
-      g_warning ("Failed to connect to MPD (host %s port %d)", mpdclient->host, mpdclient->port);
+      g_warning ("Failed to connect to MPD");
       xfmpc_mpdclient_disconnect (mpdclient);
       xfmpc_interface_set_pp (interface, FALSE);
       xfmpc_interface_set_time (interface, 0, 0);
@@ -457,7 +455,7 @@
 static gboolean
 xfmpc_interface_reconnect (XfmpcInterface *interface)
 {
-  if (G_UNLIKELY (xfmpc_mpdclient_connect (interface->priv->mpdclient) == FALSE))
+  if (G_UNLIKELY (xfmpc_mpdclient_connect (interface->mpdclient) == FALSE))
     return TRUE;
 
   /* Return FALSE to kill the reconnection timeout and start a refresh timeout */
@@ -487,7 +485,7 @@
 xfmpc_interface_action_previous (GtkAction *action,
                                  XfmpcInterface *interface)
 {
-  xfmpc_mpdclient_previous (interface->priv->mpdclient);
+  xfmpc_mpdclient_previous (interface->mpdclient);
 }
 
 static void
@@ -501,14 +499,14 @@
 xfmpc_interface_action_stop (GtkAction *action,
                              XfmpcInterface *interface)
 {
-  xfmpc_mpdclient_stop (interface->priv->mpdclient);
+  xfmpc_mpdclient_stop (interface->mpdclient);
 }
 
 static void
 xfmpc_interface_action_next (GtkAction *action,
                              XfmpcInterface *interface)
 {
-  xfmpc_mpdclient_next (interface->priv->mpdclient);
+  xfmpc_mpdclient_next (interface->mpdclient);
 }
 
 static void

Modified: xfmpc/trunk/src/interface.h
===================================================================
--- xfmpc/trunk/src/interface.h	2008-01-27 13:54:59 UTC (rev 3877)
+++ xfmpc/trunk/src/interface.h	2008-01-27 13:55:06 UTC (rev 3878)
@@ -37,8 +37,6 @@
 
 GType                   xfmpc_interface_get_type                () G_GNUC_CONST;
 
-
-
 GtkWidget *             xfmpc_interface_new                     ();
 
 void                    xfmpc_interface_set_title               (XfmpcInterface *interface,

Modified: xfmpc/trunk/src/mpdclient.c
===================================================================
--- xfmpc/trunk/src/mpdclient.c	2008-01-27 13:54:59 UTC (rev 3877)
+++ xfmpc/trunk/src/mpdclient.c	2008-01-27 13:55:06 UTC (rev 3878)
@@ -30,49 +30,140 @@
 
 
 
+static void             xfmpc_mpdclient_class_init              (XfmpcMpdclientClass *klass);
+static void             xfmpc_mpdclient_init                    (XfmpcMpdclient *mpdclient);
+static void             xfmpc_mpdclient_finalize                (GObject *object);
+
+static void             xfmpc_mpdclient_initenv                 (XfmpcMpdclient *mpdclient);
+
 static void             cb_xfmpc_mpdclient_status_changed       (MpdObj *mi,
                                                                  ChangedStatusType what,
                                                                  gpointer user_data);
 
 
 
-XfmpcMpdclient *
-xfmpc_mpdclient_new ()
+struct _XfmpcMpdclientClass
 {
-  XfmpcMpdclient *mpdclient = g_slice_new0 (XfmpcMpdclient);
+  GObjectClass          parent_class;
+};
+
+struct _XfmpcMpdclient
+{
+  GObject               parent;
+  XfmpcMpdclientPriv   *priv;
+};
+
+struct _XfmpcMpdclientPriv
+{
+  MpdObj               *mi;
+  gchar                *host;
+  guint                 port;
+  gchar                *passwd;
+
+  StatusField           status;
+};
+
+
+
+static GObjectClass *parent_class = NULL;
+
+
+
+GType
+xfmpc_mpdclient_get_type ()
+{
+  static GType xfmpc_mpdclient_type = G_TYPE_INVALID;
+
+  if (G_UNLIKELY (xfmpc_mpdclient_type == G_TYPE_INVALID))
+    {
+      static const GTypeInfo xfmpc_mpdclient_info =
+        {
+          sizeof (XfmpcMpdclientClass),
+          (GBaseInitFunc) NULL,
+          (GBaseFinalizeFunc) NULL,
+          (GClassInitFunc) xfmpc_mpdclient_class_init,
+          (GClassFinalizeFunc) NULL,
+          NULL,
+          sizeof (XfmpcMpdclient),
+          0,
+          (GInstanceInitFunc) xfmpc_mpdclient_init,
+          NULL
+        };
+      xfmpc_mpdclient_type = g_type_register_static (G_TYPE_OBJECT, "XfmpcMpdclient", &xfmpc_mpdclient_info, 0);
+    }
+
+  return xfmpc_mpdclient_type;
+}
+
+
+
+static void
+xfmpc_mpdclient_class_init (XfmpcMpdclientClass *klass)
+{
+  GObjectClass *gobject_class;
+
+  parent_class = g_type_class_peek_parent (klass);
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize = xfmpc_mpdclient_finalize;
+}
+
+static void
+xfmpc_mpdclient_init (XfmpcMpdclient *mpdclient)
+{
+  mpdclient->priv = g_slice_new0 (XfmpcMpdclientPriv);
   xfmpc_mpdclient_initenv (mpdclient);
-  mpdclient->mi = mpd_new (mpdclient->host, mpdclient->port, mpdclient->passwd);
-  mpd_signal_connect_status_changed (mpdclient->mi, (StatusChangedCallback)cb_xfmpc_mpdclient_status_changed, mpdclient);
-  return mpdclient;
+  mpdclient->priv->mi = mpd_new (mpdclient->priv->host, mpdclient->priv->port, mpdclient->priv->passwd);
+  mpd_signal_connect_status_changed (mpdclient->priv->mi, (StatusChangedCallback)cb_xfmpc_mpdclient_status_changed, mpdclient);
 }
 
-void
-xfmpc_mpdclient_free (XfmpcMpdclient *mpdclient)
+static void
+xfmpc_mpdclient_finalize (GObject *object)
 {
-  mpd_free (mpdclient->mi);
+  XfmpcMpdclient *mpdclient = XFMPC_MPDCLIENT (object);
+  mpd_free (mpdclient->priv->mi);
+  (*G_OBJECT_CLASS (parent_class)->finalize) (object);
 }
 
-void
+
+
+XfmpcMpdclient *
+xfmpc_mpdclient_new ()
+{
+  static XfmpcMpdclient *mpdclient = NULL;
+
+  if (G_UNLIKELY (NULL == mpdclient))
+    {
+      mpdclient = g_object_new (XFMPC_TYPE_MPDCLIENT, NULL);
+      g_object_add_weak_pointer (G_OBJECT (mpdclient), (gpointer)&mpdclient);
+    }
+  else
+    g_object_ref (G_OBJECT (mpdclient));
+
+  return mpdclient;
+}
+
+static void
 xfmpc_mpdclient_initenv (XfmpcMpdclient *mpdclient)
 {
   /* Hostname */
-  mpdclient->host = (g_getenv ("MPD_HOST") != NULL) ?
+  mpdclient->priv->host = (g_getenv ("MPD_HOST") != NULL) ?
       g_strdup (g_getenv ("MPD_HOST")) :
       g_strdup (MPD_HOST);
 
   /* Port */
-  mpdclient->port = (g_getenv ("MPD_PORT") != NULL) ?
+  mpdclient->priv->port = (g_getenv ("MPD_PORT") != NULL) ?
       (gint) g_ascii_strtoll (g_getenv ("MPD_PORT"), NULL, 0) :
       MPD_PORT;
 
   /* Check for password */
-  mpdclient->passwd = NULL;
-  gchar **split = g_strsplit (mpdclient->host, "@", 2);
+  mpdclient->priv->passwd = NULL;
+  gchar **split = g_strsplit (mpdclient->priv->host, "@", 2);
   if (g_strv_length (split) == 2)
     {
-      g_free (mpdclient->host);
-      mpdclient->host = g_strdup (split[0]);
-      mpdclient->passwd = g_strdup (split[1]);
+      g_free (mpdclient->priv->host);
+      mpdclient->priv->host = g_strdup (split[0]);
+      mpdclient->priv->passwd = g_strdup (split[1]);
     }
   g_strfreev (split);
 }
@@ -83,10 +174,10 @@
   if (xfmpc_mpdclient_is_connected (mpdclient))
     return TRUE;
 
-  if (mpd_connect (mpdclient->mi) != MPD_OK)
+  if (mpd_connect (mpdclient->priv->mi) != MPD_OK)
     return FALSE;
 
-  mpd_send_password (mpdclient->mi);
+  mpd_send_password (mpdclient->priv->mi);
 
   return TRUE;
 }
@@ -95,19 +186,19 @@
 xfmpc_mpdclient_disconnect (XfmpcMpdclient *mpdclient)
 {
   if (xfmpc_mpdclient_is_connected (mpdclient))
-    mpd_disconnect (mpdclient->mi);
+    mpd_disconnect (mpdclient->priv->mi);
 }
 
 gboolean
 xfmpc_mpdclient_is_connected (XfmpcMpdclient *mpdclient)
 {
-  return mpd_check_connected (mpdclient->mi);
+  return mpd_check_connected (mpdclient->priv->mi);
 }
 
 gboolean
 xfmpc_mpdclient_previous (XfmpcMpdclient *mpdclient)
 {
-  if (mpd_player_prev (mpdclient->mi) != MPD_OK)
+  if (mpd_player_prev (mpdclient->priv->mi) != MPD_OK)
     return FALSE;
   else
     return TRUE;
@@ -125,7 +216,7 @@
 gboolean
 xfmpc_mpdclient_play (XfmpcMpdclient *mpdclient)
 {
-  if (mpd_player_play (mpdclient->mi) != MPD_OK)
+  if (mpd_player_play (mpdclient->priv->mi) != MPD_OK)
     return FALSE;
   else
     return TRUE;
@@ -134,7 +225,7 @@
 gboolean
 xfmpc_mpdclient_pause (XfmpcMpdclient *mpdclient)
 {
-  if (mpd_player_pause (mpdclient->mi) != MPD_OK)
+  if (mpd_player_pause (mpdclient->priv->mi) != MPD_OK)
     return FALSE;
   else
     return TRUE;
@@ -143,7 +234,7 @@
 gboolean
 xfmpc_mpdclient_stop (XfmpcMpdclient *mpdclient)
 {
-  if (mpd_player_stop (mpdclient->mi) != MPD_OK)
+  if (mpd_player_stop (mpdclient->priv->mi) != MPD_OK)
     return FALSE;
   else
     return TRUE;
@@ -152,7 +243,7 @@
 gboolean
 xfmpc_mpdclient_next (XfmpcMpdclient *mpdclient)
 {
-  if (mpd_player_next (mpdclient->mi) != MPD_OK)
+  if (mpd_player_next (mpdclient->priv->mi) != MPD_OK)
     return FALSE;
   else
     return TRUE;
@@ -162,7 +253,7 @@
 xfmpc_mpdclient_set_volume (XfmpcMpdclient *mpdclient,
                             guint8 volume)
 {
-  if (mpd_status_set_volume (mpdclient->mi, volume) < 0)
+  if (mpd_status_set_volume (mpdclient->priv->mi, volume) < 0)
     return FALSE;
   else
     return TRUE;
@@ -172,7 +263,7 @@
 xfmpc_mpdclient_set_song_time (XfmpcMpdclient *mpdclient,
                                guint time)
 {
-  if (mpd_player_seek (mpdclient->mi, time) != MPD_OK)
+  if (mpd_player_seek (mpdclient->priv->mi, time) != MPD_OK)
     return FALSE;
   else
     return TRUE;
@@ -181,7 +272,7 @@
 const gchar *
 xfmpc_mpdclient_get_artist (XfmpcMpdclient *mpdclient)
 {
-  mpd_Song *song = mpd_playlist_get_current_song (mpdclient->mi);
+  mpd_Song *song = mpd_playlist_get_current_song (mpdclient->priv->mi);
   if (G_UNLIKELY (NULL == song))
     return NULL;
 
@@ -194,7 +285,7 @@
 const gchar *
 xfmpc_mpdclient_get_title (XfmpcMpdclient *mpdclient)
 {
-  mpd_Song *song = mpd_playlist_get_current_song (mpdclient->mi);
+  mpd_Song *song = mpd_playlist_get_current_song (mpdclient->priv->mi);
   if (G_UNLIKELY (NULL == song))
     return NULL;
 
@@ -207,7 +298,7 @@
 const gchar *
 xfmpc_mpdclient_get_album (XfmpcMpdclient *mpdclient)
 {
-  mpd_Song *song = mpd_playlist_get_current_song (mpdclient->mi);
+  mpd_Song *song = mpd_playlist_get_current_song (mpdclient->priv->mi);
   if (G_UNLIKELY (NULL == song))
     return NULL;
 
@@ -220,7 +311,7 @@
 const gchar *
 xfmpc_mpdclient_get_date (XfmpcMpdclient *mpdclient)
 {
-  mpd_Song *song = mpd_playlist_get_current_song (mpdclient->mi);
+  mpd_Song *song = mpd_playlist_get_current_song (mpdclient->priv->mi);
   if (G_UNLIKELY (NULL == song))
     return NULL;
 
@@ -233,47 +324,47 @@
 gint
 xfmpc_mpdclient_get_time (XfmpcMpdclient *mpdclient)
 {
-  return mpd_status_get_elapsed_song_time (mpdclient->mi);
+  return mpd_status_get_elapsed_song_time (mpdclient->priv->mi);
 }
 
 gint
 xfmpc_mpdclient_get_total_time (XfmpcMpdclient *mpdclient)
 {
-  return mpd_status_get_total_song_time (mpdclient->mi);
+  return mpd_status_get_total_song_time (mpdclient->priv->mi);
 }
 
 guint8
 xfmpc_mpdclient_get_volume (XfmpcMpdclient *mpdclient)
 {
-  gint volume = mpd_status_get_volume (mpdclient->mi);
+  gint volume = mpd_status_get_volume (mpdclient->priv->mi);
   return (volume < 0) ? 100 : volume;
 }
 
 gboolean
 xfmpc_mpdclient_is_playing (XfmpcMpdclient *mpdclient)
 {
-  return mpd_player_get_state (mpdclient->mi) == MPD_PLAYER_PLAY;
+  return mpd_player_get_state (mpdclient->priv->mi) == MPD_PLAYER_PLAY;
 }
 
 gboolean
 xfmpc_mpdclient_is_stopped (XfmpcMpdclient *mpdclient)
 {
-  return mpd_player_get_state (mpdclient->mi) == MPD_PLAYER_STOP;
+  return mpd_player_get_state (mpdclient->priv->mi) == MPD_PLAYER_STOP;
 }
 
 void
 xfmpc_mpdclient_update_status (XfmpcMpdclient *mpdclient)
 {
-  mpd_status_update (mpdclient->mi);
+  mpd_status_update (mpdclient->priv->mi);
 }
 
 gboolean
 xfmpc_mpdclient_status (XfmpcMpdclient *mpdclient,
                         gint bits)
 {
-  if (mpdclient->status & bits)
+  if (mpdclient->priv->status & bits)
     {
-      mpdclient->status &= ~bits;
+      mpdclient->priv->status &= ~bits;
       return TRUE;
     }
 
@@ -293,16 +384,16 @@
       switch (mpd_player_get_state (mi))
         {
         case MPD_PLAYER_STOP:
-          mpdclient->status |= STOP_CHANGED;
-          mpdclient->status |= SONG_CHANGED; /* as to say that the next time
-                                                the song plays again, it needs
-                                                to update its title in the
-                                                interface */
+          mpdclient->priv->status |= STOP_CHANGED;
+          mpdclient->priv->status |= SONG_CHANGED; /* as to say that the next time
+                                                      the song plays again, it needs
+                                                      to update its title in the
+                                                      interface */
           break;
 
         case MPD_PLAYER_PLAY:
         case MPD_PLAYER_PAUSE:
-          mpdclient->status |= PP_CHANGED;
+          mpdclient->priv->status |= PP_CHANGED;
           break;
 
         default:
@@ -311,12 +402,12 @@
     }
 
   if (what & MPD_CST_SONGID)
-    mpdclient->status |= SONG_CHANGED;
+    mpdclient->priv->status |= SONG_CHANGED;
 
   if (what & MPD_CST_VOLUME)
-    mpdclient->status |= VOLUME_CHANGED;
+    mpdclient->priv->status |= VOLUME_CHANGED;
 
   if (what & (MPD_CST_ELAPSED_TIME|MPD_CST_TOTAL_TIME))
-    mpdclient->status |= TIME_CHANGED;
+    mpdclient->priv->status |= TIME_CHANGED;
 }
 

Modified: xfmpc/trunk/src/mpdclient.h
===================================================================
--- xfmpc/trunk/src/mpdclient.h	2008-01-27 13:54:59 UTC (rev 3877)
+++ xfmpc/trunk/src/mpdclient.h	2008-01-27 13:55:06 UTC (rev 3878)
@@ -19,11 +19,18 @@
 #ifndef __XFMPC_MPDCLIENT_H__
 #define __XFMPC_MPDCLIENT_H__
 
-#include <glib.h>
-#include <libmpd/libmpd.h>
-
 G_BEGIN_DECLS
 
+#define XFMPC_TYPE_MPDCLIENT                (xfmpc_mpdclient_get_type())
+
+#define XFMPC_MPDCLIENT(obj)                (G_TYPE_CHECK_INSTANCE_CAST ((obj), XFMPC_TYPE_MPDCLIENT, XfmpcMpdclient))
+#define XFMPC_MPDCLIENT_CLASS(klass)        (G_TYPE_CHECK_CLASS_CAST ((klass), XFMPC_TYPE_MPDCLIENT, XfmpcMpdclientClass))
+
+#define XFMPC_IS_MPDCLIENT(obj)             (G_TYPE_CHECK_INSTANCE_TYPE ((obj), XFMPC_TYPE_MPDCLIENT))
+#define XFMPC_IS_MPDCLIENT_CLASS(klass)     (G_TYPE_CHECK_CLASS_TYPE ((klass), XFMPC_TYPE_MPDCLIENT))
+
+#define XFMPC_MPDCLIENT_GET_CLASS(obj)      (G_TYPE_INSTANCE_GET_CLASS ((obj), XFMPC_TYPE_MPDCLIENT, XfmpcMpdclientClass))
+
 typedef enum
 {
   STOP_CHANGED          = 1 << 0,
@@ -33,30 +40,20 @@
   TIME_CHANGED          = 1 << 4,
 } StatusField;
 
-typedef struct _XfmpcMpdclient          XfmpcMpdclient;
+typedef struct _XfmpcMpdclientClass         XfmpcMpdclientClass;
+typedef struct _XfmpcMpdclient              XfmpcMpdclient;
+typedef struct _XfmpcMpdclientPriv          XfmpcMpdclientPriv;
 
-struct _XfmpcMpdclient
-{
-  MpdObj               *mi;
-  gchar                *host;
-  guint                 port;
-  gchar                *passwd;
+GType                   xfmpc_mpdclient_get_type                () G_GNUC_CONST;
 
-  StatusField           status;
-};
-
 XfmpcMpdclient *        xfmpc_mpdclient_new                     ();
 
-void                    xfmpc_mpdclient_initenv                 (XfmpcMpdclient *mpdclient);
-
 gboolean                xfmpc_mpdclient_connect                 (XfmpcMpdclient *mpdclient);
 
 void                    xfmpc_mpdclient_disconnect              (XfmpcMpdclient *mpdclient);
 
 gboolean                xfmpc_mpdclient_is_connected            (XfmpcMpdclient *mpdclient);
 
-void                    xfmpc_mpdclient_free                    (XfmpcMpdclient *mpdclient);
-
 gboolean                xfmpc_mpdclient_previous                (XfmpcMpdclient *mpdclient);
 
 gboolean                xfmpc_mpdclient_pp                      (XfmpcMpdclient *mpdclient);




More information about the Goodies-commits mailing list