]> git.pld-linux.org Git - packages/rhythmbox.git/commitdiff
- updated dependencies, added optional patch with libdmapsharing4 support
authorJakub Bogusz <qboosh@pld-linux.org>
Sat, 27 Jul 2019 08:54:30 +0000 (10:54 +0200)
committerJakub Bogusz <qboosh@pld-linux.org>
Sat, 27 Jul 2019 08:54:30 +0000 (10:54 +0200)
rhythmbox-libdmapsharing4.patch [new file with mode: 0644]
rhythmbox.spec

diff --git a/rhythmbox-libdmapsharing4.patch b/rhythmbox-libdmapsharing4.patch
new file mode 100644 (file)
index 0000000..bec195b
--- /dev/null
@@ -0,0 +1,1196 @@
+From 5c132de76fbd971cec00efb193a6e61d0ef3e447 Mon Sep 17 00:00:00 2001
+From: "W. Michael Petullo" <mike@flyn.org>
+Date: Thu, 12 Jul 2018 00:07:38 -0400
+Subject: [PATCH] Port DAAP plugin to libdmapsharing-4.0 API
+
+Signed-off-by: W. Michael Petullo <mike@flyn.org>
+---
+ configure.ac                                  |   2 +-
+ plugins/daap/rb-daap-container-record.c       |  14 +--
+ plugins/daap/rb-daap-container-record.h       |  13 +-
+ plugins/daap/rb-daap-plugin.c                 | 112 ++++++++++++------
+ plugins/daap/rb-daap-record-factory.c         |  13 +-
+ plugins/daap/rb-daap-record-factory.h         |   2 +-
+ plugins/daap/rb-daap-record.c                 |  12 +-
+ plugins/daap/rb-daap-record.h                 |  12 +-
+ plugins/daap/rb-daap-sharing.c                |   8 +-
+ plugins/daap/rb-daap-source.c                 |  44 +++----
+ plugins/daap/rb-dacp-pairing-page.c           |  64 +++++-----
+ plugins/daap/rb-dacp-pairing-page.h           |   4 +-
+ plugins/daap/rb-dacp-player.c                 |  54 ++++-----
+ plugins/daap/rb-dacp-player.h                 |   2 +-
+ plugins/daap/rb-dmap-container-db-adapter.c   |  22 ++--
+ plugins/daap/rb-rhythmdb-dmap-db-adapter.c    |  22 ++--
+ .../rb-rhythmdb-query-model-dmap-db-adapter.c |  22 ++--
+ 17 files changed, 230 insertions(+), 192 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index cf696e945..93634c6de 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -632,7 +632,7 @@ AC_ARG_ENABLE(daap,
+                             [Disable DAAP support]),,
+               enable_daap=auto)
+ if test "x$enable_daap" != "xno"; then
+-      PKG_CHECK_MODULES(DMAPSHARING, libdmapsharing-3.0 >= 2.9.19,
++      PKG_CHECK_MODULES(DMAPSHARING, libdmapsharing-4.0,
+                         have_libdmapsharing=yes,
+                         have_libdmapsharing=no)
+       if test "x$have_libdmapsharing" = "xno" -a "x$enable_daap" = "xyes"; then
+diff --git a/plugins/daap/rb-daap-container-record.c b/plugins/daap/rb-daap-container-record.c
+index 7bb63ab70..e167b6012 100644
+--- a/plugins/daap/rb-daap-container-record.c
++++ b/plugins/daap/rb-daap-container-record.c
+@@ -87,20 +87,20 @@ rb_daap_container_record_get_property (GObject *object,
+ }
+ guint
+-rb_daap_container_record_get_id (DMAPContainerRecord *record)
++rb_daap_container_record_get_id (DmapContainerRecord *record)
+ {
+       return GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (RB_DAAP_CONTAINER_RECORD (record)->priv->source), "daap_id"));
+ }
+ void
+-rb_daap_container_record_add_entry (DMAPContainerRecord *container_record,
+-                                       DMAPRecord *record, gint id)
++rb_daap_container_record_add_entry (DmapContainerRecord *container_record,
++                                    DmapRecord *record, gint id, GError **error)
+ {
+       g_error ("Unimplemented");
+ }
+ guint64
+-rb_daap_container_record_get_entry_count (DMAPContainerRecord *record)
++rb_daap_container_record_get_entry_count (DmapContainerRecord *record)
+ {
+       RhythmDBQueryModel *model;
+       guint64 count;
+@@ -113,8 +113,8 @@ rb_daap_container_record_get_entry_count (DMAPContainerRecord *record)
+       return count;
+ }
+-DMAPDb *
+-rb_daap_container_record_get_entries (DMAPContainerRecord *record)
++DmapDb *
++rb_daap_container_record_get_entries (DmapContainerRecord *record)
+ {
+       RhythmDBQueryModel *model;
+       g_object_get (RB_DAAP_CONTAINER_RECORD (record)->priv->source,
+@@ -152,7 +152,7 @@ rb_daap_container_record_class_finalize (RBDAAPContainerRecordClass *klass)
+ static void
+ rb_daap_container_record_daap_iface_init (gpointer iface, gpointer data)
+ {
+-      DMAPContainerRecordIface *dmap_container_record = iface;
++      DmapContainerRecordInterface *dmap_container_record = iface;
+       g_assert (G_TYPE_FROM_INTERFACE (dmap_container_record) == DMAP_TYPE_CONTAINER_RECORD);
+diff --git a/plugins/daap/rb-daap-container-record.h b/plugins/daap/rb-daap-container-record.h
+index fc068b321..b21d78c7b 100644
+--- a/plugins/daap/rb-daap-container-record.h
++++ b/plugins/daap/rb-daap-container-record.h
+@@ -57,15 +57,16 @@ typedef struct {
+ GType rb_daap_container_record_get_type (void);
+-guint         rb_daap_container_record_get_id          (DMAPContainerRecord *record);
++guint         rb_daap_container_record_get_id          (DmapContainerRecord *record);
+-void        rb_daap_container_record_add_entry       (DMAPContainerRecord *container_record,
+-                                                      DMAPRecord *record,
+-                                                      gint id);
++void        rb_daap_container_record_add_entry       (DmapContainerRecord *container_record,
++                                                      DmapRecord *record,
++                                                      gint id,
++                                                      GError **error);
+-guint64       rb_daap_container_record_get_entry_count (DMAPContainerRecord *record);
++guint64       rb_daap_container_record_get_entry_count (DmapContainerRecord *record);
+-DMAPDb *rb_daap_container_record_get_entries     (DMAPContainerRecord *record);
++DmapDb *rb_daap_container_record_get_entries     (DmapContainerRecord *record);
+ RBDAAPContainerRecord *rb_daap_container_record_new (char *name,
+                                                    RBPlaylistSource *model);
+diff --git a/plugins/daap/rb-daap-plugin.c b/plugins/daap/rb-daap-plugin.c
+index 5e5af17e8..acd292509 100644
+--- a/plugins/daap/rb-daap-plugin.c
++++ b/plugins/daap/rb-daap-plugin.c
+@@ -94,9 +94,9 @@ struct _RBDaapPlugin
+       GSimpleAction *new_share_action;
+-      DMAPMdnsBrowser *mdns_browser;
++      DmapMdnsBrowser *mdns_browser;
+-      DACPShare *dacp_share;
++      DmapControlShare *dacp_share;
+       GHashTable *source_lookup;
+@@ -207,7 +207,8 @@ impl_activate (PeasActivatable *bplugin)
+       plugin->dacp_share = rb_daap_create_dacp_share (G_OBJECT (plugin));
+       if (g_settings_get_boolean (plugin->dacp_settings, "enable-remote")) {
+-              dacp_share_start_lookup (plugin->dacp_share);
++              GError *error = NULL;
++              dmap_control_share_start_lookup (plugin->dacp_share, &error);
+       }
+       register_daap_dbus_iface (plugin);
+@@ -291,33 +292,45 @@ find_source_by_service_name (RBDaapPlugin *plugin,
+ }
+ static void
+-mdns_service_added (DMAPMdnsBrowser *browser,
+-                  DMAPMdnsBrowserService *service,
++mdns_service_added (DmapMdnsBrowser *browser,
++                  DmapMdnsService *service,
+                   RBDaapPlugin *plugin)
+ {
+       RBSource *source;
+       RBShell *shell;
++      gchar *service_name = NULL;
++        gchar *name         = NULL;
++        gchar *host         = NULL;
++        guint port;
++        gboolean password_protected;
++
++      g_object_get(service, "service-name", &service_name,
++                            "name", &name,
++                            "host", &host,
++                            "port", &port,
++                            "password-protected", &password_protected,
++                             NULL);
+       rb_debug ("New service: %s name=%s host=%s port=%u password=%d",
+-                 service->service_name,
+-                 service->name,
+-                 service->host,
+-                 service->port,
+-                 service->password_protected);
++                 service_name,
++                 name,
++                 host,
++                 port,
++                 password_protected);
+-      source = find_source_by_service_name (plugin, service->service_name);
++      source = find_source_by_service_name (plugin, service_name);
+       if (source == NULL) {
+               g_object_get (plugin, "object", &shell, NULL);
+               source = rb_daap_source_new (shell,
+                                            G_OBJECT (plugin),
+-                                           service->service_name,
+-                                           service->name,
+-                                           service->host,
+-                                           service->port,
+-                                           service->password_protected);
+-              g_hash_table_insert (plugin->source_lookup, g_strdup (service->service_name), source);
++                                           service_name,
++                                           name,
++                                           host,
++                                           port,
++                                           password_protected);
++              g_hash_table_insert (plugin->source_lookup, g_strdup(service_name), source);
+               rb_shell_append_display_page (shell,
+                                             RB_DISPLAY_PAGE (source),
+                                             RB_DISPLAY_PAGE_GROUP_SHARED);
+@@ -325,16 +338,20 @@ mdns_service_added (DMAPMdnsBrowser *browser,
+               g_object_unref (shell);
+       } else {
+               g_object_set (source,
+-                            "name", service->name,
+-                            "host", service->host,
+-                            "port", service->port,
+-                            "password-protected", service->password_protected,
++                            "name", name,
++                            "host", host,
++                            "port", port,
++                            "password-protected", password_protected,
+                             NULL);
+       }
++
++      g_free (service_name);
++      g_free (name);
++      g_free (host);
+ }
+ static void
+-mdns_service_removed (DMAPMdnsBrowser *browser,
++mdns_service_removed (DmapMdnsBrowser *browser,
+                     const char        *service_name,
+                     RBDaapPlugin      *plugin)
+ {
+@@ -370,7 +387,7 @@ start_browsing (RBDaapPlugin *plugin)
+               return;
+       }
+-      plugin->mdns_browser = dmap_mdns_browser_new (DMAP_MDNS_BROWSER_SERVICE_TYPE_DAAP);
++      plugin->mdns_browser = dmap_mdns_browser_new (DMAP_MDNS_SERVICE_TYPE_DAAP);
+       if (plugin->mdns_browser == NULL) {
+               g_warning ("Unable to start mDNS browsing");
+               return;
+@@ -432,10 +449,11 @@ static void
+ dacp_settings_changed_cb (GSettings *settings, const char *key, RBDaapPlugin *plugin)
+ {
+       if (g_strcmp0 (key, "enable-remote") == 0) {
++              GError *error = NULL;
+               if (g_settings_get_boolean (settings, key)) {
+-                      dacp_share_start_lookup (plugin->dacp_share);
++                      dmap_control_share_start_lookup (plugin->dacp_share, &error);
+               } else {
+-                      dacp_share_stop_lookup (plugin->dacp_share);
++                      dmap_control_share_stop_lookup (plugin->dacp_share, &error);
+               }
+       }
+ }
+@@ -473,7 +491,7 @@ new_daap_share_location_added_cb (RBURIDialog *dialog,
+       char *host;
+       char *p;
+       int port = 3689;
+-      DMAPMdnsBrowserService service;
++      DmapMdnsService *service;
+       host = g_strdup (location);
+       p = strrchr (host, ':');
+@@ -483,17 +501,20 @@ new_daap_share_location_added_cb (RBURIDialog *dialog,
+       }
+       rb_debug ("adding manually specified DAAP share at %s", location);
+-      service.name = (char *) location;
+-      service.host = (char *) host;
+-      service.service_name = service.name;
+-      service.port = port;
+-      service.password_protected = FALSE;
++      service = g_object_new (DMAP_TYPE_MDNS_SERVICE,
++                             "service-name", location,
++                             "name", location,
++                             "host", host,
++                             "port", port,
++                             "password-protected", false,
++                              NULL);
++
+       mdns_service_added (NULL,
+-                          &service,
++                          service,
+                           plugin);
+       g_free (host);
+-
++      g_object_unref(service);
+ }
+ static void
+@@ -778,16 +799,29 @@ daap_dbus_method_call (GDBusConnection *connection,
+       }
+       if (g_strcmp0 (method_name, "AddDAAPSource") == 0) {
+-              DMAPMdnsBrowserService service = {0,};
+-              g_variant_get (parameters, "(&s&su)", &service.name, &service.host, &service.port);
+-              service.password_protected = FALSE;
+-              service.service_name = service.name;
++              DmapMdnsService *service;
++              gchar *name = NULL;
++              gchar *host = NULL;
++              guint port;
++
++              g_variant_get (parameters, "(&s&su)", &name, &host, &port);
++
++              service = g_object_new (DMAP_TYPE_MDNS_SERVICE,
++                                     "service-name", name,
++                                     "name", name,
++                                     "host", host,
++                                     "port", port,
++                                     "password-protected", FALSE,
++                                      NULL);
+-              rb_debug ("adding DAAP source %s (%s:%d)", service.name, service.host, service.port);
+-              mdns_service_added (NULL, &service, plugin);
++              rb_debug ("adding DAAP source %s (%s:%d)", name, host, port);
++              mdns_service_added (NULL, service, plugin);
+               g_dbus_method_invocation_return_value (invocation, NULL);
++              g_free(name);
++              g_free(host);
++              g_object_unref(service);
+       } else if (g_strcmp0 (method_name, "RemoveDAAPSource") == 0) {
+               const char *service_name;
+diff --git a/plugins/daap/rb-daap-record-factory.c b/plugins/daap/rb-daap-record-factory.c
+index 35d920ead..2b56e4d4c 100644
+--- a/plugins/daap/rb-daap-record-factory.c
++++ b/plugins/daap/rb-daap-record-factory.c
+@@ -31,13 +31,14 @@
+ #include "rb-daap-record-factory.h"
+ #include "rb-daap-record.h"
+-DMAPRecord *
+-rb_daap_record_factory_create  (DMAPRecordFactory *factory,
+-                              gpointer user_data)
++DmapRecord *
++rb_daap_record_factory_create  (DmapRecordFactory *factory,
++                                gpointer user_data,
++                                GError **error)
+ {
+-      DAAPRecord *record;
++      DmapAvRecord *record;
+-      record = DAAP_RECORD (rb_daap_record_new ((RhythmDBEntry *) user_data));
++      record = DMAP_AV_RECORD (rb_daap_record_new ((RhythmDBEntry *) user_data));
+       return (DMAP_RECORD (record));
+ }
+@@ -60,7 +61,7 @@ rb_daap_record_factory_class_finalize (RBDAAPRecordFactoryClass *klass)
+ static void
+ rb_daap_record_factory_interface_init (gpointer iface, gpointer data)
+ {
+-      DMAPRecordFactoryIface *factory = iface;
++      DmapRecordFactoryInterface *factory = iface;
+       g_assert (G_TYPE_FROM_INTERFACE (factory) == DMAP_TYPE_RECORD_FACTORY);
+diff --git a/plugins/daap/rb-daap-record-factory.h b/plugins/daap/rb-daap-record-factory.h
+index f0b6bf018..863fbe708 100644
+--- a/plugins/daap/rb-daap-record-factory.h
++++ b/plugins/daap/rb-daap-record-factory.h
+@@ -60,7 +60,7 @@ GType                  rb_daap_record_factory_get_type (void);
+ RBDAAPRecordFactory *rb_daap_record_factory_new      (void);
+-DMAPRecord            *rb_daap_record_factory_create   (DMAPRecordFactory *factory, gpointer user_data);
++DmapRecord            *rb_daap_record_factory_create   (DmapRecordFactory *factory, gpointer user_data, GError **error);
+ void                   _rb_daap_record_factory_register_type (GTypeModule *module);
+diff --git a/plugins/daap/rb-daap-record.c b/plugins/daap/rb-daap-record.c
+index 5ecb885e7..1b92504b7 100644
+--- a/plugins/daap/rb-daap-record.c
++++ b/plugins/daap/rb-daap-record.c
+@@ -252,7 +252,7 @@ rb_daap_record_get_property (GObject *object,
+ }
+ gboolean
+-rb_daap_record_itunes_compat (DAAPRecord *record)
++rb_daap_record_itunes_compat (DmapAvRecord *record)
+ {
+       const gchar *format = RB_DAAP_RECORD (record)->priv->real_format;
+@@ -263,7 +263,7 @@ rb_daap_record_itunes_compat (DAAPRecord *record)
+ }
+ GInputStream *
+-rb_daap_record_read (DAAPRecord *record, GError **error)
++rb_daap_record_read (DmapAvRecord *record, GError **error)
+ {
+       GFile *file;
+       GInputStream *fnval = NULL;
+@@ -351,9 +351,9 @@ rb_daap_record_class_finalize (RBDAAPRecordClass *klass)
+ static void
+ rb_daap_record_daap_iface_init (gpointer iface, gpointer data)
+ {
+-      DAAPRecordIface *daap_record = iface;
++      DmapAvRecordInterface *daap_record = iface;
+-      g_assert (G_TYPE_FROM_INTERFACE (daap_record) == DAAP_TYPE_RECORD);
++      g_assert (G_TYPE_FROM_INTERFACE (daap_record) == DMAP_TYPE_AV_RECORD);
+       daap_record->itunes_compat = rb_daap_record_itunes_compat;
+       daap_record->read = rb_daap_record_read;
+@@ -362,7 +362,7 @@ rb_daap_record_daap_iface_init (gpointer iface, gpointer data)
+ static void
+ rb_daap_record_dmap_iface_init (gpointer iface, gpointer data)
+ {
+-      DMAPRecordIface *dmap_record = iface;
++      DmapRecordInterface *dmap_record = iface;
+       g_assert (G_TYPE_FROM_INTERFACE (dmap_record) == DMAP_TYPE_RECORD);
+ }
+@@ -371,7 +371,7 @@ G_DEFINE_DYNAMIC_TYPE_EXTENDED (RBDAAPRecord,
+                               rb_daap_record,
+                               G_TYPE_OBJECT,
+                               0,
+-                              G_IMPLEMENT_INTERFACE_DYNAMIC (DAAP_TYPE_RECORD, rb_daap_record_daap_iface_init)
++                              G_IMPLEMENT_INTERFACE_DYNAMIC (DMAP_TYPE_AV_RECORD, rb_daap_record_daap_iface_init)
+                               G_IMPLEMENT_INTERFACE_DYNAMIC (DMAP_TYPE_RECORD, rb_daap_record_dmap_iface_init))
+ static void
+diff --git a/plugins/daap/rb-daap-record.h b/plugins/daap/rb-daap-record.h
+index 1f128a399..ba941cb6e 100644
+--- a/plugins/daap/rb-daap-record.h
++++ b/plugins/daap/rb-daap-record.h
+@@ -57,15 +57,15 @@ GType rb_daap_record_get_type (void);
+ RBDAAPRecord *rb_daap_record_new (RhythmDBEntry *entry);
+-gint          rb_daap_record_get_id          (DAAPRecord *record);
++gint          rb_daap_record_get_id          (DmapAvRecord *record);
+-gboolean      rb_daap_record_itunes_compat   (DAAPRecord *record);
++gboolean      rb_daap_record_itunes_compat   (DmapAvRecord *record);
+-void          rb_daap_record_set_transcode_format (DAAPRecord *record,
+-                                                    const gint format);
++void          rb_daap_record_set_transcode_format (DmapAvRecord *record,
++                                                   const gint format);
+-GInputStream *rb_daap_record_read            (DAAPRecord *record,
+-                                               GError **err);
++GInputStream *rb_daap_record_read            (DmapAvRecord *record,
++                                              GError **err);
+ void          _rb_daap_record_register_type  (GTypeModule *module);
+diff --git a/plugins/daap/rb-daap-sharing.c b/plugins/daap/rb-daap-sharing.c
+index 63e5dbc7e..80196661f 100644
+--- a/plugins/daap/rb-daap-sharing.c
++++ b/plugins/daap/rb-daap-sharing.c
+@@ -45,7 +45,7 @@
+ #include <libdmapsharing/dmap.h>
+-static DAAPShare *share = NULL;
++static DmapAvShare *share = NULL;
+ static GSettings *settings = NULL;
+ char *
+@@ -79,8 +79,8 @@ static void
+ create_share (RBShell *shell)
+ {
+       RhythmDB *rdb;
+-      DMAPDb *db;
+-      DMAPContainerDb *container_db;
++      DmapDb *db;
++      DmapContainerDb *container_db;
+       RBPlaylistManager *playlist_manager;
+       char *name;
+       char *password;
+@@ -108,7 +108,7 @@ create_share (RBShell *shell)
+               password = NULL;
+       }
+-      share = daap_share_new (name, password, db, container_db, NULL);
++      share = dmap_av_share_new (name, password, db, container_db, NULL);
+       g_settings_bind_with_mapping (settings, "share-name",
+                                     share, "name",
+diff --git a/plugins/daap/rb-daap-source.c b/plugins/daap/rb-daap-source.c
+index ef30cd8fa..a43bf8513 100644
+--- a/plugins/daap/rb-daap-source.c
++++ b/plugins/daap/rb-daap-source.c
+@@ -377,7 +377,7 @@ rb_daap_source_new (RBShell *shell,
+ typedef struct {
+       RBDAAPSource *source;
+-      DMAPConnection *connection;
++      DmapConnection *connection;
+       SoupSession *session;
+       SoupMessage *message;
+       SoupAuth *auth;
+@@ -479,7 +479,7 @@ ask_password (RBDAAPSource *source,
+ }
+ static void
+-connection_auth_cb (DMAPConnection *connection,
++connection_auth_cb (DmapConnection *connection,
+                     const char     *name,
+                     SoupSession    *session,
+                     SoupMessage    *msg,
+@@ -517,8 +517,8 @@ connection_auth_cb (DMAPConnection *connection,
+ }
+ static void
+-connection_connecting_cb (DMAPConnection       *connection,
+-                        DMAPConnectionState   state,
++connection_connecting_cb (DmapConnection       *connection,
++                        DmapConnectionState   state,
+                         float                 progress,
+                         RBDAAPSource         *source)
+ {
+@@ -535,7 +535,7 @@ connection_connecting_cb (DMAPConnection       *connection,
+       case DMAP_GET_REVISION_NUMBER:
+               g_object_set (source, "load-status", RB_SOURCE_LOAD_STATUS_LOADING, NULL);
+       case DMAP_GET_DB_INFO:
+-      case DMAP_GET_SONGS:
++      case DMAP_GET_MEDIA:
+       case DMAP_GET_PLAYLISTS:
+       case DMAP_GET_PLAYLIST_ENTRIES:
+               g_object_set (source->priv->connection_status,
+@@ -566,7 +566,7 @@ connection_connecting_cb (DMAPConnection       *connection,
+ }
+ static void
+-connection_disconnected_cb (DMAPConnection   *connection,
++connection_disconnected_cb (DmapConnection   *connection,
+                           RBDAAPSource     *source)
+ {
+       GIcon *icon;
+@@ -605,7 +605,7 @@ _add_location_to_playlist (const char *uri, RBStaticPlaylistSource *source)
+ }
+ static void
+-rb_daap_source_connection_cb (DMAPConnection   *connection,
++rb_daap_source_connection_cb (DmapConnection   *connection,
+                             gboolean          result,
+                             const char       *reason,
+                             RBSource         *source)
+@@ -640,7 +640,7 @@ rb_daap_source_connection_cb (DMAPConnection   *connection,
+                     NULL);
+       playlists = dmap_connection_get_playlists (DMAP_CONNECTION (daap_source->priv->connection));
+       for (l = playlists; l != NULL; l = g_slist_next (l)) {
+-              DMAPPlaylist *playlist = l->data;
++              DmapPlaylist *playlist = l->data;
+               RBSource *playlist_source;
+               playlist_source = rb_static_playlist_source_new (shell, playlist->name, settings, FALSE, entry_type);
+@@ -661,9 +661,9 @@ rb_daap_source_selected (RBDisplayPage *page)
+ {
+       RBDAAPSource *daap_source = RB_DAAP_SOURCE (page);
+       RBShell *shell = NULL;
+-      DMAPRecordFactory *factory;
++      DmapRecordFactory *factory;
+       RhythmDB *rdb = NULL;
+-      DMAPDb *db = NULL;
++      DmapDb *db = NULL;
+       char *name = NULL;
+       RhythmDBEntryType *entry_type;
+       RBTaskList *tasklist;
+@@ -695,11 +695,11 @@ rb_daap_source_selected (RBDisplayPage *page)
+       rb_task_list_add_task (tasklist, RB_TASK_PROGRESS (daap_source->priv->connection_status));
+       g_object_unref (tasklist);
+-      daap_source->priv->connection = daap_connection_new (name,
+-                                                           daap_source->priv->host,
+-                                                           daap_source->priv->port,
+-                                                           db,
+-                                                           factory);
++      daap_source->priv->connection = dmap_av_connection_new (name,
++                                                              daap_source->priv->host,
++                                                              daap_source->priv->port,
++                                                              db,
++                                                              factory);
+       g_object_unref (entry_type);
+       g_object_add_weak_pointer (G_OBJECT (daap_source->priv->connection), (gpointer *)&daap_source->priv->connection);
+@@ -718,16 +718,16 @@ rb_daap_source_selected (RBDisplayPage *page)
+                           G_CALLBACK (connection_disconnected_cb),
+                         page);
+-      dmap_connection_connect (DMAP_CONNECTION (daap_source->priv->connection),
+-                               (DMAPConnectionCallback) rb_daap_source_connection_cb,
+-                               page);
++      dmap_connection_start (DMAP_CONNECTION (daap_source->priv->connection),
++                            (DmapConnectionFunc) rb_daap_source_connection_cb,
++                             page);
+       g_object_unref (rdb);
+       g_object_unref (shell);
+ }
+ static void
+-rb_daap_source_disconnect_cb (DMAPConnection   *connection,
++rb_daap_source_disconnect_cb (DmapConnection   *connection,
+                             gboolean          result,
+                             const char       *reason,
+                             RBSource         *source)
+@@ -792,9 +792,9 @@ rb_daap_source_disconnect (RBDAAPSource *daap_source)
+       /* keep the source alive until the disconnect completes */
+       g_object_ref (daap_source);
+-      dmap_connection_disconnect (daap_source->priv->connection,
+-                                     (DMAPConnectionCallback) rb_daap_source_disconnect_cb,
+-                                     daap_source);
++      dmap_connection_stop (daap_source->priv->connection,
++                           (DmapConnectionFunc) rb_daap_source_disconnect_cb,
++                            daap_source);
+       /* wait until disconnected */
+       rb_debug ("Waiting for DAAP connection to finish");
+diff --git a/plugins/daap/rb-dacp-pairing-page.c b/plugins/daap/rb-dacp-pairing-page.c
+index 93a5f98af..f020fc25f 100644
+--- a/plugins/daap/rb-dacp-pairing-page.c
++++ b/plugins/daap/rb-dacp-pairing-page.c
+@@ -73,16 +73,16 @@ static void impl_get_property  (GObject *object,
+ static void rb_dacp_pairing_page_connecting (RBDACPPairingPage *page, gboolean connecting);
+ static gboolean entry_insert_text_cb (GtkWidget *entry, gchar *text, gint len, gint *position, RBDACPPairingPage *page);
+ static gboolean entry_backspace_cb (GtkWidget *entry, RBDACPPairingPage *page);
+-static void remote_paired_cb (DACPShare *share, gchar *service_name, gboolean connected, RBDACPPairingPage *page);
++static void remote_paired_cb (DmapControlShare *share, gchar *service_name, gboolean connected, RBDACPPairingPage *page);
+-static void dacp_remote_added (DACPShare *share, gchar *service_name, gchar *display_name, RBDaapPlugin *plugin);
+-static void dacp_remote_removed (DACPShare *share, gchar *service_name, RBDaapPlugin *plugin);
++static void dacp_remote_added (DmapControlShare *share, gchar *service_name, gchar *display_name, RBDaapPlugin *plugin);
++static void dacp_remote_removed (DmapControlShare *share, gchar *service_name, RBDaapPlugin *plugin);
+-/* DACPShare signals */
+-static gboolean dacp_lookup_guid (DACPShare *share, gchar *guid, GSettings *settings);
+-static void     dacp_add_guid    (DACPShare *share, gchar *guid, GSettings *settings);
++/* DmapControlShare signals */
++static gboolean dacp_lookup_guid (DmapControlShare *share, gchar *guid, GSettings *settings);
++static void     dacp_add_guid    (DmapControlShare *share, gchar *guid, GSettings *settings);
+-static void dacp_player_updated (RBDACPPlayer *player, DACPShare *share);
++static void dacp_player_updated (RBDACPPlayer *player, DmapControlShare *share);
+ struct RBDACPPairingPagePrivate
+ {
+@@ -90,7 +90,7 @@ struct RBDACPPairingPagePrivate
+       gboolean done_pairing;
+-      DACPShare *dacp_share;
++      DmapControlShare *dacp_share;
+       GtkBuilder *builder;
+       GtkWidget *entries[4];
+@@ -138,10 +138,10 @@ entry_insert_text_cb (GtkWidget *entry, gchar *text, gint len, gint *position, R
+               /* The last character is still not in the entry */
+               passcode[3] = new_char;
+               rb_dacp_pairing_page_connecting (page, TRUE);
+-              /* Let DACPShare do the heavy-lifting */
+-              dacp_share_pair (page->priv->dacp_share,
+-                               page->priv->service_name,
+-                               passcode);
++              /* Let DmapControlShare do the heavy-lifting */
++              dmap_control_share_pair (page->priv->dacp_share,
++                                       page->priv->service_name,
++                                       passcode);
+       }
+       /* let the default handler display the number */
+       return FALSE;
+@@ -329,7 +329,7 @@ impl_get_property (GObject *object,
+ RBDACPPairingPage *
+ rb_dacp_pairing_page_new (GObject *plugin,
+                         RBShell *shell,
+-                        DACPShare *dacp_share,
++                        DmapControlShare *dacp_share,
+                         const char *display_name,
+                         const char *service_name)
+ {
+@@ -400,7 +400,7 @@ rb_dacp_pairing_page_connecting (RBDACPPairingPage *page, gboolean connecting) {
+ }
+ static void
+-remote_paired_cb (DACPShare *share, gchar *service_name, gboolean connected, RBDACPPairingPage *page)
++remote_paired_cb (DmapControlShare *share, gchar *service_name, gboolean connected, RBDACPPairingPage *page)
+ {
+       /* Check if this remote is the remote paired */
+       if (g_strcmp0 (service_name, page->priv->service_name) != 0)
+@@ -417,14 +417,14 @@ remote_paired_cb (DACPShare *share, gchar *service_name, gboolean connected, RBD
+       }
+ }
+-DACPShare *
++DmapControlShare *
+ rb_daap_create_dacp_share (GObject *plugin)
+ {
+-      DACPShare *share;
+-      DACPPlayer *player;
++      DmapControlShare *share;
++      DmapControlPlayer *player;
+       RhythmDB *rdb;
+-      DMAPDb *db;
+-      DMAPContainerDb *container_db;
++      DmapDb *db;
++      DmapContainerDb *container_db;
+       RBPlaylistManager *playlist_manager;
+       RBShell *shell;
+       GSettings *share_settings;
+@@ -441,7 +441,7 @@ rb_daap_create_dacp_share (GObject *plugin)
+       db = DMAP_DB (rb_rhythmdb_dmap_db_adapter_new (rdb, RHYTHMDB_ENTRY_TYPE_SONG));
+       container_db = DMAP_CONTAINER_DB (rb_dmap_container_db_adapter_new (playlist_manager));
+-      player = DACP_PLAYER (rb_dacp_player_new (shell));
++      player = DMAP_CONTROL_PLAYER (rb_dacp_player_new (shell));
+       share_settings = g_settings_new ("org.gnome.rhythmbox.sharing");
+       name = g_settings_get_string (share_settings, "share-name");
+@@ -451,7 +451,7 @@ rb_daap_create_dacp_share (GObject *plugin)
+       }
+       g_object_unref (share_settings);
+-      share = dacp_share_new (name, player, db, container_db);
++      share = dmap_control_share_new (name, player, db, container_db);
+       daap_settings = g_settings_new ("org.gnome.rhythmbox.plugins.daap");
+       settings = g_settings_get_child (daap_settings, "dacp");
+@@ -497,13 +497,13 @@ rb_daap_create_dacp_share (GObject *plugin)
+ static void
+ dacp_player_updated (RBDACPPlayer *player,
+-                     DACPShare *share)
++                     DmapControlShare *share)
+ {
+-      dacp_share_player_updated (share);
++      dmap_control_share_player_updated (share);
+ }
+ static void
+-dacp_add_guid (DACPShare *share,
++dacp_add_guid (DmapControlShare *share,
+                gchar *guid,
+              GSettings *settings)
+ {
+@@ -528,7 +528,7 @@ dacp_add_guid (DACPShare *share,
+ }
+ static gboolean
+-dacp_lookup_guid (DACPShare *share,
++dacp_lookup_guid (DmapControlShare *share,
+                   gchar *guid,
+                 GSettings *settings)
+ {
+@@ -589,10 +589,10 @@ find_dacp_page (RBShell *shell, const gchar *service_name)
+ }
+ static void
+-dacp_remote_added (DACPShare    *share,
+-                   gchar        *service_name,
+-                   gchar        *display_name,
+-                   RBDaapPlugin *plugin)
++dacp_remote_added (DmapControlShare *share,
++                   gchar            *service_name,
++                   gchar            *display_name,
++                   RBDaapPlugin     *plugin)
+ {
+       RBDACPPairingPage *page;
+       RBShell *shell;
+@@ -625,9 +625,9 @@ dacp_remote_added (DACPShare    *share,
+ }
+ static void
+-dacp_remote_removed (DACPShare       *share,
+-                     gchar           *service_name,
+-                     RBDaapPlugin    *plugin)
++dacp_remote_removed (DmapControlShare *share,
++                     gchar            *service_name,
++                     RBDaapPlugin     *plugin)
+ {
+       RBDACPPairingPage *page;
+       RBShell *shell;
+diff --git a/plugins/daap/rb-dacp-pairing-page.h b/plugins/daap/rb-dacp-pairing-page.h
+index fc8e06d38..67e121942 100644
+--- a/plugins/daap/rb-dacp-pairing-page.h
++++ b/plugins/daap/rb-dacp-pairing-page.h
+@@ -60,14 +60,14 @@ GType              rb_dacp_pairing_page_get_type   (void);
+ RBDACPPairingPage *rb_dacp_pairing_page_new   (GObject *plugin,
+                                                RBShell *shell,
+-                                               DACPShare *dacp_share,
++                                               DmapControlShare *dacp_share,
+                                                const char *display_name,
+                                                const char *service_name);
+ void           rb_dacp_pairing_page_remote_found (RBDACPPairingPage *page);
+ void           rb_dacp_pairing_page_remote_lost (RBDACPPairingPage *page);
+-DACPShare     *rb_daap_create_dacp_share       (GObject *plugin);
++DmapControlShare *rb_daap_create_dacp_share       (GObject *plugin);
+ void           _rb_dacp_pairing_page_register_type (GTypeModule *module);
+diff --git a/plugins/daap/rb-dacp-player.c b/plugins/daap/rb-dacp-player.c
+index 89f13e131..7a3253c32 100644
+--- a/plugins/daap/rb-dacp-player.c
++++ b/plugins/daap/rb-dacp-player.c
+@@ -58,15 +58,15 @@ static void rb_dacp_player_set_property (GObject *object, guint prop_id,
+ static void playing_song_changed (RBShellPlayer *shell_player, RhythmDBEntry *entry, RBDACPPlayer *player);
+ static void elapsed_changed (RBShellPlayer *shell_player, guint elapsed, RBDACPPlayer *player);
+-static DAAPRecord *rb_dacp_player_now_playing_record  (DACPPlayer *player);
+-static guchar *rb_dacp_player_now_playing_artwork (DACPPlayer *player, guint width, guint height);
+-static void rb_dacp_player_play_pause          (DACPPlayer *player);
+-static void rb_dacp_player_pause               (DACPPlayer *player);
+-static void rb_dacp_player_next_item           (DACPPlayer *player);
+-static void rb_dacp_player_prev_item           (DACPPlayer *player);
++static DmapAvRecord *rb_dacp_player_now_playing_record  (DmapControlPlayer *player);
++static gchar *rb_dacp_player_now_playing_artwork (DmapControlPlayer *player, guint width, guint height);
++static void rb_dacp_player_play_pause          (DmapControlPlayer *player);
++static void rb_dacp_player_pause               (DmapControlPlayer *player);
++static void rb_dacp_player_next_item           (DmapControlPlayer *player);
++static void rb_dacp_player_prev_item           (DmapControlPlayer *player);
+-static void rb_dacp_player_cue_clear           (DACPPlayer *player);
+-static void rb_dacp_player_cue_play            (DACPPlayer *player, GList *records, guint index);
++static void rb_dacp_player_cue_clear           (DmapControlPlayer *player);
++static void rb_dacp_player_cue_play            (DmapControlPlayer *player, GList *records, guint index);
+ enum {
+       PROP_0,
+@@ -87,9 +87,9 @@ static guint signals[LAST_SIGNAL] = { 0 };
+ static void
+ rb_dacp_player_iface_init (gpointer iface, gpointer data)
+ {
+-      DACPPlayerIface *dacp_player = iface;
++      DmapControlPlayerInterface *dacp_player = iface;
+-      g_assert (G_TYPE_FROM_INTERFACE (dacp_player) == DACP_TYPE_PLAYER);
++      g_assert (G_TYPE_FROM_INTERFACE (dacp_player) == DMAP_TYPE_CONTROL_PLAYER);
+       dacp_player->now_playing_record  = rb_dacp_player_now_playing_record;
+       dacp_player->now_playing_artwork = rb_dacp_player_now_playing_artwork;
+@@ -106,7 +106,7 @@ G_DEFINE_DYNAMIC_TYPE_EXTENDED (RBDACPPlayer,
+                               rb_dacp_player,
+                               G_TYPE_OBJECT,
+                               0,
+-                              G_IMPLEMENT_INTERFACE_DYNAMIC (DACP_TYPE_PLAYER,
++                              G_IMPLEMENT_INTERFACE_DYNAMIC (DMAP_TYPE_CONTROL_PLAYER,
+                                                              rb_dacp_player_iface_init))
+ static void
+@@ -188,16 +188,16 @@ rb_dacp_player_get_property (GObject *object,
+                       break;
+               case PROP_REPEAT_STATE:
+                       rb_shell_player_get_playback_state (player->priv->shell_player, &shuffle, &repeat);
+-                      g_value_set_enum (value, repeat ? DACP_REPEAT_ALL : DACP_REPEAT_NONE);
++                      g_value_set_enum (value, repeat ? DMAP_CONTROL_REPEAT_ALL : DMAP_CONTROL_REPEAT_NONE);
+                       break;
+               case PROP_PLAY_STATE:
+                       entry = rb_shell_player_get_playing_entry (player->priv->shell_player);
+                       if (entry) {
+                               g_object_get (player->priv->shell_player, "playing", &playing, NULL);
+-                              g_value_set_enum (value, playing ? DACP_PLAY_PLAYING : DACP_PLAY_PAUSED);
++                              g_value_set_enum (value, playing ? DMAP_CONTROL_PLAY_PLAYING : DMAP_CONTROL_PLAY_PAUSED);
+                               rhythmdb_entry_unref (entry);
+                       } else {
+-                              g_value_set_enum (value, DACP_PLAY_STOPPED);
++                              g_value_set_enum (value, DMAP_CONTROL_PLAY_STOPPED);
+                       }
+                       break;
+               case PROP_VOLUME:
+@@ -234,7 +234,7 @@ rb_dacp_player_set_property (GObject *object,
+                       break;
+               case PROP_REPEAT_STATE:
+                       rb_shell_player_get_playback_state (player->priv->shell_player, &shuffle, &repeat);
+-                      rb_shell_player_set_playback_state (player->priv->shell_player, shuffle, g_value_get_enum (value) != DACP_REPEAT_NONE);
++                      rb_shell_player_set_playback_state (player->priv->shell_player, shuffle, g_value_get_enum (value) != DMAP_CONTROL_REPEAT_NONE);
+                       break;
+               case PROP_VOLUME:
+                       volume = ((double) g_value_get_ulong (value))  / 100.0;
+@@ -289,54 +289,54 @@ rb_dacp_player_new (RBShell *shell)
+       return player;
+ }
+-static DAAPRecord *
+-rb_dacp_player_now_playing_record (DACPPlayer *player)
++static DmapAvRecord *
++rb_dacp_player_now_playing_record (DmapControlPlayer *player)
+ {
+       RhythmDBEntry *entry;
+-      DAAPRecord *record;
++      DmapAvRecord *record;
+       entry = rb_shell_player_get_playing_entry (RB_DACP_PLAYER (player)->priv->shell_player);
+       if (entry == NULL) {
+               return NULL;
+       } else {
+-              record = DAAP_RECORD (rb_daap_record_new (entry));
++              record = DMAP_AV_RECORD (rb_daap_record_new (entry));
+               rhythmdb_entry_unref (entry);
+               return record;
+       }
+ }
+-static guchar *
+-rb_dacp_player_now_playing_artwork (DACPPlayer *player, guint width, guint height)
++static gchar *
++rb_dacp_player_now_playing_artwork (DmapControlPlayer *player, guint width, guint height)
+ {
+       return NULL;
+ }
+ static void
+-rb_dacp_player_play_pause (DACPPlayer *player)
++rb_dacp_player_play_pause (DmapControlPlayer *player)
+ {
+       rb_shell_player_playpause (RB_DACP_PLAYER (player)->priv->shell_player, NULL);
+ }
+ static void
+-rb_dacp_player_pause (DACPPlayer *player)
++rb_dacp_player_pause (DmapControlPlayer *player)
+ {
+       rb_shell_player_pause (RB_DACP_PLAYER (player)->priv->shell_player, NULL);
+ }
+ static void
+-rb_dacp_player_next_item (DACPPlayer *player)
++rb_dacp_player_next_item (DmapControlPlayer *player)
+ {
+       rb_shell_player_do_next (RB_DACP_PLAYER (player)->priv->shell_player, NULL);
+ }
+ static void
+-rb_dacp_player_prev_item (DACPPlayer *player)
++rb_dacp_player_prev_item (DmapControlPlayer *player)
+ {
+       rb_shell_player_do_previous (RB_DACP_PLAYER (player)->priv->shell_player, NULL);
+ }
+ static void
+-rb_dacp_player_cue_clear (DACPPlayer *player)
++rb_dacp_player_cue_clear (DmapControlPlayer *player)
+ {
+       RBDACPPlayer *rbplayer;
+       rbplayer = RB_DACP_PLAYER (player);
+@@ -344,7 +344,7 @@ rb_dacp_player_cue_clear (DACPPlayer *player)
+ }
+ static void
+-rb_dacp_player_cue_play (DACPPlayer *player, GList *records, guint index)
++rb_dacp_player_cue_play (DmapControlPlayer *player, GList *records, guint index)
+ {
+       GList *record;
+       gint current = 0;
+diff --git a/plugins/daap/rb-dacp-player.h b/plugins/daap/rb-dacp-player.h
+index ff2aa18fd..aa929018d 100644
+--- a/plugins/daap/rb-dacp-player.h
++++ b/plugins/daap/rb-dacp-player.h
+@@ -52,7 +52,7 @@ struct _RBDACPPlayerClass
+ {
+       GObjectClass parent_class;
+-      void (*player_updated) (DACPPlayer *player);
++      void (*player_updated) (DmapControlPlayer *player);
+ };
+ struct _RBDACPPlayer
+diff --git a/plugins/daap/rb-dmap-container-db-adapter.c b/plugins/daap/rb-dmap-container-db-adapter.c
+index 1340d3a12..20637a45a 100644
+--- a/plugins/daap/rb-dmap-container-db-adapter.c
++++ b/plugins/daap/rb-dmap-container-db-adapter.c
+@@ -42,7 +42,7 @@ struct RBDMAPContainerDbAdapterPrivate {
+ typedef struct ForeachAdapterData {
+       gpointer data;
+-      GHFunc func;
++      DmapIdContainerRecordFunc func;
+ } ForeachAdapterData;
+ static guint find_by_id (gconstpointer a, gconstpointer b)
+@@ -50,12 +50,12 @@ static guint find_by_id (gconstpointer a, gconstpointer b)
+       return GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (a), "daap_id")) != GPOINTER_TO_UINT (b);
+ }
+-static DMAPContainerRecord *
+-rb_dmap_container_db_adapter_lookup_by_id (DMAPContainerDb *db, guint id)
++static DmapContainerRecord *
++rb_dmap_container_db_adapter_lookup_by_id (DmapContainerDb *db, guint id)
+ {
+       gchar *name;
+       GList *playlists;
+-      DMAPContainerRecord *fnval = NULL;
++      DmapContainerRecord *fnval = NULL;
+       playlists = rb_playlist_manager_get_playlists (RB_DMAP_CONTAINER_DB_ADAPTER (db)->priv->playlist_manager);
+@@ -78,15 +78,17 @@ rb_dmap_container_db_adapter_lookup_by_id (DMAPContainerDb *db, guint id)
+ static void
+ foreach_adapter (RBPlaylistSource *entry, gpointer data)
+ {
++      guint id;
+       gchar *name;
+-      DMAPContainerRecord *record;
++      DmapContainerRecord *record;
+       ForeachAdapterData *foreach_adapter_data;
+       foreach_adapter_data = data;
+       g_object_get (entry, "name", &name, NULL);
+       record = DMAP_CONTAINER_RECORD (rb_daap_container_record_new (name, entry));
++      id = rb_daap_container_record_get_id (record);
+-      foreach_adapter_data->func (GINT_TO_POINTER (rb_daap_container_record_get_id (record)),
++      foreach_adapter_data->func (GUINT_TO_POINTER(id),
+                                   record,
+                                   foreach_adapter_data->data);
+@@ -94,8 +96,8 @@ foreach_adapter (RBPlaylistSource *entry, gpointer data)
+ }
+ static void
+-rb_dmap_container_db_adapter_foreach  (DMAPContainerDb *db,
+-                                       GHFunc func,
++rb_dmap_container_db_adapter_foreach  (DmapContainerDb *db,
++                                       DmapIdContainerRecordFunc func,
+                                        gpointer data)
+ {
+       ForeachAdapterData *foreach_adapter_data;
+@@ -113,7 +115,7 @@ rb_dmap_container_db_adapter_foreach       (DMAPContainerDb *db,
+ }
+ static gint64
+-rb_dmap_container_db_adapter_count (DMAPContainerDb *db)
++rb_dmap_container_db_adapter_count (DmapContainerDb *db)
+ {
+       gint64 count = 0;
+       GList *playlists = rb_playlist_manager_get_playlists (
+@@ -143,7 +145,7 @@ rb_dmap_container_db_adapter_class_finalize (RBDMAPContainerDbAdapterClass *klas
+ static void
+ rb_dmap_container_db_adapter_interface_init (gpointer iface, gpointer data)
+ {
+-      DMAPContainerDbIface *dmap_db = iface;
++      DmapContainerDbInterface *dmap_db = iface;
+       g_assert (G_TYPE_FROM_INTERFACE (dmap_db) == DMAP_TYPE_CONTAINER_DB);
+diff --git a/plugins/daap/rb-rhythmdb-dmap-db-adapter.c b/plugins/daap/rb-rhythmdb-dmap-db-adapter.c
+index 412fb2cfb..8d5d0a97e 100644
+--- a/plugins/daap/rb-rhythmdb-dmap-db-adapter.c
++++ b/plugins/daap/rb-rhythmdb-dmap-db-adapter.c
+@@ -45,11 +45,11 @@ struct RBRhythmDBDMAPDbAdapterPrivate {
+ typedef struct ForeachAdapterData {
+       gpointer data;
+-      GHFunc func;
++      DmapIdRecordFunc func;
+ } ForeachAdapterData;
+-static DMAPRecord *
+-rb_rhythmdb_dmap_db_adapter_lookup_by_id (const DMAPDb *db, guint id)
++static DmapRecord *
++rb_rhythmdb_dmap_db_adapter_lookup_by_id (const DmapDb *db, guint id)
+ {
+       RhythmDBEntry *entry;
+@@ -66,7 +66,7 @@ static void
+ foreach_adapter (RhythmDBEntry *entry, gpointer data)
+ {
+       gulong id;
+-      DMAPRecord *record;
++      DmapRecord *record;
+       ForeachAdapterData *foreach_adapter_data;
+       char *playback_uri;
+@@ -81,7 +81,7 @@ foreach_adapter (RhythmDBEntry *entry, gpointer data)
+       foreach_adapter_data = data;
+       record = DMAP_RECORD (rb_daap_record_new (entry));
+-      foreach_adapter_data->func (GUINT_TO_POINTER (id),
++      foreach_adapter_data->func (GUINT_TO_POINTER(id),
+                                   record,
+                                   foreach_adapter_data->data);
+@@ -90,9 +90,9 @@ foreach_adapter (RhythmDBEntry *entry, gpointer data)
+ }
+ static void
+-rb_rhythmdb_dmap_db_adapter_foreach   (const DMAPDb *db,
+-                                       GHFunc func,
+-                                       gpointer data)
++rb_rhythmdb_dmap_db_adapter_foreach (const DmapDb *db,
++                                     DmapIdRecordFunc func,
++                                     gpointer data)
+ {
+       ForeachAdapterData *foreach_adapter_data;
+@@ -111,7 +111,7 @@ rb_rhythmdb_dmap_db_adapter_foreach        (const DMAPDb *db,
+ }
+ static gint64
+-rb_rhythmdb_dmap_db_adapter_count (const DMAPDb *db)
++rb_rhythmdb_dmap_db_adapter_count (const DmapDb *db)
+ {
+       g_assert (RB_RHYTHMDB_DMAP_DB_ADAPTER (db)->priv->db != NULL);
+       return rhythmdb_entry_count_by_type (
+@@ -141,7 +141,7 @@ entry_set_string_prop (RhythmDB        *db,
+ }
+ static guint
+-rb_rhythmdb_dmap_db_adapter_add (DMAPDb *db, DMAPRecord *record)
++rb_rhythmdb_dmap_db_adapter_add (DmapDb *db, DmapRecord *record, GError **error)
+ {
+       gchar *uri = NULL;
+       const gchar *title = NULL;
+@@ -265,7 +265,7 @@ rb_rhythmdb_dmap_db_adapter_class_finalize (RBRhythmDBDMAPDbAdapterClass *klass)
+ static void
+ rb_rhythmdb_dmap_db_adapter_interface_init (gpointer iface, gpointer data)
+ {
+-      DMAPDbIface *dmap_db = iface;
++      DmapDbInterface *dmap_db = iface;
+       g_assert (G_TYPE_FROM_INTERFACE (dmap_db) == DMAP_TYPE_DB);
+diff --git a/plugins/daap/rb-rhythmdb-query-model-dmap-db-adapter.c b/plugins/daap/rb-rhythmdb-query-model-dmap-db-adapter.c
+index 161b92a55..bedfc17cd 100644
+--- a/plugins/daap/rb-rhythmdb-query-model-dmap-db-adapter.c
++++ b/plugins/daap/rb-rhythmdb-query-model-dmap-db-adapter.c
+@@ -41,11 +41,11 @@ struct RBRhythmDBQueryModelDMAPDbAdapterPrivate {
+ typedef struct ForeachAdapterData {
+       gpointer data;
+-      GHFunc func;
++      DmapIdRecordFunc func;
+ } ForeachAdapterData;
+-static DMAPRecord *
+-rb_rhythmdb_query_model_dmap_db_adapter_lookup_by_id (const DMAPDb *db,
++static DmapRecord *
++rb_rhythmdb_query_model_dmap_db_adapter_lookup_by_id (const DmapDb *db,
+                                                     guint id)
+ {
+       g_error ("Not implemented");
+@@ -59,7 +59,7 @@ foreach_adapter (GtkTreeModel *model,
+                gpointer data)
+ {
+       gulong id;
+-      DMAPRecord *record;
++      DmapRecord *record;
+       RhythmDBEntry *entry;
+       ForeachAdapterData *foreach_adapter_data;
+@@ -69,7 +69,7 @@ foreach_adapter (GtkTreeModel *model,
+       foreach_adapter_data = data;
+       record = DMAP_RECORD (rb_daap_record_new (entry));
+-      foreach_adapter_data->func (GUINT_TO_POINTER (id),
++      foreach_adapter_data->func (GUINT_TO_POINTER(id),
+                                   record,
+                                   foreach_adapter_data->data);
+@@ -80,9 +80,9 @@ foreach_adapter (GtkTreeModel *model,
+ }
+ static void
+-rb_rhythmdb_query_model_dmap_db_adapter_foreach       (const DMAPDb *db,
+-                                       GHFunc func,
+-                                       gpointer data)
++rb_rhythmdb_query_model_dmap_db_adapter_foreach       (const DmapDb *db,
++                                                 DmapIdRecordFunc func,
++                                                 gpointer data)
+ {
+       ForeachAdapterData *foreach_adapter_data;
+@@ -100,7 +100,7 @@ rb_rhythmdb_query_model_dmap_db_adapter_foreach    (const DMAPDb *db,
+ }
+ static gint64
+-rb_rhythmdb_query_model_dmap_db_adapter_count (const DMAPDb *db)
++rb_rhythmdb_query_model_dmap_db_adapter_count (const DmapDb *db)
+ {
+       g_assert (RB_RHYTHMDB_QUERY_MODEL_DMAP_DB_ADAPTER (db)->priv->model != NULL); 
+       return gtk_tree_model_iter_n_children (
+@@ -108,7 +108,7 @@ rb_rhythmdb_query_model_dmap_db_adapter_count (const DMAPDb *db)
+ }
+ static guint
+-rb_rhythmdb_query_model_dmap_db_adapter_add (DMAPDb *db, DMAPRecord *record)
++rb_rhythmdb_query_model_dmap_db_adapter_add (DmapDb *db, DmapRecord *record, GError **error)
+ {
+       g_error ("Not implemented");
+       return 0;
+@@ -134,7 +134,7 @@ rb_rhythmdb_query_model_dmap_db_adapter_class_finalize (RBRhythmDBQueryModelDMAP
+ static void
+ rb_rhythmdb_query_model_dmap_db_adapter_interface_init (gpointer iface, gpointer data)
+ {
+-      DMAPDbIface *dmap_db = iface;
++      DmapDbInterface *dmap_db = iface;
+       g_assert (G_TYPE_FROM_INTERFACE (dmap_db) == DMAP_TYPE_DB);
+-- 
+2.21.0
+
index 92f99ff9c6178f3c977ef3a3992cb8f3b0affd46..8dde397f39c49e35c793c64f4da71ba821a4281b 100644 (file)
@@ -3,7 +3,7 @@
 %bcond_without ipod            # build without iPod support
 %bcond_without mtp             # build without MTP support
 %bcond_without daap            # build without DAAP support
-%bcond_with    webkit          # build with gtk-webkit support
+%bcond_with    libdmapsharing4 # libdmapsharing4 instead of libdmapsharing3
 
 Summary:       Music Management Application
 Summary(hu.UTF-8):     Zenelejátszó alkalmazás
@@ -15,73 +15,92 @@ License:    GPL v2+
 Group:         X11/Applications
 Source0:       http://ftp.gnome.org/pub/GNOME/sources/rhythmbox/3.4/%{name}-%{version}.tar.xz
 # Source0-md5: 79a775cffcf320fcdefa74bf6b2d1d32
+# https://gitlab.gnome.org/GNOME/rhythmbox/merge_requests/12.patch
+Patch0:                %{name}-libdmapsharing4.patch
 URL:           http://projects.gnome.org/rhythmbox/
-BuildRequires: autoconf
-BuildRequires: automake
+BuildRequires: autoconf >= 2.63.2
+BuildRequires: automake >= 1:1.11
 BuildRequires: brasero-devel >= 2.31.5
 BuildRequires: docbook-dtd412-xml
 BuildRequires: gdk-pixbuf2-devel >= 2.18.0
-BuildRequires: gettext-tools
-BuildRequires: glib2-devel >= 1:2.34.0
-BuildRequires: gnome-common
+BuildRequires: gettext-tools >= 0.18
+BuildRequires: glib2-devel >= 1:2.38.0
 BuildRequires: gobject-introspection-devel >= 0.10.0
-BuildRequires: grilo-devel >= 0.1.17
-BuildRequires: gstreamer-devel >= 1.0.0
-BuildRequires: gstreamer-plugins-base-devel >= 1.0.0
-BuildRequires: gtk+3-devel >= 3.12.0
-BuildRequires: gtk-doc
-%{?with_webkit:BuildRequires:  gtk-webkit3-devel >= 1.3.9}
+BuildRequires: grilo-devel >= 0.3.0
+BuildRequires: gstreamer-devel >= 1.4.0
+BuildRequires: gstreamer-plugins-base-devel >= 1.4.0
+BuildRequires: gtk+3-devel >= 3.20.0
+BuildRequires: gtk-doc >= 1.4
 BuildRequires: intltool >= 0.35.0
 BuildRequires: json-glib-devel
-%{?with_daap:BuildRequires:    libdmapsharing-devel >= 2.9.19}
-%{?with_ipod:BuildRequires:    libgpod-devel >= 0.6}
+%if %{with daap}
+%if %{with libdmapsharing4}
+BuildRequires: libdmapsharing-devel >= 3.9
+BuildRequires: libdmapsharing-devel < 4.9
+%else
+BuildRequires: libdmapsharing-devel >= 2.9.19
+BuildRequires: libdmapsharing-devel < 3.9
+%endif
+%endif
+%{?with_ipod:BuildRequires:    libgpod-devel >= 0.8}
 %{?with_mtp:BuildRequires:     libmtp-devel >= 0.3.0}
 BuildRequires: libnotify-devel >= 0.7.0
 BuildRequires: libpeas-devel >= 0.7.3
 BuildRequires: libpeas-gtk-devel >= 0.7.3
 BuildRequires: libsecret-devel >= 0.18
-BuildRequires: libsoup-devel >= 2.34.0
-BuildRequires: libsoup-gnome-devel >= 2.34.0
-BuildRequires: libtool
+BuildRequires: libsoup-devel >= 2.42.0
+BuildRequires: libtool >= 2:2
 BuildRequires: libxml2-devel >= 1:2.7.8
 BuildRequires: lirc-devel
 BuildRequires: pkgconfig
-BuildRequires: python3-pygobject3-devel
+BuildRequires: python3-pygobject3-devel >= 3.0
 BuildRequires: rpm-pythonprov
 BuildRequires: rpmbuild(find_lang) >= 1.23
 BuildRequires: rpmbuild(macros) >= 1.311
 BuildRequires: sed >= 4.0
+BuildRequires: tar >= 1:1.22
 BuildRequires: tdb-devel >= 2:1.2.6
 BuildRequires: totem-pl-parser-devel >= 3.2.0
 BuildRequires: udev-glib-devel >= 143
 BuildRequires: vala >= 0.9.4
-BuildRequires: xorg-lib-libSM-devel
+BuildRequires: xorg-lib-libX11-devel
 BuildRequires: xz
+BuildRequires: yelp-tools
 BuildRequires: zlib-devel
 Requires:      python3-modules
 Requires(post,postun): desktop-file-utils
 Requires(post,postun): gtk-update-icon-cache
 Requires(post,postun): hicolor-icon-theme
-Requires(post,postun): glib2 >= 1:2.34.0
+Requires(post,postun): glib2 >= 1:2.38.0
+Requires:      brasero >= 2.31.5
 Requires:      dbus >= 0.93
-Requires:      glib2 >= 1:2.34.0
-Requires:      gstreamer-audio-effects-base >= 1.0.0
-Requires:      gstreamer-audio-formats >= 1.0.0
+Requires:      glib2 >= 1:2.38.0
+Requires:      gstreamer-audio-effects-base >= 1.4.0
+Requires:      gstreamer-audio-formats >= 1.4.0
 Requires:      gstreamer-audiosink
-Requires:      gstreamer-plugins-good >= 1.0.0
-Requires:      gtk+3 >= 3.12.0
-Suggests:      gstreamer-flac
-Suggests:      gstreamer-mad
-Suggests:      gstreamer-neon
-Suggests:      gstreamer-vorbis
-Suggests:      gtk-webkit3
+Requires:      gstreamer-plugins-good >= 1.4.0
+Requires:      gtk+3 >= 3.20.0
+%{?with_daap:Requires: libdmapsharing >= 2.9.19}
+%{?with_ipod:Requires: libgpod >= 0.8}
+%{?with_mtp:Requires:  libmtp >= 0.3.0}
+Requires:      libnotify >= 0.7.0
+Requires:      libpeas >= 0.7.3
+Requires:      libpeas-gtk >= 0.7.3
+Requires:      libsecret >= 0.18
+Requires:      libsoup >= 2.42.0
+Requires:      libxml2 >= 1:2.7.8
+Requires:      tdb >= 2:1.2.6
+Requires:      totem-pl-parser >= 3.2.0
+Requires:      udev-glib >= 143
+Suggests:      gstreamer-flac >= 1.4.0
+Suggests:      gstreamer-mad >= 1.4.0
+Suggests:      gstreamer-neon >= 1.4.0
+Suggests:      gstreamer-vorbis >= 1.4.0
 Suggests:      libpeas-gtk >= 0.7.3
 Suggests:      libpeas-loader-python3
 Suggests:      python3-Mako
 Suggests:      python3-zeitgeist
 Obsoletes:     net-rhythmbox
-# sr@Latn vs. sr@latin
-Conflicts:     glibc-misc < 6:2.7
 BuildRoot:     %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 
 %description
@@ -115,33 +134,63 @@ Rhythmbox böngésző plugin.
 %description -n browser-plugin-%{name} -l pl.UTF-8
 Wtyczka Rhythmboksa do przeglądarek WWW.
 
+%package devel
+Summary:       Header files for developing Rhythmbox plugins
+Summary(pl.UTF-8):     Pliki nagłówkowe do tworzenia wtyczek Rhythmboksa
+Group:         Development/Libraries
+Requires:      %{name} = %{version}-%{release}
+Requires:      glib2-devel >= 1:2.38.0
+Requires:      gstreamer-devel >= 1.4.0
+Requires:      gtk+3-devel >= 3.20.0
+Requires:      libsoup-devel >= 2.42.0
+Requires:      libxml2-devel >= 1:2.7.8
+Requires:      totem-pl-parser-devel >= 3.2.0
+
+%description devel
+Header files for developing Rhythmbox plugins.
+
+%description devel -l pl.UTF-8
+Pliki nagłówkowe do tworzenia wtyczek Rhythmboksa.
+
+%package apidocs
+Summary:       Documentation for Rhythmbox plugin API
+Summary(pl.UTF-8):     Dokumentacja API wtyczek Rhythmboksa
+Group:         Documentation
+
+%description apidocs
+Documentation for Rhythmbox plugin API.
+
+%description apidocs -l pl.UTF-8
+Dokumentacja API wtyczek Rhythmboksa.
+
 %prep
 %setup -q
+%if %{with libdmapsharing4}
+%patch0 -p1
+%endif
 
 %build
 %{__gtkdocize}
-%{__glib_gettextize}
 %{__intltoolize}
 %{__libtoolize}
 %{__aclocal} -I macros
 %{__autoheader}
 %{__automake}
 %{__autoconf}
-MOZILLA_PLUGINDIR=%{_browserpluginsdir} \
 %configure \
+       MOZILLA_PLUGINDIR=%{_browserpluginsdir} \
        --disable-static \
        --disable-silent-rules \
        --enable-browser-plugin \
+       %{?with_daap:--enable-daap} \
        --enable-lirc \
        --enable-python \
        --enable-vala \
-       %{!?with_ipod:--without-ipod} \
-       %{?with_daap:--enable-daap} \
        --with-gudev \
+       --with-html-dir=%{_gtkdocdir} \
+       %{!?with_ipod:--without-ipod} \
        --with-mtp \
-       --with%{!?with_webkit:out}-webkit \
-       --with-x \
-       --without-hal
+       --with-x
 
 %{__make}
 
@@ -156,13 +205,7 @@ rm -rf $RPM_BUILD_ROOT
 %{__rm} $RPM_BUILD_ROOT%{_libdir}/librhythmbox-core.la
 %{__rm} $RPM_BUILD_ROOT%{_libdir}/rhythmbox/plugins/*/*.la
 
-# there is no -devel subpackage
-%{__rm} -r $RPM_BUILD_ROOT%{_datadir}/gir-1.0
-%{__rm} -r $RPM_BUILD_ROOT%{_datadir}/gtk-doc
-%{__rm} -r $RPM_BUILD_ROOT%{_includedir}/rhythmbox
 %{__rm} -r $RPM_BUILD_ROOT%{_libdir}/rhythmbox/sample-plugins
-%{__rm} $RPM_BUILD_ROOT%{_libdir}/librhythmbox-core.so
-%{__rm} $RPM_BUILD_ROOT%{_pkgconfigdir}/rhythmbox.pc
 
 %clean
 rm -rf $RPM_BUILD_ROOT
@@ -346,3 +389,15 @@ fi
 %files -n browser-plugin-%{name}
 %defattr(644,root,root,755)
 %attr(755,root,root) %{_browserpluginsdir}/librhythmbox-itms-detection-plugin.so
+
+%files devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/librhythmbox-core.so
+%{_datadir}/gir-1.0/MPID-3.0.gir
+%{_datadir}/gir-1.0/RB-3.0.gir
+%{_includedir}/rhythmbox
+%{_pkgconfigdir}/rhythmbox.pc
+
+%files apidocs
+%defattr(644,root,root,755)
+%{_gtkdocdir}/rhythmbox
This page took 0.223068 seconds and 4 git commands to generate.