diff options
-rw-r--r-- | .SRCINFO | 5 | ||||
-rw-r--r-- | PKGBUILD | 13 | ||||
-rw-r--r-- | fix-deadlock.patch | 89 |
3 files changed, 102 insertions, 5 deletions
@@ -1,7 +1,7 @@ pkgbase = kdocker pkgdesc = An application to help you dock any application into the system tray pkgver = 5.3 - pkgrel = 1 + pkgrel = 2 url = https://github.com/user-none/KDocker arch = i686 arch = x86_64 @@ -11,7 +11,8 @@ pkgbase = kdocker depends = libxpm depends = libxmu source = https://github.com/user-none/KDocker/archive/5.3.tar.gz + source = fix-deadlock.patch sha256sums = c49eea33d46a626b2a59c8ddc923ce9a027f0b9bd2125f4f6c264e888997e663 + sha256sums = 731edac829b4231ddf87f3ed6cd043df4c2026bec4dc26dd11c22ad79876bcbd pkgname = kdocker - @@ -1,13 +1,20 @@ pkgname=kdocker pkgver=5.3 -pkgrel=1 +pkgrel=2 pkgdesc="An application to help you dock any application into the system tray" arch=('i686' 'x86_64') url="https://github.com/user-none/KDocker" license=('GPL2') depends=('qt5-base' 'qt5-x11extras' 'libxpm' 'libxmu') -source=(https://github.com/user-none/KDocker/archive/${pkgver}.tar.gz) -sha256sums=('c49eea33d46a626b2a59c8ddc923ce9a027f0b9bd2125f4f6c264e888997e663') +source=(https://github.com/user-none/KDocker/archive/${pkgver}.tar.gz + 'fix-deadlock.patch') +sha256sums=('c49eea33d46a626b2a59c8ddc923ce9a027f0b9bd2125f4f6c264e888997e663' + '731edac829b4231ddf87f3ed6cd043df4c2026bec4dc26dd11c22ad79876bcbd') + +prepare() { + cd "$srcdir/KDocker-$pkgver" + patch --forward --strip=1 --input="${srcdir}/fix-deadlock.patch" +} build() { cd "$srcdir/KDocker-$pkgver" diff --git a/fix-deadlock.patch b/fix-deadlock.patch new file mode 100644 index 000000000000..d3018f6ef609 --- /dev/null +++ b/fix-deadlock.patch @@ -0,0 +1,89 @@ +Only in KDocker: .git +Only in KDocker: .gitattributes +Only in KDocker: .gitignore +diff --unified --recursive --text KDocker-5.3/src/application.cpp KDocker/src/application.cpp +--- KDocker-5.3/src/application.cpp 2020-03-10 10:04:31.000000000 -0400 ++++ KDocker/src/application.cpp 2022-04-04 17:06:38.897419076 -0400 +@@ -18,19 +18,40 @@ + */ + + #include "application.h" ++#include <sys/socket.h> ++#include <unistd.h> + ++int Application::m_closeSignalFd[2]; + + Application::Application(const QString &appId, int &argc, char **argv) : QtSingleApplication(appId, argc, argv) { + m_kdocker = 0; ++ ++ // Translate UNIX signals to Qt signals (See https://doc.qt.io/qt-5/unix-signals.html) ++ if (::socketpair(AF_UNIX, SOCK_STREAM, 0, m_closeSignalFd)) ++ qFatal("Couldn't create signal handling socketpair"); ++ ++ m_closeSignalSocketNotifier = new QSocketNotifier(m_closeSignalFd[1], QSocketNotifier::Read, this); ++ connect(m_closeSignalSocketNotifier, SIGNAL(activated(QSocketDescriptor)), this, SLOT(handleCloseSignal())); + } + + void Application::setKDockerInstance(KDocker *kdocker) { + m_kdocker = kdocker; + } + +-void Application::close() { ++void Application::notifyCloseSignal() { ++ char tmp = 1; ++ ::write(m_closeSignalFd[0], &tmp, sizeof(tmp)); ++} ++ ++void Application::handleCloseSignal() { ++ m_closeSignalSocketNotifier->setEnabled(false); ++ char tmp; ++ ::read(m_closeSignalFd[1], &tmp, sizeof(tmp)); ++ + if (m_kdocker) { + m_kdocker->undockAll(); + } + quit(); ++ ++ m_closeSignalSocketNotifier->setEnabled(true); + } +diff --unified --recursive --text KDocker-5.3/src/application.h KDocker/src/application.h +--- KDocker-5.3/src/application.h 2020-03-10 10:04:31.000000000 -0400 ++++ KDocker/src/application.h 2022-04-04 17:06:38.897419076 -0400 +@@ -21,6 +21,7 @@ + #define _APPLICATION_H + + #include <QtSingleApplication> ++#include <QSocketNotifier> + + #include "kdocker.h" + +@@ -32,10 +33,16 @@ + Application(const QString &appId, int &argc, char **argv); + + void setKDockerInstance(KDocker *kdocker); +- void close(); ++ void notifyCloseSignal(); ++ ++public slots: ++ void handleCloseSignal(); + + private: + KDocker *m_kdocker; ++ ++ static int m_closeSignalFd[2]; ++ QSocketNotifier *m_closeSignalSocketNotifier; + }; + + #endif /* _APPLICATION_H */ +diff --unified --recursive --text KDocker-5.3/src/main.cpp KDocker/src/main.cpp +--- KDocker-5.3/src/main.cpp 2020-03-10 10:04:31.000000000 -0400 ++++ KDocker/src/main.cpp 2022-04-04 17:06:38.897419076 -0400 +@@ -33,7 +33,7 @@ + static void sighandler(int sig) { + Q_UNUSED(sig); + +- dynamic_cast<Application*> (qApp)->close(); ++ dynamic_cast<Application*> (qApp)->notifyCloseSignal(); + } + + int main(int argc, char *argv[]) { |