diff --git a/.gitignore b/.gitignore index 8e0a083..05e1a7a 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/rhythmbox-3.4.1.tar.xz +SOURCES/rhythmbox-3.4.2.tar.xz diff --git a/.rhythmbox.metadata b/.rhythmbox.metadata index c632c38..e1fdaac 100644 --- a/.rhythmbox.metadata +++ b/.rhythmbox.metadata @@ -1 +1 @@ -db6f855a5430a28196db75d02e8d15e1feccea15 SOURCES/rhythmbox-3.4.1.tar.xz +0bef94b617120dad7c7f24a363466737954e5665 SOURCES/rhythmbox-3.4.2.tar.xz diff --git a/SOURCES/rb-3.4.2-bug-fixes.patch b/SOURCES/rb-3.4.2-bug-fixes.patch new file mode 100644 index 0000000..fa48104 --- /dev/null +++ b/SOURCES/rb-3.4.2-bug-fixes.patch @@ -0,0 +1,358 @@ +From 36a648db0af05be579190d98c96cfb6b7bcc6ebd Mon Sep 17 00:00:00 2001 +From: Bastien Nocera +Date: Mon, 9 Oct 2017 13:11:47 +0200 +Subject: [PATCH 01/12] fmradio: Fix build with GStreamer master + +The plugin description is not supposed to be a string constant, but an +unescaped string, to be concatenated with function names. + +This used to be acceptable (though would have warned), but breaks with +the GStreamer 1.13 development branch. + +rb-fm-radio-gst-src.c:181:6: error: pasting ""rbsilencesrc"" and "_get_desc" does not give a valid preprocessing token + "rbsilencesrc", + ^ + +https://bugzilla.gnome.org/show_bug.cgi?id=788706 +--- + plugins/fmradio/rb-fm-radio-gst-src.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/plugins/fmradio/rb-fm-radio-gst-src.c b/plugins/fmradio/rb-fm-radio-gst-src.c +index 09d709c28..88abdaf35 100644 +--- a/plugins/fmradio/rb-fm-radio-gst-src.c ++++ b/plugins/fmradio/rb-fm-radio-gst-src.c +@@ -178,7 +178,7 @@ plugin_init (GstPlugin *plugin) + + GST_PLUGIN_DEFINE (GST_VERSION_MAJOR, + GST_VERSION_MINOR, +- "rbsilencesrc", ++ rbsilencesrc, + "element to output silence", + plugin_init, + VERSION, +-- +2.17.0 + + +From 355e3c40efe47f6f90d12afb6590caf85db62487 Mon Sep 17 00:00:00 2001 +From: Bastien Nocera +Date: Mon, 24 Apr 2017 16:21:41 +0200 +Subject: [PATCH 02/12] mmkeys: media-player-keys: Fix usage to match API + documentation + +See https://bugzilla.gnome.org/show_bug.cgi?id=781326 + +https://bugzilla.gnome.org/show_bug.cgi?id=781664 +--- + plugins/mmkeys/rb-mmkeys-plugin.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/plugins/mmkeys/rb-mmkeys-plugin.c b/plugins/mmkeys/rb-mmkeys-plugin.c +index 46431584f..058b82f0e 100644 +--- a/plugins/mmkeys/rb-mmkeys-plugin.c ++++ b/plugins/mmkeys/rb-mmkeys-plugin.c +@@ -385,7 +385,7 @@ impl_activate (PeasActivatable *pplugin) + plugin->proxy = g_dbus_proxy_new_sync (bus, + G_DBUS_PROXY_FLAGS_NONE, + NULL, +- "org.gnome.SettingsDaemon", ++ "org.gnome.SettingsDaemon.MediaKeys", + "/org/gnome/SettingsDaemon/MediaKeys", + "org.gnome.SettingsDaemon.MediaKeys", + NULL, +-- +2.17.0 + + +From 19d604093667139c6660d9452b4037a761bf75e0 Mon Sep 17 00:00:00 2001 +From: gkrithi8 +Date: Thu, 26 Oct 2017 02:27:38 +0530 +Subject: [PATCH 03/12] brasero-disc-recorder: Fix invalid object reference + warnings + +https://bugzilla.gnome.org/show_bug.cgi?id=789494 +--- + plugins/brasero-disc-recorder/rb-disc-recorder-plugin.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/plugins/brasero-disc-recorder/rb-disc-recorder-plugin.c b/plugins/brasero-disc-recorder/rb-disc-recorder-plugin.c +index 8608e84fd..a89d87a70 100644 +--- a/plugins/brasero-disc-recorder/rb-disc-recorder-plugin.c ++++ b/plugins/brasero-disc-recorder/rb-disc-recorder-plugin.c +@@ -558,7 +558,7 @@ update_source (RBDiscRecorderPlugin *pi, + RBDisplayPage *selected_page; + const char *page_type; + +- if (pi->selected_page != NULL && RB_IS_SOURCE (pi->selected_page)) { ++ if (pi->selected_page != NULL && RB_IS_PLAYLIST_SOURCE (pi->selected_page)) { + RhythmDBQueryModel *model; + + g_object_get (pi->selected_page, "query-model", &model, NULL); +-- +2.17.0 + + +From 00970203e760f9ae43c31087706bd31b2b395dcb Mon Sep 17 00:00:00 2001 +From: gkrithi8 +Date: Mon, 30 Oct 2017 02:25:09 +0530 +Subject: [PATCH 04/12] song-info: fix the signal name used for entry deletion + +https://bugzilla.gnome.org/show_bug.cgi?id=789632 +--- + widgets/rb-song-info.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/widgets/rb-song-info.c b/widgets/rb-song-info.c +index 54810e0b7..202f3d36e 100644 +--- a/widgets/rb-song-info.c ++++ b/widgets/rb-song-info.c +@@ -733,6 +733,7 @@ rb_song_info_set_source_internal (RBSongInfo *song_info, + + g_object_get (G_OBJECT (song_info->priv->query_model), "db", &song_info->priv->db, NULL); + ++ rb_song_info_query_model_changed_cb (G_OBJECT (song_info->priv->source), NULL, song_info); + rb_song_info_base_query_model_changed_cb (G_OBJECT (song_info->priv->source), NULL, song_info); + } + +@@ -1514,7 +1515,7 @@ rb_song_info_query_model_changed_cb (GObject *source, + "row-changed", G_CALLBACK (rb_song_info_query_model_inserted_cb), + song_info, 0); + g_signal_connect_object (G_OBJECT (song_info->priv->query_model), +- "entry-deleted", G_CALLBACK (rb_song_info_query_model_deleted_cb), ++ "post-entry-delete", G_CALLBACK (rb_song_info_query_model_deleted_cb), + song_info, 0); + g_signal_connect_object (G_OBJECT (song_info->priv->query_model), + "rows-reordered", G_CALLBACK (rb_song_info_query_model_reordered_cb), +-- +2.17.0 + + +From 223bafcc98a33262d70adc325f3393ac8f4b3ecc Mon Sep 17 00:00:00 2001 +From: gkrithi8 +Date: Tue, 31 Oct 2017 17:06:58 +0530 +Subject: [PATCH 05/12] shell: remove extra pixbuf unref + +https://bugzilla.gnome.org/show_bug.cgi?id=789706 +--- + shell/rb-shell.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/shell/rb-shell.c b/shell/rb-shell.c +index 7ae022795..734b90dcb 100644 +--- a/shell/rb-shell.c ++++ b/shell/rb-shell.c +@@ -375,7 +375,6 @@ load_external_art_cb (RBExtDB *store, GValue *value, RBShell *shell) + + pixbuf = gdk_pixbuf_loader_get_pixbuf (loader); + if (accept_art_pixbuf (pixbuf) == FALSE) { +- g_object_unref (pixbuf); + g_object_unref (loader); + return NULL; + } +-- +2.17.0 + + +From 2604eeb2338a4da7a95f9b6d46223323c864ddf2 Mon Sep 17 00:00:00 2001 +From: gkrithi8 +Date: Mon, 27 Nov 2017 13:31:39 +0530 +Subject: [PATCH 06/12] ext-db: fix crash when store request processing fails + +https://bugzilla.gnome.org/show_bug.cgi?id=727670 +--- + metadata/rb-ext-db.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/metadata/rb-ext-db.c b/metadata/rb-ext-db.c +index 3e241e609..7d8e01573 100644 +--- a/metadata/rb-ext-db.c ++++ b/metadata/rb-ext-db.c +@@ -954,7 +954,11 @@ do_store_request (GSimpleAsyncResult *result, GObject *object, GCancellable *can + */ + g_signal_emit (store, signals[STORE], 0, req->value, &req->data); + +- rb_debug ("stored value into encoded data of type %s", G_VALUE_TYPE_NAME (req->data)); ++ if (req->data != NULL) { ++ rb_debug ("stored value into encoded data of type %s", G_VALUE_TYPE_NAME (req->data)); ++ } else { ++ rb_debug ("failed to store value"); ++ } + } else { + /* indicates we actually didn't get anything, as opposed to communication errors etc. + * providers just shouldn't call rb_ext_db_store_* in that case. +-- +2.17.0 + + +From a6f696f195b3c0aba63267c250ee15ccb058a8a9 Mon Sep 17 00:00:00 2001 +From: Jonathan Matthew +Date: Tue, 30 Jan 2018 08:20:31 +1000 +Subject: [PATCH 07/12] xfade: schedule stream reap after EOS + +This stops streams hanging around in pending-remove state until +the stream after the following stream starts, +--- + backends/gstreamer/rb-player-gst-xfade.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/backends/gstreamer/rb-player-gst-xfade.c b/backends/gstreamer/rb-player-gst-xfade.c +index d553397ce..420cf7f65 100644 +--- a/backends/gstreamer/rb-player-gst-xfade.c ++++ b/backends/gstreamer/rb-player-gst-xfade.c +@@ -1831,6 +1831,7 @@ rb_player_gst_xfade_bus_cb (GstBus *bus, GstMessage *message, RBPlayerGstXFade * + * message on the stream thread and now. + */ + start_waiting_eos_streams (player); ++ schedule_stream_reap (player); + } else { + /* no need to emit EOS here, we already know what to do next */ + rb_debug ("got EOS message for stream %s in REUSING state", stream->uri); +-- +2.17.0 + + +From f984934cfcbda9253bf26460163a546d8da69a01 Mon Sep 17 00:00:00 2001 +From: Bastien Nocera +Date: Wed, 6 Jun 2018 10:48:52 +0200 +Subject: [PATCH 08/12] daap: Fix build warning +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Replace strncpy with memcpy to avoid adding a NUL-byte in the string. + +rhythmbox/plugins/daap/rb-daap-src.c: In function ‘rb_daap_src_change_state’: +rhythmbox/plugins/daap/rb-daap-src.c:286:4: error: ‘strncpy’ output truncated before terminating nul copying 4 bytes from a string of the same length [-Werror=stringop-truncation] + strncpy (httpuri, http, 4); + ^~~~~~~~~~~~~~~~~~~~~~~~~~ +--- + plugins/daap/rb-daap-src.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/plugins/daap/rb-daap-src.c b/plugins/daap/rb-daap-src.c +index 99a55caf4..002ac6a00 100644 +--- a/plugins/daap/rb-daap-src.c ++++ b/plugins/daap/rb-daap-src.c +@@ -283,7 +283,7 @@ rb_daap_src_change_state (GstElement *element, GstStateChange transition) + + /* Set daap://... URI as http:// on souphttpsrc to ready connection. */ + httpuri = g_strdup (src->daap_uri); +- strncpy (httpuri, http, 4); ++ memcpy (httpuri, http, 4); + + g_object_set (src->souphttpsrc, "location", httpuri, NULL); + g_free (httpuri); +-- +2.17.0 + + +From a73dbae82e3b3a782d36261fa2676cce1f589e45 Mon Sep 17 00:00:00 2001 +From: Bastien Nocera +Date: Wed, 6 Jun 2018 11:34:52 +0200 +Subject: [PATCH 09/12] build: Remove -Wcast-align warning + +It generates a false positive error message when trying to compile on +ARM: +/usr/include/gstreamer-1.0/gst/gstbuffer.h: In function 'gst_buffer_ref': +/usr/include/gstreamer-1.0/gst/gstbuffer.h:429:10: error: cast increases required alignment of target type [-Werror=cast-align] + return (GstBuffer *) gst_mini_object_ref (GST_MINI_OBJECT_CAST (buf)); + ^ + +See https://bugzilla.gnome.org/show_bug.cgi?id=767255 +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 746dfb49e..7124db904 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -469,7 +469,7 @@ if test "$GCC" = "yes" -a "$set_more_warnings" != "no"; then + -Wunused-label -Wunused-value \ + -Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes \ + -Wnested-externs -Wpointer-arith \ +- -Wcast-align -Wformat-security -Wall \ ++ -Wformat-security -Wall \ + -Werror -Wno-deprecated-declarations -std=gnu89" + + if echo "$CFLAGS" | grep -q -- '-O' && echo "$CFLAGS" | grep -q -v -- '-O0'; then +-- +2.17.0 + + +From 0994e76b65d0533bd148cab5631362202602b28f Mon Sep 17 00:00:00 2001 +From: Bastien Nocera +Date: Tue, 12 Jun 2018 15:16:29 +0200 +Subject: [PATCH 12/12] sources: Fix state of initial import not reflecting + reality + +When rhythmbox is started with an empty "locations" setting, it will +rewrite the setting with the user's music folder as the only location. +This will start an import job from the setting's "changed" signal. But +we already start another import job from the "load-complete" signal of +the database. + +Make sure only the load-complete signal triggers an import when setting +the "locations" setting is empty on startup. +--- + sources/rb-library-source.c | 29 +++++++++++++---------------- + 1 file changed, 13 insertions(+), 16 deletions(-) + +diff --git a/sources/rb-library-source.c b/sources/rb-library-source.c +index 15ba523d2..378a3e006 100644 +--- a/sources/rb-library-source.c ++++ b/sources/rb-library-source.c +@@ -284,6 +284,10 @@ db_load_complete_cb (RhythmDB *db, RBLibrarySource *source) + if (source->priv->do_initial_import) { + const char *music_dir; + char *music_dir_uri; ++ const char *set_locations[2]; ++ ++ g_signal_handlers_block_by_func (source->priv->db_settings, ++ G_CALLBACK (db_settings_changed_cb), source); + + music_dir = rb_music_dir (); + music_dir_uri = g_filename_to_uri (music_dir, NULL, NULL); +@@ -293,6 +297,13 @@ db_load_complete_cb (RhythmDB *db, RBLibrarySource *source) + g_mkdir_with_parents (music_dir, 0700); + } + ++ set_locations[0] = music_dir_uri; ++ set_locations[1] = NULL; ++ g_settings_set_strv (source->priv->db_settings, "locations", set_locations); ++ ++ g_signal_handlers_unblock_by_func (source->priv->db_settings, ++ G_CALLBACK (db_settings_changed_cb), source); ++ + /* import anything that's already in there */ + job = maybe_create_import_job (source); + rhythmdb_import_job_add_uri (job, music_dir_uri); +@@ -344,22 +355,8 @@ rb_library_source_constructed (GObject *object) + + /* Set up the default library location if there's no library location set */ + locations = g_settings_get_strv (source->priv->db_settings, "locations"); +- if (g_strv_length (locations) == 0) { +- char *music_dir_uri; +- +- music_dir_uri = g_filename_to_uri (rb_music_dir (), NULL, NULL); +- if (music_dir_uri != NULL) { +- const char *set_locations[2]; +- +- set_locations[0] = music_dir_uri; +- set_locations[1] = NULL; +- g_settings_set_strv (source->priv->db_settings, "locations", set_locations); +- +- source->priv->do_initial_import = TRUE; +- +- g_free (music_dir_uri); +- } +- } ++ if (g_strv_length (locations) == 0) ++ source->priv->do_initial_import = TRUE; + g_strfreev (locations); + + songs = rb_source_get_entry_view (RB_SOURCE (source)); +-- +2.17.0 + diff --git a/SPECS/rhythmbox.spec b/SPECS/rhythmbox.spec index c7d2612..c63000a 100644 --- a/SPECS/rhythmbox.spec +++ b/SPECS/rhythmbox.spec @@ -4,15 +4,13 @@ Name: rhythmbox Summary: Music Management Application -Version: 3.4.1 -Release: 1%{?dist} +Version: 3.4.2 +Release: 2%{?dist} License: GPLv2+ with exceptions and GFDL URL: https://wiki.gnome.org/Apps/Rhythmbox #VCS: git://git.gnome.org/rhythmbox Source: https://download.gnome.org/sources/rhythmbox/3.4/%{name}-%{version}.tar.xz -BuildRequires: pkgconfig(clutter-gst-2.0) -BuildRequires: pkgconfig(clutter-gtk-1.0) BuildRequires: pkgconfig(gobject-introspection-1.0) >= 0.10.0 BuildRequires: pkgconfig(grilo-0.3) >= 0.3.0 BuildRequires: pkgconfig(gstreamer-1.0) @@ -29,7 +27,6 @@ BuildRequires: pkgconfig(libpeas-gtk-1.0) BuildRequires: pkgconfig(libsecret-1) >= %{libsecret_version} BuildRequires: pkgconfig(libsoup-2.4) >= 2.34.0 BuildRequires: pkgconfig(libxml-2.0) -BuildRequires: pkgconfig(mx-1.0) BuildRequires: pkgconfig(tdb) BuildRequires: pkgconfig(totem-plparser) >= 3.2.0 BuildRequires: gettext @@ -38,6 +35,7 @@ BuildRequires: itstool BuildRequires: kernel-headers BuildRequires: libappstream-glib BuildRequires: yelp-tools +BuildRequires: git ExcludeArch: s390 s390x @@ -47,6 +45,9 @@ Requires: libdmapsharing%{?_isa} >= %{libdmapsharing_version} Requires: libsecret%{?_isa} >= %{libsecret_version} Requires: media-player-info +BuildRequires: autoconf automake libtool intltool gtk-doc +Patch0: rb-3.4.2-bug-fixes.patch + Obsoletes: rhythmbox-upnp < %{version}-%{release} Provides: rhythmbox-upnp = %{version}-%{release} @@ -67,7 +68,8 @@ This package contains the development files necessary to create a Rhythmbox plugin. %prep -%autosetup -p1 +%autosetup -S git -p1 +AUTOPOINT='intltoolize --automake --copy' autoreconf --force --install --verbose %build %configure \ @@ -162,7 +164,6 @@ glib-compile-schemas %{_datadir}/glib-2.0/schemas >&/dev/null || : %{_libdir}/rhythmbox/plugins/mtpdevice/ %{_libdir}/rhythmbox/plugins/notification/ %{_libdir}/rhythmbox/plugins/power-manager/ -%{_libdir}/rhythmbox/plugins/visualizer/ %{_libdir}/rhythmbox/sample-plugins/ %{_libexecdir}/rhythmbox-metadata %{_mandir}/man1/rhythmbox*.1* @@ -173,6 +174,15 @@ glib-compile-schemas %{_datadir}/glib-2.0/schemas >&/dev/null || : %{_datadir}/gir-1.0/*.gir %changelog +* Wed Jun 13 2018 Bastien Nocera - 3.4.2-2 ++ rhythmbox-3.4.2-2 +- Fix a number of bugs +- Resolves: #1570024 + +* Mon Oct 09 2017 Kalev Lember - 3.4.2-1 +- Update to 3.4.2 +- Resolves: #1570024 + * Wed Mar 01 2017 Bastien Nocera - 3.4.1-1 + rhythmbox-3.4.1-1 - Rebase to 3.4.1