From b963a0bdf254a88d51d491e3720b281f7d863527 Mon Sep 17 00:00:00 2001
From: Water Chika <water_chika@outlook.com>
Date: Tue, 3 Oct 2023 19:18:20 +0800
Subject: [PATCH] Avoid infinite loops in MainApplication::cleanup

Change-Id: I910ab554c463a3d91c48c297c6c1ed48202283f9
---
 src/app/mainapplication.cpp | 9 +++++++--
 src/app/mainapplication.h   | 2 ++
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/app/mainapplication.cpp b/src/app/mainapplication.cpp
index 2202c4561..29c98343e 100644
--- a/src/app/mainapplication.cpp
+++ b/src/app/mainapplication.cpp
@@ -105,7 +105,7 @@ ScreenInfo::onPhysicalDotsPerInchChanged()
 }
 
 MainApplication::MainApplication(int& argc, char** argv)
-    : QApplication(argc, argv)
+    : QApplication(argc, argv), isCleanupped(false)
 {
     const char* qtVersion = qVersion();
     qInfo() << "Using Qt runtime version:" << qtVersion;
@@ -401,7 +401,12 @@ MainApplication::initSystray()
 void
 MainApplication::cleanup()
 {
-    QApplication::exit(0);
+    // In Qt 6.5, QApplication::exit(0) will signal aboutToQuit, and aboutToQuit is connected to cleanup
+    // TODO: delete cleanup.
+    if (!isCleanupped) {
+        isCleanupped = true;
+        QApplication::exit(0);
+    }
 }
 
 #ifdef Q_OS_MACOS
diff --git a/src/app/mainapplication.h b/src/app/mainapplication.h
index 3e42b7744..3fabd8e5b 100644
--- a/src/app/mainapplication.h
+++ b/src/app/mainapplication.h
@@ -121,4 +121,6 @@ private:
     QScopedPointer<ImageDownloader> imageDownloader_;
 
     ScreenInfo screenInfo_;
+
+    bool isCleanupped;
 };
-- 
GitLab