commit:     dd997071f2419d01998a4283731fe6b25e3309fa
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Sat Nov 17 21:53:23 2018 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Sat Nov 17 22:00:04 2018 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=dd997071

media-plugins/audacious-plugins: 3.10 version bump

Bug: https://bugs.gentoo.org/640672
Package-Manager: Portage-2.3.51, Repoman-2.3.12
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>

 media-plugins/audacious-plugins/Manifest           |   1 +
 .../audacious-plugins-3.10.ebuild                  | 154 +++++++++++++++++++++
 .../audacious-plugins-3.10-fix-slow-search.patch   | 108 +++++++++++++++
 3 files changed, 263 insertions(+)

diff --git a/media-plugins/audacious-plugins/Manifest 
b/media-plugins/audacious-plugins/Manifest
index 324166a4f33..607c7195c5e 100644
--- a/media-plugins/audacious-plugins/Manifest
+++ b/media-plugins/audacious-plugins/Manifest
@@ -1,2 +1,3 @@
+DIST audacious-plugins-3.10.tar.bz2 1701877 BLAKE2B 
4db7351af494ff5b7d2a7968524e2480f321505759f4a6532dd86f8fd87f43ab0a66e9f1fc75cfcbc8c59d35c1071048b61a8452fa6e041cd1667872f5b5699e
 SHA512 
88dd93b5a7f6582ec42cf539d1000de0900cce683f4de85d8a17f57c7ba34545c6277882cad1505cb6682ee7b885ffcd1fe5675f7e24dc3e2a650615789d9d52
 DIST audacious-plugins-3.9-gtk3.tar.bz2 1842950 BLAKE2B 
55f373be204a9b4c9cff41d41d43c4776f680ab203643e90e5d338bec2e7f8a4c60cda9caa08e461089a475f3ec1bc237538f781718eb0d26a4365743337e977
 SHA512 
e2529af761bc97e589cac08689b16db657096b1bbfcc802789726ae1b472746025bec1b492de52eef755d7b50574d09b9250761bf701b1ca37f8a0e8db0f207b
 DIST audacious-plugins-3.9.tar.bz2 1843084 BLAKE2B 
fa3a8433a869a2df0589f59e12513adcc0da0545b53ee441db4b18be7e12334b4125bd60b48902c37041041555859ab19df814c483f7d971214077e9980148b6
 SHA512 
00c8c53d69995ca1fedb91c7df609cc6c65b13e1af23b98a2fbda143c02ac554cc2c42c01f1c593af252e36bfb85b6324f2daca8632d3b672c69fb4dead2e3fa

diff --git a/media-plugins/audacious-plugins/audacious-plugins-3.10.ebuild 
b/media-plugins/audacious-plugins/audacious-plugins-3.10.ebuild
new file mode 100644
index 00000000000..13310dcdcc9
--- /dev/null
+++ b/media-plugins/audacious-plugins/audacious-plugins-3.10.ebuild
@@ -0,0 +1,154 @@
+# Copyright 1999-2018 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+MY_P="${P/_/-}"
+
+DESCRIPTION="Lightweight and versatile audio player"
+HOMEPAGE="https://audacious-media-player.org/";
+
+if [[ ${PV} == *9999 ]]; then
+       inherit autotools git-r3
+       
EGIT_REPO_URI="https://github.com/audacious-media-player/audacious-plugins.git";
+else
+       SRC_URI="https://distfiles.audacious-media-player.org/${MY_P}.tar.bz2";
+       KEYWORDS="~amd64 ~x86"
+fi
+
+LICENSE="GPL-2"
+SLOT="0"
+IUSE="aac +adplug alsa ampache aosd bs2b cdda cue ffmpeg flac fluidsynth 
hotkeys http gme jack lame libav
+       libnotify libsamplerate lirc mms modplug mp3 nls pulseaudio scrobbler 
sdl sid sndfile soxr speedpitch vorbis wavpack"
+REQUIRED_USE="
+       || ( alsa jack pulseaudio sdl )
+       ampache? ( http )"
+
+# The following plugins REQUIRE a GUI build of audacious, because non-GUI
+# builds do NOT install the libaudgui library & headers.
+# Plugins without a configure option:
+#   alarm
+#   albumart
+#   delete-files
+#   ladspa
+#   playlist-manager
+#   search-tool
+#   skins
+#   vtx
+# Plugins with a configure option:
+#   glspectrum
+#   gtkui
+#   hotkey
+#   notify
+#   statusicon
+RDEPEND="
+       app-arch/unzip
+       dev-libs/dbus-glib
+       dev-libs/glib
+       dev-libs/libxml2:2
+       dev-qt/qtcore:5
+       dev-qt/qtgui:5
+       dev-qt/qtmultimedia:5
+       dev-qt/qtwidgets:5
+       media-libs/adplug
+       ~media-sound/audacious-${PV}
+       aac? ( >=media-libs/faad2-2.7 )
+       alsa? ( >=media-libs/alsa-lib-1.0.16 )
+       ampache? ( =media-libs/ampache_browser-1* )
+       aosd? (
+               x11-libs/libXrender
+               x11-libs/libXcomposite
+       )
+       bs2b? ( media-libs/libbs2b )
+       cdda? (
+               >=media-libs/libcddb-1.2.1
+               dev-libs/libcdio-paranoia
+       )
+       cue? ( media-libs/libcue )
+       ffmpeg? ( >=virtual/ffmpeg-0.7.3 )
+       flac? (
+               >=media-libs/libvorbis-1.0
+               >=media-libs/flac-1.2.1-r1
+       )
+       fluidsynth? ( media-sound/fluidsynth )
+       http? ( >=net-libs/neon-0.26.4 )
+       jack? (
+               >=media-libs/bio2jack-0.4
+               virtual/jack
+       )
+       lame? ( media-sound/lame )
+       libsamplerate? ( media-libs/libsamplerate:= )
+       lirc? ( app-misc/lirc )
+       mms? ( >=media-libs/libmms-0.3 )
+       modplug? ( media-libs/libmodplug )
+       mp3? ( >=media-sound/mpg123-1.12.1 )
+       pulseaudio? ( >=media-sound/pulseaudio-0.9.3 )
+       scrobbler? ( net-misc/curl )
+       sdl? ( media-libs/libsdl2[sound] )
+       sid? ( >=media-libs/libsidplayfp-1.0.0 )
+       sndfile? ( >=media-libs/libsndfile-1.0.17-r1 )
+       soxr? ( media-libs/soxr )
+       speedpitch? ( media-libs/libsamplerate:= )
+       vorbis? (
+               >=media-libs/libvorbis-1.2.0
+               >=media-libs/libogg-1.1.3
+       )
+       wavpack? ( >=media-sound/wavpack-4.50.1-r1 )"
+
+DEPEND="${RDEPEND}
+       dev-util/gdbus-codegen
+       virtual/pkgconfig
+       nls? ( dev-util/intltool )"
+
+PATCHES=( "${FILESDIR}/${P}-fix-slow-search.patch" )
+
+S="${WORKDIR}/${MY_P}"
+
+src_configure() {
+       if ! use mp3 ; then
+               ewarn "MP3 support is optional, you may want to enable the mp3 
USE-flag"
+       fi
+
+       econf \
+               --enable-mpris2 \
+               --enable-qt \
+               --enable-qtaudio \
+               --enable-songchange \
+               --disable-coreaudio \
+               --disable-gtk \
+               --disable-notify \
+               --disable-oss4 \
+               --disable-qtglspectrum \
+               --disable-sndio \
+               $(use_enable aac) \
+               $(use_enable alsa) \
+               $(use_enable ampache) \
+               $(use_enable aosd) \
+               $(use_enable bs2b) \
+               $(use_enable cdda cdaudio) \
+               $(use_enable cue) \
+               $(use_enable flac) \
+               $(use_enable fluidsynth amidiplug) \
+               $(use_enable flac filewriter) \
+               $(use_enable gme console) \
+               $(use_enable hotkeys hotkey) \
+               $(use_enable http neon) \
+               $(use_enable jack) \
+               $(use_enable lame filewriter_mp3) \
+               $(use_enable libsamplerate resample) \
+               $(use_enable lirc) \
+               $(use_enable mms) \
+               $(use_enable modplug) \
+               $(use_enable mp3 mpg123) \
+               $(use_enable nls) \
+               $(use_enable pulseaudio pulse) \
+               $(use_enable scrobbler scrobbler2) \
+               $(use_enable sdl sdlout) \
+               $(use_enable sid) \
+               $(use_enable sndfile) \
+               $(use_enable soxr) \
+               $(use_enable speedpitch) \
+               $(use_enable vorbis) \
+               $(use_enable wavpack) \
+               $(use_with ffmpeg ffmpeg $(usex libav libav ffmpeg))
+}

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
new file mode 100644
index 00000000000..3012d313873
--- /dev/null
+++ 
b/media-plugins/audacious-plugins/files/audacious-plugins-3.10-fix-slow-search.patch
@@ -0,0 +1,108 @@
+From 9d162207ef01c5972e4bb718d390c494f0ad0241 Mon Sep 17 00:00:00 2001
+From: John Lindgren <j...@jlindgren.net>
+Date: Tue, 4 Sep 2018 23:39:00 -0400
+Subject: [PATCH] qtui: Fix slow searching on large playlists.  Closes: #819.
+
+---
+ src/qtui/playlist-qt.cc | 58 +++++++++++++++++++++++++++++------------
+ src/qtui/playlist-qt.h  |  1 +
+ 2 files changed, 42 insertions(+), 17 deletions(-)
+
+diff --git a/src/qtui/playlist-qt.cc b/src/qtui/playlist-qt.cc
+index 28c480ead..750d87c37 100644
+--- a/src/qtui/playlist-qt.cc
++++ b/src/qtui/playlist-qt.cc
+@@ -89,6 +89,31 @@ int PlaylistWidget::indexToRow (const QModelIndex & index)
+     return proxyModel->mapToSource (index).row ();
+ }
+ 
++QModelIndex PlaylistWidget::visibleIndexNear (int row)
++{
++    QModelIndex index = rowToIndex (row);
++    if (index.isValid ())
++        return index;
++
++    int n_entries = m_playlist.n_entries ();
++
++    for (int r = row + 1; r < n_entries; r ++)
++    {
++        index = rowToIndex (r);
++        if (index.isValid ())
++            return index;
++    }
++
++    for (int r = row - 1; r >= 0; r --)
++    {
++        index = rowToIndex (r);
++        if (index.isValid ())
++            return index;
++    }
++
++    return index;
++}
++
+ void PlaylistWidget::contextMenuEvent (QContextMenuEvent * event)
+ {
+     if (contextMenu)
+@@ -379,33 +404,32 @@ void PlaylistWidget::playCurrentIndex ()
+ 
+ void PlaylistWidget::setFilter (const char * text)
+ {
++    // Save the current focus before filtering
++    int focus = m_playlist.get_focus ();
++
++    // Empty the model before updating the filter.  This prevents Qt from
++    // performing a series of "rows added" or "rows deleted" updates, which 
can
++    // be very slow (worst case O(N^2) complexity) on a large playlist.
++    model->entriesRemoved (0, model->rowCount ());
++
++    // Update the filter
+     proxyModel->setFilter (text);
+ 
+-    int focus = m_playlist.get_focus ();
+-    QModelIndex index;
++    // Repopulate the model
++    model->entriesAdded (0, m_playlist.n_entries ());
+ 
+-    // If there was a valid focus before filtering, Qt updates it for us via
+-    // currentChanged().  If not, we will set focus on the first visible row.
++    // If the previously focused row is no longer visible with the new filter,
++    // try to find a nearby one that is, and focus it.
++    auto index = visibleIndexNear (focus);
+ 
+-    if (focus >= 0)
+-        index = rowToIndex (focus);
+-    else
++    if (index.isValid ())
+     {
+-        if (! proxyModel->rowCount ())
+-            return;
+-
+-        index = proxyModel->index (0, 0);
+         focus = indexToRow (index);
+         m_playlist.set_focus (focus);
+-    }
+-
+-    if (! m_playlist.entry_selected (focus))
+-    {
+         m_playlist.select_all (false);
+         m_playlist.select_entry (focus, true);
++        scrollTo (index);
+     }
+-
+-    scrollTo (index);
+ }
+ 
+ void PlaylistWidget::setFirstVisibleColumn (int col)
+diff --git a/src/qtui/playlist-qt.h b/src/qtui/playlist-qt.h
+index a2894323c..df44205af 100644
+--- a/src/qtui/playlist-qt.h
++++ b/src/qtui/playlist-qt.h
+@@ -66,6 +66,7 @@ class PlaylistWidget : public QTreeView
+ 
+     QModelIndex rowToIndex (int row);
+     int indexToRow (const QModelIndex & index);
++    QModelIndex visibleIndexNear (int row);
+ 
+     void getSelectedRanges (int rowsBefore, int rowsAfter,
+      QItemSelection & selected, QItemSelection & deselected);

Reply via email to