summaryrefslogtreecommitdiff
path: root/media-sound/clementine/files/clementine-1.4.0_rc2-projectm-dir.patch
diff options
context:
space:
mode:
Diffstat (limited to 'media-sound/clementine/files/clementine-1.4.0_rc2-projectm-dir.patch')
-rw-r--r--media-sound/clementine/files/clementine-1.4.0_rc2-projectm-dir.patch53
1 files changed, 53 insertions, 0 deletions
diff --git a/media-sound/clementine/files/clementine-1.4.0_rc2-projectm-dir.patch b/media-sound/clementine/files/clementine-1.4.0_rc2-projectm-dir.patch
new file mode 100644
index 000000000000..8f92766193d6
--- /dev/null
+++ b/media-sound/clementine/files/clementine-1.4.0_rc2-projectm-dir.patch
@@ -0,0 +1,53 @@
+Read visualisations from subdirs
+
+https://bugs.gentoo.org/917064
+https://github.com/clementine-player/Clementine/issues/7151
+
+--- a/src/visualisations/projectmpresetmodel.cpp
++++ b/src/visualisations/projectmpresetmodel.cpp
+@@ -27,22 +27,26 @@
+ #endif
+
+ #include <QDir>
++#include <QDirIterator>
+ #include <QtDebug>
++#include <set>
+
+ ProjectMPresetModel::ProjectMPresetModel(ProjectMVisualisation* vis,
+ QObject* parent)
+ : QAbstractItemModel(parent), vis_(vis) {
+ // Find presets
+- QDir preset_dir(vis_->preset_url());
+- QStringList presets(
+- preset_dir.entryList(QStringList() << "*.milk"
+- << "*.prjm",
++ QDirIterator it(vis_->preset_url(),
++ QStringList() << "*.milk" << "*.prjm",
+ QDir::Files | QDir::NoDotAndDotDot | QDir::Readable,
+- QDir::Name | QDir::IgnoreCase));
++ QDirIterator::Subdirectories);
++ std::set<std::pair<QString, QString>> files;
++ while (it.hasNext()) {
++ it.next();
++ files.insert({it.filePath(), it.fileName()});
++ }
+
+- for (const QString& filename : presets) {
+- all_presets_ << Preset(preset_dir.absoluteFilePath(filename), filename,
+- false);
++ for (const auto& [filePath, fileName] : files) {
++ all_presets_ << Preset(filePath, fileName, false);
+ }
+ }
+
+--- a/src/visualisations/projectmvisualisation.cpp
++++ b/src/visualisations/projectmvisualisation.cpp
+@@ -93,7 +93,7 @@ void ProjectMVisualisation::InitProjectM() {
+ if (!QFile::exists(path)) continue;
+
+ // Don't use empty directories
+- if (QDir(path).entryList(QDir::Files | QDir::NoDotAndDotDot).isEmpty())
++ if (QDir(path).entryList(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot).isEmpty())
+ continue;
+
+ preset_path = path;