From 9d5f14751fb209411872f202a8712ac84bec333e Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Date: Fri, 14 Jan 2022 16:28:44 -0500
Subject: [PATCH] gnu: jami: Fix crash on exit.

* gnu/packages/patches/jami-fix-crash-on-quit.patch: New patch.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/jami.scm (jami): Apply it.
---
 gnu/local.mk                                  |  1 +
 gnu/packages/jami.scm                         |  4 ++-
 .../patches/jami-fix-crash-on-quit.patch      | 34 +++++++++++++++++++
 3 files changed, 38 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/jami-fix-crash-on-quit.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 2b7bb3961d..f72d2680af 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1297,6 +1297,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/json-c-0.12-CVE-2020-12762.patch	\
   %D%/packages/patches/jsoncpp-pkg-config-version.patch		\
   %D%/packages/patches/jacal-fix-texinfo.patch			\
+  %D%/packages/patches/jami-fix-crash-on-quit.patch		\
   %D%/packages/patches/jamvm-1.5.1-aarch64-support.patch	\
   %D%/packages/patches/jamvm-1.5.1-armv7-support.patch	\
   %D%/packages/patches/jamvm-2.0.0-aarch64-support.patch	\
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 21f8c07934..72282bc68e 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -560,7 +560,9 @@ decentralized calling using P2P-DHT.")
   (package
     (name "jami")
     (version %jami-version)
-    (source %jami-sources)
+    (source (origin
+              (inherit %jami-sources)
+              (patches (search-patches "jami-fix-crash-on-quit.patch"))))
     (build-system qt-build-system)
     (outputs '("out" "debug"))
     (arguments
diff --git a/gnu/packages/patches/jami-fix-crash-on-quit.patch b/gnu/packages/patches/jami-fix-crash-on-quit.patch
new file mode 100644
index 0000000000..c25bce588a
--- /dev/null
+++ b/gnu/packages/patches/jami-fix-crash-on-quit.patch
@@ -0,0 +1,34 @@
+Retrieved from:
+https://git.jami.net/savoirfairelinux/jami-client-qt/-/commit/83f68573324a453a6d26e025fd6439f175a79d1b.diff.
+
+With the 'client-qt' prefix added to match the file hierarchy of the release tarball.
+
+diff --git a/client-qt/src/mainapplication.cpp b/client-qt/src/mainapplication.cpp
+index 0c3209fc6fa7c528bec197f1cf9332758170441c..278f19287b86dd2c916935ab0930cbe0abb35d26 100644
+--- a/client-qt/src/mainapplication.cpp
++++ b/client-qt/src/mainapplication.cpp
+@@ -155,7 +155,11 @@ MainApplication::MainApplication(int& argc, char** argv)
+     QObject::connect(this, &QApplication::aboutToQuit, [this] { cleanup(); });
+ }
+ 
+-MainApplication::~MainApplication() {}
++MainApplication::~MainApplication()
++{
++    engine_.reset();
++    lrcInstance_.reset();
++}
+ 
+ bool
+ MainApplication::init()
+diff --git a/src/mainapplication.h b/src/mainapplication.h
+index 51306be829478b9fbc1c61a08aeb96938be26dac..4047e3abb3cfd3e6250387a37fa5a896e9bc4161 100644
+--- a/client-qt/src/mainapplication.h
++++ b/client-qt/src/mainapplication.h
+@@ -80,7 +80,6 @@ private:
+ private:
+     QScopedPointer<QFile> debugFile_;
+     QScopedPointer<QQmlApplicationEngine> engine_;
+-
+     QScopedPointer<LRCInstance> lrcInstance_;
+ 
+     QScopedPointer<ConnectivityMonitor> connectivityMonitor_;