Gentoo Archives: gentoo-commits

From: Andreas Sturmlechner <asturm@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: media-plugins/audacious-plugins/, media-plugins/audacious-plugins/files/
Date: Sat, 17 Nov 2018 22:00:38
Message-Id: 1542492004.dd997071f2419d01998a4283731fe6b25e3309fa.asturm@gentoo
1 commit: dd997071f2419d01998a4283731fe6b25e3309fa
2 Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
3 AuthorDate: Sat Nov 17 21:53:23 2018 +0000
4 Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
5 CommitDate: Sat Nov 17 22:00:04 2018 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=dd997071
7
8 media-plugins/audacious-plugins: 3.10 version bump
9
10 Bug: https://bugs.gentoo.org/640672
11 Package-Manager: Portage-2.3.51, Repoman-2.3.12
12 Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>
13
14 media-plugins/audacious-plugins/Manifest | 1 +
15 .../audacious-plugins-3.10.ebuild | 154 +++++++++++++++++++++
16 .../audacious-plugins-3.10-fix-slow-search.patch | 108 +++++++++++++++
17 3 files changed, 263 insertions(+)
18
19 diff --git a/media-plugins/audacious-plugins/Manifest b/media-plugins/audacious-plugins/Manifest
20 index 324166a4f33..607c7195c5e 100644
21 --- a/media-plugins/audacious-plugins/Manifest
22 +++ b/media-plugins/audacious-plugins/Manifest
23 @@ -1,2 +1,3 @@
24 +DIST audacious-plugins-3.10.tar.bz2 1701877 BLAKE2B 4db7351af494ff5b7d2a7968524e2480f321505759f4a6532dd86f8fd87f43ab0a66e9f1fc75cfcbc8c59d35c1071048b61a8452fa6e041cd1667872f5b5699e SHA512 88dd93b5a7f6582ec42cf539d1000de0900cce683f4de85d8a17f57c7ba34545c6277882cad1505cb6682ee7b885ffcd1fe5675f7e24dc3e2a650615789d9d52
25 DIST audacious-plugins-3.9-gtk3.tar.bz2 1842950 BLAKE2B 55f373be204a9b4c9cff41d41d43c4776f680ab203643e90e5d338bec2e7f8a4c60cda9caa08e461089a475f3ec1bc237538f781718eb0d26a4365743337e977 SHA512 e2529af761bc97e589cac08689b16db657096b1bbfcc802789726ae1b472746025bec1b492de52eef755d7b50574d09b9250761bf701b1ca37f8a0e8db0f207b
26 DIST audacious-plugins-3.9.tar.bz2 1843084 BLAKE2B fa3a8433a869a2df0589f59e12513adcc0da0545b53ee441db4b18be7e12334b4125bd60b48902c37041041555859ab19df814c483f7d971214077e9980148b6 SHA512 00c8c53d69995ca1fedb91c7df609cc6c65b13e1af23b98a2fbda143c02ac554cc2c42c01f1c593af252e36bfb85b6324f2daca8632d3b672c69fb4dead2e3fa
27
28 diff --git a/media-plugins/audacious-plugins/audacious-plugins-3.10.ebuild b/media-plugins/audacious-plugins/audacious-plugins-3.10.ebuild
29 new file mode 100644
30 index 00000000000..13310dcdcc9
31 --- /dev/null
32 +++ b/media-plugins/audacious-plugins/audacious-plugins-3.10.ebuild
33 @@ -0,0 +1,154 @@
34 +# Copyright 1999-2018 Gentoo Authors
35 +# Distributed under the terms of the GNU General Public License v2
36 +
37 +EAPI=6
38 +
39 +MY_P="${P/_/-}"
40 +
41 +DESCRIPTION="Lightweight and versatile audio player"
42 +HOMEPAGE="https://audacious-media-player.org/"
43 +
44 +if [[ ${PV} == *9999 ]]; then
45 + inherit autotools git-r3
46 + EGIT_REPO_URI="https://github.com/audacious-media-player/audacious-plugins.git"
47 +else
48 + SRC_URI="https://distfiles.audacious-media-player.org/${MY_P}.tar.bz2"
49 + KEYWORDS="~amd64 ~x86"
50 +fi
51 +
52 +LICENSE="GPL-2"
53 +SLOT="0"
54 +IUSE="aac +adplug alsa ampache aosd bs2b cdda cue ffmpeg flac fluidsynth hotkeys http gme jack lame libav
55 + libnotify libsamplerate lirc mms modplug mp3 nls pulseaudio scrobbler sdl sid sndfile soxr speedpitch vorbis wavpack"
56 +REQUIRED_USE="
57 + || ( alsa jack pulseaudio sdl )
58 + ampache? ( http )"
59 +
60 +# The following plugins REQUIRE a GUI build of audacious, because non-GUI
61 +# builds do NOT install the libaudgui library & headers.
62 +# Plugins without a configure option:
63 +# alarm
64 +# albumart
65 +# delete-files
66 +# ladspa
67 +# playlist-manager
68 +# search-tool
69 +# skins
70 +# vtx
71 +# Plugins with a configure option:
72 +# glspectrum
73 +# gtkui
74 +# hotkey
75 +# notify
76 +# statusicon
77 +RDEPEND="
78 + app-arch/unzip
79 + dev-libs/dbus-glib
80 + dev-libs/glib
81 + dev-libs/libxml2:2
82 + dev-qt/qtcore:5
83 + dev-qt/qtgui:5
84 + dev-qt/qtmultimedia:5
85 + dev-qt/qtwidgets:5
86 + media-libs/adplug
87 + ~media-sound/audacious-${PV}
88 + aac? ( >=media-libs/faad2-2.7 )
89 + alsa? ( >=media-libs/alsa-lib-1.0.16 )
90 + ampache? ( =media-libs/ampache_browser-1* )
91 + aosd? (
92 + x11-libs/libXrender
93 + x11-libs/libXcomposite
94 + )
95 + bs2b? ( media-libs/libbs2b )
96 + cdda? (
97 + >=media-libs/libcddb-1.2.1
98 + dev-libs/libcdio-paranoia
99 + )
100 + cue? ( media-libs/libcue )
101 + ffmpeg? ( >=virtual/ffmpeg-0.7.3 )
102 + flac? (
103 + >=media-libs/libvorbis-1.0
104 + >=media-libs/flac-1.2.1-r1
105 + )
106 + fluidsynth? ( media-sound/fluidsynth )
107 + http? ( >=net-libs/neon-0.26.4 )
108 + jack? (
109 + >=media-libs/bio2jack-0.4
110 + virtual/jack
111 + )
112 + lame? ( media-sound/lame )
113 + libsamplerate? ( media-libs/libsamplerate:= )
114 + lirc? ( app-misc/lirc )
115 + mms? ( >=media-libs/libmms-0.3 )
116 + modplug? ( media-libs/libmodplug )
117 + mp3? ( >=media-sound/mpg123-1.12.1 )
118 + pulseaudio? ( >=media-sound/pulseaudio-0.9.3 )
119 + scrobbler? ( net-misc/curl )
120 + sdl? ( media-libs/libsdl2[sound] )
121 + sid? ( >=media-libs/libsidplayfp-1.0.0 )
122 + sndfile? ( >=media-libs/libsndfile-1.0.17-r1 )
123 + soxr? ( media-libs/soxr )
124 + speedpitch? ( media-libs/libsamplerate:= )
125 + vorbis? (
126 + >=media-libs/libvorbis-1.2.0
127 + >=media-libs/libogg-1.1.3
128 + )
129 + wavpack? ( >=media-sound/wavpack-4.50.1-r1 )"
130 +
131 +DEPEND="${RDEPEND}
132 + dev-util/gdbus-codegen
133 + virtual/pkgconfig
134 + nls? ( dev-util/intltool )"
135 +
136 +PATCHES=( "${FILESDIR}/${P}-fix-slow-search.patch" )
137 +
138 +S="${WORKDIR}/${MY_P}"
139 +
140 +src_configure() {
141 + if ! use mp3 ; then
142 + ewarn "MP3 support is optional, you may want to enable the mp3 USE-flag"
143 + fi
144 +
145 + econf \
146 + --enable-mpris2 \
147 + --enable-qt \
148 + --enable-qtaudio \
149 + --enable-songchange \
150 + --disable-coreaudio \
151 + --disable-gtk \
152 + --disable-notify \
153 + --disable-oss4 \
154 + --disable-qtglspectrum \
155 + --disable-sndio \
156 + $(use_enable aac) \
157 + $(use_enable alsa) \
158 + $(use_enable ampache) \
159 + $(use_enable aosd) \
160 + $(use_enable bs2b) \
161 + $(use_enable cdda cdaudio) \
162 + $(use_enable cue) \
163 + $(use_enable flac) \
164 + $(use_enable fluidsynth amidiplug) \
165 + $(use_enable flac filewriter) \
166 + $(use_enable gme console) \
167 + $(use_enable hotkeys hotkey) \
168 + $(use_enable http neon) \
169 + $(use_enable jack) \
170 + $(use_enable lame filewriter_mp3) \
171 + $(use_enable libsamplerate resample) \
172 + $(use_enable lirc) \
173 + $(use_enable mms) \
174 + $(use_enable modplug) \
175 + $(use_enable mp3 mpg123) \
176 + $(use_enable nls) \
177 + $(use_enable pulseaudio pulse) \
178 + $(use_enable scrobbler scrobbler2) \
179 + $(use_enable sdl sdlout) \
180 + $(use_enable sid) \
181 + $(use_enable sndfile) \
182 + $(use_enable soxr) \
183 + $(use_enable speedpitch) \
184 + $(use_enable vorbis) \
185 + $(use_enable wavpack) \
186 + $(use_with ffmpeg ffmpeg $(usex libav libav ffmpeg))
187 +}
188
189 diff --git a/media-plugins/audacious-plugins/files/audacious-plugins-3.10-fix-slow-search.patch b/media-plugins/audacious-plugins/files/audacious-plugins-3.10-fix-slow-search.patch
190 new file mode 100644
191 index 00000000000..3012d313873
192 --- /dev/null
193 +++ b/media-plugins/audacious-plugins/files/audacious-plugins-3.10-fix-slow-search.patch
194 @@ -0,0 +1,108 @@
195 +From 9d162207ef01c5972e4bb718d390c494f0ad0241 Mon Sep 17 00:00:00 2001
196 +From: John Lindgren <john@×××××××××.net>
197 +Date: Tue, 4 Sep 2018 23:39:00 -0400
198 +Subject: [PATCH] qtui: Fix slow searching on large playlists. Closes: #819.
199 +
200 +---
201 + src/qtui/playlist-qt.cc | 58 +++++++++++++++++++++++++++++------------
202 + src/qtui/playlist-qt.h | 1 +
203 + 2 files changed, 42 insertions(+), 17 deletions(-)
204 +
205 +diff --git a/src/qtui/playlist-qt.cc b/src/qtui/playlist-qt.cc
206 +index 28c480ead..750d87c37 100644
207 +--- a/src/qtui/playlist-qt.cc
208 ++++ b/src/qtui/playlist-qt.cc
209 +@@ -89,6 +89,31 @@ int PlaylistWidget::indexToRow (const QModelIndex & index)
210 + return proxyModel->mapToSource (index).row ();
211 + }
212 +
213 ++QModelIndex PlaylistWidget::visibleIndexNear (int row)
214 ++{
215 ++ QModelIndex index = rowToIndex (row);
216 ++ if (index.isValid ())
217 ++ return index;
218 ++
219 ++ int n_entries = m_playlist.n_entries ();
220 ++
221 ++ for (int r = row + 1; r < n_entries; r ++)
222 ++ {
223 ++ index = rowToIndex (r);
224 ++ if (index.isValid ())
225 ++ return index;
226 ++ }
227 ++
228 ++ for (int r = row - 1; r >= 0; r --)
229 ++ {
230 ++ index = rowToIndex (r);
231 ++ if (index.isValid ())
232 ++ return index;
233 ++ }
234 ++
235 ++ return index;
236 ++}
237 ++
238 + void PlaylistWidget::contextMenuEvent (QContextMenuEvent * event)
239 + {
240 + if (contextMenu)
241 +@@ -379,33 +404,32 @@ void PlaylistWidget::playCurrentIndex ()
242 +
243 + void PlaylistWidget::setFilter (const char * text)
244 + {
245 ++ // Save the current focus before filtering
246 ++ int focus = m_playlist.get_focus ();
247 ++
248 ++ // Empty the model before updating the filter. This prevents Qt from
249 ++ // performing a series of "rows added" or "rows deleted" updates, which can
250 ++ // be very slow (worst case O(N^2) complexity) on a large playlist.
251 ++ model->entriesRemoved (0, model->rowCount ());
252 ++
253 ++ // Update the filter
254 + proxyModel->setFilter (text);
255 +
256 +- int focus = m_playlist.get_focus ();
257 +- QModelIndex index;
258 ++ // Repopulate the model
259 ++ model->entriesAdded (0, m_playlist.n_entries ());
260 +
261 +- // If there was a valid focus before filtering, Qt updates it for us via
262 +- // currentChanged(). If not, we will set focus on the first visible row.
263 ++ // If the previously focused row is no longer visible with the new filter,
264 ++ // try to find a nearby one that is, and focus it.
265 ++ auto index = visibleIndexNear (focus);
266 +
267 +- if (focus >= 0)
268 +- index = rowToIndex (focus);
269 +- else
270 ++ if (index.isValid ())
271 + {
272 +- if (! proxyModel->rowCount ())
273 +- return;
274 +-
275 +- index = proxyModel->index (0, 0);
276 + focus = indexToRow (index);
277 + m_playlist.set_focus (focus);
278 +- }
279 +-
280 +- if (! m_playlist.entry_selected (focus))
281 +- {
282 + m_playlist.select_all (false);
283 + m_playlist.select_entry (focus, true);
284 ++ scrollTo (index);
285 + }
286 +-
287 +- scrollTo (index);
288 + }
289 +
290 + void PlaylistWidget::setFirstVisibleColumn (int col)
291 +diff --git a/src/qtui/playlist-qt.h b/src/qtui/playlist-qt.h
292 +index a2894323c..df44205af 100644
293 +--- a/src/qtui/playlist-qt.h
294 ++++ b/src/qtui/playlist-qt.h
295 +@@ -66,6 +66,7 @@ class PlaylistWidget : public QTreeView
296 +
297 + QModelIndex rowToIndex (int row);
298 + int indexToRow (const QModelIndex & index);
299 ++ QModelIndex visibleIndexNear (int row);
300 +
301 + void getSelectedRanges (int rowsBefore, int rowsAfter,
302 + QItemSelection & selected, QItemSelection & deselected);