dtkgui/0001-The-ID-of-the-current-Session-is-used-to-register-th.patch
2024-04-09 13:47:59 +08:00

62 lines
2.0 KiB
Diff

From 6389063edae59a2eab7c80996b412cfca1639911 Mon Sep 17 00:00:00 2001
From: Paul Thomas <paulthomas100199@gmail.com>
Date: Tue, 30 Jan 2024 14:19:15 +0800
Subject: [PATCH] The ID of the current Session is used to register the
singleton process
---
include/kernel/dguiapplicationhelper.h | 1 +
src/kernel/dguiapplicationhelper.cpp | 17 ++++++++++++++++-
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/include/kernel/dguiapplicationhelper.h b/include/kernel/dguiapplicationhelper.h
index 72e3577..d777a36 100644
--- a/include/kernel/dguiapplicationhelper.h
+++ b/include/kernel/dguiapplicationhelper.h
@@ -137,6 +137,7 @@ Q_SIGNALS:
protected:
explicit DGuiApplicationHelper();
virtual void initialize();
+ static QString getSessionID();
private:
D_PRIVATE_SLOT(void _q_initApplicationTheme(bool))
diff --git a/src/kernel/dguiapplicationhelper.cpp b/src/kernel/dguiapplicationhelper.cpp
index f9b3fd1..913c410 100644
--- a/src/kernel/dguiapplicationhelper.cpp
+++ b/src/kernel/dguiapplicationhelper.cpp
@@ -491,6 +491,21 @@ void DGuiApplicationHelper::initialize()
d->init();
}
+QString DGuiApplicationHelper::getSessionID()
+{
+ QString sessionID = "0";
+
+ QDBusInterface *inter = new QDBusInterface("org.freedesktop.DBus",
+ "/org/freedesktop/DBus",
+ "org.freedesktop.DBus",
+ QDBusConnection::sessionBus());
+
+ sessionID = inter->call("GetId").arguments().value(0).toString();
+ inter->deleteLater();
+
+ return sessionID;
+}
+
/*!
\brief 创建 DGuiApplicationHelper 对象.
@@ -1369,7 +1384,7 @@ bool DGuiApplicationHelper::setSingleInstance(const QString &key, DGuiApplicatio
_d_singleServer->close();
}
- QString socket_key = "_d_dtk_single_instance_";
+ QString socket_key = QString("_d_dtk_single_instance_%1_").arg(getSessionID());
switch (singleScope) {
case GroupScope:
--
2.20.1