From: Jakub Bogusz Date: Sat, 27 Jul 2019 08:54:30 +0000 (+0200) Subject: - updated dependencies, added optional patch with libdmapsharing4 support X-Git-Tag: auto/th/rhythmbox-3.4.3-2~2 X-Git-Url: http://git.pld-linux.org/?p=packages%2Frhythmbox.git;a=commitdiff_plain;h=fb037d6 - updated dependencies, added optional patch with libdmapsharing4 support --- diff --git a/rhythmbox-libdmapsharing4.patch b/rhythmbox-libdmapsharing4.patch new file mode 100644 index 0000000..bec195b --- /dev/null +++ b/rhythmbox-libdmapsharing4.patch @@ -0,0 +1,1196 @@ +From 5c132de76fbd971cec00efb193a6e61d0ef3e447 Mon Sep 17 00:00:00 2001 +From: "W. Michael Petullo" +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 +--- + 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 + +-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 + diff --git a/rhythmbox.spec b/rhythmbox.spec index 92f99ff..8dde397 100644 --- a/rhythmbox.spec +++ b/rhythmbox.spec @@ -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