Registration is now invite-only. Any user can make an invite, you need to create it here and give resulting link to someone to register.

Project import/audacious - Diff 0fc65a2549...1c27cb8bd9

... ... --- a/.abf.yml
... ... +++ b/.abf.yml
... ... @@ -1,2 +1,2 @@
1 1
sources:
2
  audacious-3.9.tar.bz2: fd7c404db7aead9517f515f0a3df5c4a66ea984d
2
  audacious-3.10.tar.bz2: 451e5122f2042cc08798fb75a3ac14b1a155d21e
view file @ 1c27cb8bd9
... ... --- a/audacious.spec
... ... +++ b/audacious.spec
... ... @@ -10,13 +10,20 @@
10 10
11 11
Summary:	A versatile and handy media player
12 12
Name:		audacious
13
Version:	3.9
14
Release:	4
13
Version:	3.10
14
Release:	3
15 15
Epoch:		5
16 16
License:	GPLv3+
17 17
Group:		Sound
18 18
Url:		http://audacious-media-player.org/
19 19
Source0:	http://distfiles.audacious-media-player.org/%{name}-%{version}.tar.bz2
20
21
# These patches are commits, picked from upstrem master between v3.10 and v3.11,
22
# remove them on updating to audacious v3.11
23
Patch817:	redmine817.patch
24
Patch822:	redmine822.patch
25
Patch828:	redmine828.patch
26
20 27
BuildRequires:	desktop-file-utils
21 28
BuildRequires:	gettext
22 29
BuildRequires:	gtk-doc
... ... @@ -60,6 +67,7 @@ Its primary goals are usability and usage of current desktop standards.
67 67
This package contains the library needed by %{name}.
68 68
69 69
%files -n %{libaudcore}
70
%doc COPYING
70 71
%{_libdir}/libaudcore.so.%{core_major}*
71 72
72 73
#-----------------------------------------------------------------------------
... ... @@ -75,6 +83,7 @@ Its primary goals are usability and usage of current desktop standards.
83 83
This package contains the library needed by %{name}.
84 84
85 85
%files -n %{libaudgui}
86
%doc COPYING
86 87
%{_libdir}/libaudgui.so.%{gui_major}*
87 88
88 89
#-----------------------------------------------------------------------------
... ... @@ -90,6 +99,7 @@ Its primary goals are usability and usage of current desktop standards.
99 99
This package contains the library needed by %{name}.
100 100
101 101
%files -n %{libaudqt}
102
%doc COPYING
102 103
%{_libdir}/libaudqt.so.%{qt_major}*
103 104
104 105
#-----------------------------------------------------------------------------
... ... @@ -108,6 +118,7 @@ Its primary goals are usability and usage of current desktop standards.
118 118
This package contains the library needed by %{name}.
119 119
120 120
%files -n %{libaudtag}
121
%doc COPYING
121 122
%{_libdir}/libaudtag.so.%{tag_major}*
122 123
123 124
#-----------------------------------------------------------------------------
... ... @@ -141,6 +152,9 @@ which use %{name}.
152 152
153 153
%prep
154 154
%setup -q
155
%patch817 -p1
156
%patch822 -p1
157
%patch828 -p1
155 158
156 159
%build
157 160
%configure2_5x \
... ... @@ -148,6 +162,7 @@ which use %{name}.
162 162
	--enable-qt
163 163
%make
164 164
165
165 166
%install
166 167
%makeinstall_std
167 168
... ... @@ -167,7 +182,7 @@ desktop-file-edit \
182 182
	--add-not-show-in="KDE;LXQt;" \
183 183
	%{buildroot}%{_datadir}/applications/%{name}.desktop
184 184
185
# install the contributed appdata.xml file
185
# Install the contributed appdata.xml file
186 186
install -d %{buildroot}%{_datadir}/appdata
187 187
install -m 644 contrib/%{name}.appdata.xml %{buildroot}%{_datadir}/appdata
188 188
view file @ 1c27cb8bd9
... ... --- /dev/null
... ... +++ b/redmine817.patch
... ... @@ -0,0 +1,60 @@
1
From 1528e780825b1fc49639ea16d332c5752051dab7 Mon Sep 17 00:00:00 2001
2
From: John Lindgren <john@jlindgren.net>
3
Date: Sun, 19 Aug 2018 14:12:30 -0400
4
Subject: [PATCH] Fix crash when an invalid field name is sent via D-Bus. 
5
 Closes: #817.
6
7
Regression introduced by commit 203b41f8e249.
8
---
9
 src/audacious/dbus-server.cc | 31 +++++++++++++++++--------------
10
 1 file changed, 17 insertions(+), 14 deletions(-)
11
12
diff --git a/src/audacious/dbus-server.cc b/src/audacious/dbus-server.cc
13
index 7602ace22..20a6c5839 100644
14
--- a/src/audacious/dbus-server.cc
15
+++ b/src/audacious/dbus-server.cc
16
@@ -635,27 +635,30 @@ static gboolean do_song_title (Obj * obj, Invoc * invoc, unsigned pos)
17
 static gboolean do_song_tuple (Obj * obj, Invoc * invoc, unsigned pos, const char * key)
18
 {
19
     Tuple::Field field = Tuple::field_by_name (key);
20
-    Tuple tuple;
21
-    GVariant * var;
22
+    GVariant * var = nullptr;
23
 
24
     if (field >= 0)
25
-        tuple = CURRENT.entry_tuple (pos);
26
-
27
-    switch (tuple.get_value_type (field))
28
     {
29
-    case Tuple::String:
30
-        var = g_variant_new_string (tuple.get_str (field));
31
-        break;
32
+        Tuple tuple = CURRENT.entry_tuple (pos);
33
 
34
-    case Tuple::Int:
35
-        var = g_variant_new_int32 (tuple.get_int (field));
36
-        break;
37
+        switch (tuple.get_value_type (field))
38
+        {
39
+        case Tuple::String:
40
+            var = g_variant_new_string (tuple.get_str (field));
41
+            break;
42
 
43
-    default:
44
-        var = g_variant_new_string ("");
45
-        break;
46
+        case Tuple::Int:
47
+            var = g_variant_new_int32 (tuple.get_int (field));
48
+            break;
49
+
50
+        default:
51
+            break;
52
+        }
53
     }
54
 
55
+    if (! var)
56
+        var = g_variant_new_string ("");
57
+
58
     FINISH2 (song_tuple, g_variant_new_variant (var));
59
     return true;
60
 }
view file @ 1c27cb8bd9
... ... --- /dev/null
... ... +++ b/redmine822.patch
... ... @@ -0,0 +1,30 @@
1
From 8f9745a5a539e44244d5e8200c61ed443c638aad Mon Sep 17 00:00:00 2001
2
From: John Lindgren <john@jlindgren.net>
3
Date: Sun, 19 Aug 2018 13:47:17 -0400
4
Subject: [PATCH] Prevent UI freeze when displaying song info window.  Closes:
5
 #822.
6
7
---
8
 src/libaudcore/probe.cc | 9 +++++++++
9
 1 file changed, 9 insertions(+)
10
11
diff --git a/src/libaudcore/probe.cc b/src/libaudcore/probe.cc
12
index 5c57ef884..38cf73d96 100644
13
--- a/src/libaudcore/probe.cc
14
+++ b/src/libaudcore/probe.cc
15
@@ -242,6 +242,15 @@ EXPORT bool aud_custom_infowin (const char * filename, PluginHandle * decoder)
16
     if (! strncmp (filename, "stdin://", 8))
17
         return false;
18
 
19
+    // In hindsight, a flag should have been added indicating whether a
20
+    // plugin provides a custom info window or not.  Currently, only two
21
+    // plugins do so.  Since custom info windows are deprecated anyway,
22
+    // check for those two plugins explicitly and in all other cases,
23
+    // don't open the input file to prevent freezing the UI.
24
+    const char * base = aud_plugin_get_basename (decoder);
25
+    if (strcmp (base, "amidi-plug") && strcmp (base, "vtx"))
26
+        return false;
27
+
28
     auto ip = (InputPlugin *) aud_plugin_get_header (decoder);
29
     if (! ip)
30
         return false;
view file @ 1c27cb8bd9
... ... --- /dev/null
... ... +++ b/redmine828.patch
... ... @@ -0,0 +1,38 @@
1
From 1d34f6799b8f5910fc6863ae96afd5ab035e830f Mon Sep 17 00:00:00 2001
2
From: John Lindgren <john@jlindgren.net>
3
Date: Thu, 20 Sep 2018 13:46:52 -0400
4
Subject: [PATCH] audqt: Use deleteLater() to prevent use-after-free in Qt
5
 event handling.  Closes: #828.
6
7
---
8
 src/libaudqt/infopopup-qt.cc | 10 ++++++++--
9
 1 file changed, 8 insertions(+), 2 deletions(-)
10
11
diff --git a/src/libaudqt/infopopup-qt.cc b/src/libaudqt/infopopup-qt.cc
12
index fdbba41d2..81dd87f5c 100644
13
--- a/src/libaudqt/infopopup-qt.cc
14
+++ b/src/libaudqt/infopopup-qt.cc
15
@@ -176,7 +176,9 @@ static InfoPopup * s_infopopup;
16
 
17
 static void infopopup_show (const String & filename, const Tuple & tuple)
18
 {
19
-    delete s_infopopup;
20
+    if (s_infopopup)
21
+        s_infopopup->deleteLater ();
22
+
23
     s_infopopup = new InfoPopup (filename, tuple);
24
 
25
     QObject::connect (s_infopopup, & QObject::destroyed, [] () {
26
@@ -206,7 +208,11 @@ EXPORT void infopopup_show_current ()
27
 
28
 EXPORT void infopopup_hide ()
29
 {
30
-    delete s_infopopup;
31
+    /* This function can be called from an enter/leave event, and Qt does not
32
+     * like widgets being deleted from such events.  This is debatably a bug in
33
+     * Qt, but deleteLater() is an effective workaround. */
34
+    if (s_infopopup)
35
+        s_infopopup->deleteLater ();
36
 }
37
 
38
 } // namespace audqt