[packages/rhythmbox] - updated dependencies, added optional patch with libdmapsharing4 support

qboosh qboosh at pld-linux.org
Sat Jul 27 10:52:37 CEST 2019


commit fb037d6074533130b215c538c6d69e68c929a53d
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date:   Sat Jul 27 10:54:30 2019 +0200

    - updated dependencies, added optional patch with libdmapsharing4 support

 rhythmbox-libdmapsharing4.patch | 1196 +++++++++++++++++++++++++++++++++++++++
 rhythmbox.spec                  |  145 +++--
 2 files changed, 1296 insertions(+), 45 deletions(-)
---
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 at Latn vs. sr at 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
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" <mike at 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 at 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
+
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/rhythmbox.git/commitdiff/fb037d6074533130b215c538c6d69e68c929a53d



More information about the pld-cvs-commit mailing list