diff options
Diffstat (limited to 'media-sound/audacious/files')
4 files changed, 153 insertions, 0 deletions
diff --git a/media-sound/audacious/files/audacious-3.10-dbus-crash.patch b/media-sound/audacious/files/audacious-3.10-dbus-crash.patch new file mode 100644 index 000000000000..83b9c74f98cc --- /dev/null +++ b/media-sound/audacious/files/audacious-3.10-dbus-crash.patch @@ -0,0 +1,60 @@ +From 1528e780825b1fc49639ea16d332c5752051dab7 Mon Sep 17 00:00:00 2001 +From: John Lindgren <john@jlindgren.net> +Date: Sun, 19 Aug 2018 14:12:30 -0400 +Subject: [PATCH] Fix crash when an invalid field name is sent via D-Bus. + Closes: #817. + +Regression introduced by commit 203b41f8e249. +--- + src/audacious/dbus-server.cc | 31 +++++++++++++++++-------------- + 1 file changed, 17 insertions(+), 14 deletions(-) + +diff --git a/src/audacious/dbus-server.cc b/src/audacious/dbus-server.cc +index 7602ace22..20a6c5839 100644 +--- a/src/audacious/dbus-server.cc ++++ b/src/audacious/dbus-server.cc +@@ -635,27 +635,30 @@ static gboolean do_song_title (Obj * obj, Invoc * invoc, unsigned pos) + static gboolean do_song_tuple (Obj * obj, Invoc * invoc, unsigned pos, const char * key) + { + Tuple::Field field = Tuple::field_by_name (key); +- Tuple tuple; +- GVariant * var; ++ GVariant * var = nullptr; + + if (field >= 0) +- tuple = CURRENT.entry_tuple (pos); +- +- switch (tuple.get_value_type (field)) + { +- case Tuple::String: +- var = g_variant_new_string (tuple.get_str (field)); +- break; ++ Tuple tuple = CURRENT.entry_tuple (pos); + +- case Tuple::Int: +- var = g_variant_new_int32 (tuple.get_int (field)); +- break; ++ switch (tuple.get_value_type (field)) ++ { ++ case Tuple::String: ++ var = g_variant_new_string (tuple.get_str (field)); ++ break; + +- default: +- var = g_variant_new_string (""); +- break; ++ case Tuple::Int: ++ var = g_variant_new_int32 (tuple.get_int (field)); ++ break; ++ ++ default: ++ break; ++ } + } + ++ if (! var) ++ var = g_variant_new_string (""); ++ + FINISH2 (song_tuple, g_variant_new_variant (var)); + return true; + } diff --git a/media-sound/audacious/files/audacious-3.10-ui-freeze.patch b/media-sound/audacious/files/audacious-3.10-ui-freeze.patch new file mode 100644 index 000000000000..da05bc5b0009 --- /dev/null +++ b/media-sound/audacious/files/audacious-3.10-ui-freeze.patch @@ -0,0 +1,30 @@ +From 8f9745a5a539e44244d5e8200c61ed443c638aad Mon Sep 17 00:00:00 2001 +From: John Lindgren <john@jlindgren.net> +Date: Sun, 19 Aug 2018 13:47:17 -0400 +Subject: [PATCH] Prevent UI freeze when displaying song info window. Closes: + #822. + +--- + src/libaudcore/probe.cc | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/src/libaudcore/probe.cc b/src/libaudcore/probe.cc +index 5c57ef884..38cf73d96 100644 +--- a/src/libaudcore/probe.cc ++++ b/src/libaudcore/probe.cc +@@ -242,6 +242,15 @@ EXPORT bool aud_custom_infowin (const char * filename, PluginHandle * decoder) + if (! strncmp (filename, "stdin://", 8)) + return false; + ++ // In hindsight, a flag should have been added indicating whether a ++ // plugin provides a custom info window or not. Currently, only two ++ // plugins do so. Since custom info windows are deprecated anyway, ++ // check for those two plugins explicitly and in all other cases, ++ // don't open the input file to prevent freezing the UI. ++ const char * base = aud_plugin_get_basename (decoder); ++ if (strcmp (base, "amidi-plug") && strcmp (base, "vtx")) ++ return false; ++ + auto ip = (InputPlugin *) aud_plugin_get_header (decoder); + if (! ip) + return false; diff --git a/media-sound/audacious/files/audacious-3.10-use-after-free.patch b/media-sound/audacious/files/audacious-3.10-use-after-free.patch new file mode 100644 index 000000000000..8271a3d6d1b0 --- /dev/null +++ b/media-sound/audacious/files/audacious-3.10-use-after-free.patch @@ -0,0 +1,38 @@ +From 1d34f6799b8f5910fc6863ae96afd5ab035e830f Mon Sep 17 00:00:00 2001 +From: John Lindgren <john@jlindgren.net> +Date: Thu, 20 Sep 2018 13:46:52 -0400 +Subject: [PATCH] audqt: Use deleteLater() to prevent use-after-free in Qt + event handling. Closes: #828. + +--- + src/libaudqt/infopopup-qt.cc | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/src/libaudqt/infopopup-qt.cc b/src/libaudqt/infopopup-qt.cc +index fdbba41d2..81dd87f5c 100644 +--- a/src/libaudqt/infopopup-qt.cc ++++ b/src/libaudqt/infopopup-qt.cc +@@ -176,7 +176,9 @@ static InfoPopup * s_infopopup; + + static void infopopup_show (const String & filename, const Tuple & tuple) + { +- delete s_infopopup; ++ if (s_infopopup) ++ s_infopopup->deleteLater (); ++ + s_infopopup = new InfoPopup (filename, tuple); + + QObject::connect (s_infopopup, & QObject::destroyed, [] () { +@@ -206,7 +208,11 @@ EXPORT void infopopup_show_current () + + EXPORT void infopopup_hide () + { +- delete s_infopopup; ++ /* This function can be called from an enter/leave event, and Qt does not ++ * like widgets being deleted from such events. This is debatably a bug in ++ * Qt, but deleteLater() is an effective workaround. */ ++ if (s_infopopup) ++ s_infopopup->deleteLater (); + } + + } // namespace audqt diff --git a/media-sound/audacious/files/audacious-3.10-volume-slider-boundaries.patch b/media-sound/audacious/files/audacious-3.10-volume-slider-boundaries.patch new file mode 100644 index 000000000000..99155bf79e8c --- /dev/null +++ b/media-sound/audacious/files/audacious-3.10-volume-slider-boundaries.patch @@ -0,0 +1,25 @@ +From 473ee3b3b0ce09feb23afcfc0ff276986db4f1af Mon Sep 17 00:00:00 2001 +From: Eugene Paskevich <eugene@raptor.kiev.ua> +Date: Sun, 4 Nov 2018 21:45:07 +0200 +Subject: [PATCH] Qt: don't let the volume slider go beyong upper and/or left + screen boundaries. + +--- + src/libaudqt/volumebutton.cc | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/libaudqt/volumebutton.cc b/src/libaudqt/volumebutton.cc +index e9144cb60..71edf16a1 100644 +--- a/src/libaudqt/volumebutton.cc ++++ b/src/libaudqt/volumebutton.cc +@@ -134,7 +134,9 @@ void VolumeButton::showSlider () + int dy = container_size.height () / 2 - button_size.height () / 2; + + QPoint pos = mapToGlobal (QPoint (0, 0)); +- pos += QPoint (-dx, -dy); ++ pos -= QPoint (dx, dy); ++ pos.setX(qMax(pos.x(), 0)); ++ pos.setY(qMax(pos.y(), 0)); + + m_container->move (pos); + window_bring_to_front (m_container); |