File 0001-Correctly-handle-changing-Basic-mode-music-folder.patch of Package cantata
From 72729bb424ddeddfba452983d6e6211adf6e9a86 Mon Sep 17 00:00:00 2001
From: Craig Drummond <craig.p.drummond@gmail.com>
Date: Sat, 29 Feb 2020 08:26:57 +0000
Subject: [PATCH] - Correctly handle changing 'Basic' mode music folder. - When
stopping 'Basic' mode MPD instance, send SIGKILL. Closes #1575
---
CMakeLists.txt | 2 +-
ChangeLog | 5 +++++
gui/serversettings.cpp | 1 +
mpd-interface/mpduser.cpp | 23 +++++++++++++++++------
4 files changed, 24 insertions(+), 7 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a84decc7..0a8c4705 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -28,7 +28,7 @@ set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Qt Client for MPD")
set(CPACK_SOURCE_GENERATOR "TBZ2")
set(CPACK_PACKAGE_VERSION_MAJOR "2")
set(CPACK_PACKAGE_VERSION_MINOR "4")
-set(CPACK_PACKAGE_VERSION_PATCH "1")
+set(CPACK_PACKAGE_VERSION_PATCH "2")
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
set(CPACK_PACKAGE_VERSION_SPIN "") # Use ".$number" - e.g. ".1"
set(CPACK_PACKAGE_CONTACT "Craig Drummond <craig.p.drummond@gmail.com>")
diff --git a/ChangeLog b/ChangeLog
index 30ed1051..a26f41bb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2.4.2
+-----
+1. Correctly handle changing 'Basic' mode music folder.
+2. When stopping 'Basic' mode MPD instance, send SIGKILL.
+
2.4.1
-----
1. Re-enable custom playqueue background. This is broken for 5.12, but that's a
diff --git a/gui/serversettings.cpp b/gui/serversettings.cpp
index 558d2c61..840dce44 100644
--- a/gui/serversettings.cpp
+++ b/gui/serversettings.cpp
@@ -299,6 +299,7 @@ void ServerSettings::add()
basicDir->setText(dir);
MPDUser::self()->setMusicFolder(dir);
combo->addItem(MPDUser::translatedName());
+ haveBasicCollection = true;
}
#endif
removeButton->setEnabled(combo->count()>1);
diff --git a/mpd-interface/mpduser.cpp b/mpd-interface/mpduser.cpp
index b9fac5ac..4cf56746 100644
--- a/mpd-interface/mpduser.cpp
+++ b/mpd-interface/mpduser.cpp
@@ -134,6 +134,11 @@ void MPDUser::setMusicFolder(const QString &folder)
}
init(true);
+ bool mpdRunning = isRunning();
+ if (mpdRunning) {
+ controlMpd(true);
+ }
+
QFile cfgFile(Utils::dataDir(constDir, true)+constConfigFile);
QStringList lines;
if (cfgFile.open(QIODevice::ReadOnly|QIODevice::Text)) {
@@ -145,22 +150,22 @@ void MPDUser::setMusicFolder(const QString &folder)
lines.append(line);
}
}
+ cfgFile.close();
}
if (!lines.isEmpty()) {
- cfgFile.close();
if (cfgFile.open(QIODevice::WriteOnly|QIODevice::Text)) {
QTextStream out(&cfgFile);
for (const QString &line: lines) {
out << line;
}
+ cfgFile.close();
}
}
det.dir=folder;
det.setDirReadable();
- if (0!=getPid()) {
- controlMpd(true); // Stop
- controlMpd(false); // Start
+ if (mpdRunning) {
+ controlMpd(false);
}
}
@@ -334,14 +339,20 @@ int MPDUser::getPid()
bool MPDUser::controlMpd(bool stop)
{
+ if (stop) {
+ int pid = getPid();
+ ::kill(pid, SIGKILL);
+ return !isRunning();
+ }
+
QString confFile=Utils::dataDir(constDir, true)+constConfigFile;
if (!QFile::exists(confFile)) {
return false;
}
QStringList args=QStringList() << confFile;
- if (stop) {
+ /*if (stop) {
args+="--kill";
- } else {
+ } else*/ {
// Ensure cache dir exists before starting MPD
Utils::cacheDir(constDir, true);
if (!pidFileName.isEmpty() && QFile::exists(pidFileName)) {
--
2.25.1