diff options
Diffstat (limited to 'media-plugins/audacious-plugins')
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); |