From e67c5011d9b782ff3986ecd9c311f72b24f09112 Mon Sep 17 00:00:00 2001 From: guopengfei Date: Tue, 31 Jan 2023 09:35:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B8=85=E7=A9=BACGroup=E5=88=86=E7=BB=84?= =?UTF-8?q?=E7=99=BD=E5=90=8D=E5=8D=95;=E4=BF=AE=E6=94=B9CGroup=E5=88=86?= =?UTF-8?q?=E7=BB=84=E8=B7=AF=E5=BE=84,=E8=A7=A3=E5=86=B3=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E5=BC=B9=E5=87=BA=E6=8E=88=E6=9D=83=E7=AA=97=E5=8F=A3?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- conf/com.kylin.ProcessManager.xml | 5 ++++ debian/changelog | 6 +++++ debian/install | 2 +- kylin-app-manager/src/core/appcgroup.cpp | 28 +++++++++++++++++++-- kylin-app-manager/src/core/appcgroup.h | 1 + kylin-app-manager/src/core/appinfomanager.h | 5 ---- 6 files changed, 39 insertions(+), 8 deletions(-) diff --git a/conf/com.kylin.ProcessManager.xml b/conf/com.kylin.ProcessManager.xml index 28aba50..e6b19aa 100644 --- a/conf/com.kylin.ProcessManager.xml +++ b/conf/com.kylin.ProcessManager.xml @@ -2,6 +2,11 @@ "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd"> + + + + + diff --git a/debian/changelog b/debian/changelog index 507b212..8966f2c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +kylin-app-manager (3.22.1.0-ok1.16) yangtze; urgency=medium + + * 清空CGroup分组白名单;修改CGroup分组路径,解决无法弹出授权窗口的问题 + + -- guopengfei Tue, 31 Jan 2023 09:04:29 +0800 + kylin-app-manager (3.22.1.0-ok1.15) yangtze; urgency=medium * 添加CGroup分组白名单 diff --git a/debian/install b/debian/install index 864c47a..cc53fd4 100644 --- a/debian/install +++ b/debian/install @@ -1,2 +1,2 @@ conf/com.kylin.AppManager.service /usr/share/dbus-1/services -conf/kylin-app-manager.json /etc/kylin-app-manager/ \ No newline at end of file +conf/kylin-app-manager.json /etc/kylin-app-manager \ No newline at end of file diff --git a/kylin-app-manager/src/core/appcgroup.cpp b/kylin-app-manager/src/core/appcgroup.cpp index f27fa08..f4bd15d 100644 --- a/kylin-app-manager/src/core/appcgroup.cpp +++ b/kylin-app-manager/src/core/appcgroup.cpp @@ -8,7 +8,7 @@ AppCGroup::AppCGroup(QObject *parent) , m_processManagerInterface(new com::kylin::ProcessManager("com.kylin.ProcessManager", "/com/kylin/ProcessManager", QDBusConnection::systemBus())) { - + initCGroup(); } QString AppCGroup::createProcessCGroup(const QString &appId, const QList &pids) @@ -62,7 +62,7 @@ QString AppCGroup::cgroupNameWithPid(int pid) auto reply = m_processManagerInterface->CGroupNameWithPid(pid); while (!reply.isFinished()) { qApp->processEvents(); - sleep(1); + usleep(1); } if (reply.isError()) { qWarning() << __FUNCTION__ << "error, " << reply.error(); @@ -70,3 +70,27 @@ QString AppCGroup::cgroupNameWithPid(int pid) } return reply.value().value(kDbusResult).toString(); } + +void AppCGroup::initCGroup() +{ + QProcess p; + p.start("id", QStringList() << "-u"); + p.waitForFinished(); + auto userId = p.readAll().toUInt(); + auto rootPath = QString("user.slice/user-%1.slice/kylin-app-manager").arg(userId); + auto reply = m_processManagerInterface->InitCGroup(rootPath); + while (!reply.isFinished()) { + qApp->processEvents(); + usleep(1); + } + if (reply.isError()) { + qWarning() << __FUNCTION__ << "error, " << reply.error(); + return; + } + if (!reply.value().value(kDbusResult).toBool()) { + qWarning() << "Init CGroup failed, " + << reply.value().value(kDbusErrMsg).toString() + << "the root path is " << rootPath; + } + qDebug() << reply.value().value(kDbusResult) << rootPath; +} diff --git a/kylin-app-manager/src/core/appcgroup.h b/kylin-app-manager/src/core/appcgroup.h index 1dd2845..40f4335 100644 --- a/kylin-app-manager/src/core/appcgroup.h +++ b/kylin-app-manager/src/core/appcgroup.h @@ -21,6 +21,7 @@ public: QString cgroupNameWithPid(int pid); private: + void initCGroup(); private: com::kylin::ProcessManager *m_processManagerInterface; diff --git a/kylin-app-manager/src/core/appinfomanager.h b/kylin-app-manager/src/core/appinfomanager.h index 7ca02db..f35ecdf 100644 --- a/kylin-app-manager/src/core/appinfomanager.h +++ b/kylin-app-manager/src/core/appinfomanager.h @@ -272,11 +272,6 @@ private: "qaxbrowser-safe.desktop" }; const QStringList kNoCgroupApps = { - "ukui-control-center.desktop", - "kylin-installer.desktop", - "biometric-manager.desktop", - "kylin-software-center.desktop", - "gparted.desktop" }; };