summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'media-plugins/audacious-plugins')
-rw-r--r--media-plugins/audacious-plugins/Manifest1
-rw-r--r--media-plugins/audacious-plugins/audacious-plugins-3.10.ebuild154
-rw-r--r--media-plugins/audacious-plugins/files/audacious-plugins-3.10-fix-slow-search.patch108
3 files changed, 263 insertions, 0 deletions
diff --git a/media-plugins/audacious-plugins/Manifest b/media-plugins/audacious-plugins/Manifest
index 324166a4f33f..607c7195c5e2 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 000000000000..13310dcdcc9a
--- /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 000000000000..3012d3138737
--- /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 <john@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);