From af8d6d18f9ba6883e08271265880f58931d25989 Mon Sep 17 00:00:00 2001 From: YeShanShan Date: Fri, 24 Mar 2023 15:18:01 +0800 Subject: [PATCH] fix: App proxy invalid AddProxyProc for launched app by launcher. Issue: https://github.com/linuxdeepin/developer-center/issues/3791 --- src/modules/startmanager/startmanager.cpp | 17 ++++++++++++----- .../startmanager/startmanagerdbushandler.cpp | 4 ++-- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/modules/startmanager/startmanager.cpp b/src/modules/startmanager/startmanager.cpp index d10e733..a214789 100644 --- a/src/modules/startmanager/startmanager.cpp +++ b/src/modules/startmanager/startmanager.cpp @@ -446,16 +446,23 @@ bool StartManager::launch(DesktopInfo *info, QString cmdLine, uint32_t timestamp exeArgs.removeAt(0); } -#ifdef QT_DEBUG - qInfo() << "launchApp: " << desktopFile << " exec: " << exec << " args: " << exeArgs; -#endif + qDebug() << "Launching app, desktop: " << desktopFile << " exec: " << exec + << " args: " << exeArgs << " useProxy:" << useProxy << "appid:" << appId; process.setProgram(exec); process.setArguments(exeArgs); process.setWorkingDirectory(workingDir.c_str()); process.setEnvironment(envs); - qint64 *pid = nullptr; - return process.startDetached(pid); + qint64 pid = 0; + if (process.startDetached(&pid)) { + if (useProxy) { + qDebug() << "Launch the process[" << pid << "] by app proxy."; + dbusHandler->addProxyProc(pid); + } + + return true; + } + return false; } bool StartManager::doRunCommandWithOptions(QString exe, QStringList args, QVariantMap options) diff --git a/src/modules/startmanager/startmanagerdbushandler.cpp b/src/modules/startmanager/startmanagerdbushandler.cpp index 527d9a0..fb99b79 100644 --- a/src/modules/startmanager/startmanagerdbushandler.cpp +++ b/src/modules/startmanager/startmanagerdbushandler.cpp @@ -22,7 +22,7 @@ void StartManagerDBusHandler::markLaunched(QString desktopFile) QString StartManagerDBusHandler::getProxyMsg() { QString ret; - QDBusInterface interface = QDBusInterface("org.deepin.dde.NetworkProxy1", "/org/deepin/dde/NetworkProxy1", "org.deepin.dde.NetworkProxy1.App", QDBusConnection::systemBus()); + QDBusInterface interface = QDBusInterface("org.deepin.dde.NetworkProxy1", "/org/deepin/dde/NetworkProxy1/App", "org.deepin.dde.NetworkProxy1.App", QDBusConnection::systemBus()); QDBusReply reply = interface.call("GetProxy"); if (reply.isValid()) ret = reply.value(); @@ -32,6 +32,6 @@ QString StartManagerDBusHandler::getProxyMsg() void StartManagerDBusHandler::addProxyProc(int32_t pid) { - QDBusInterface interface = QDBusInterface("org.deepin.dde.NetworkProxy1", "/org/deepin/dde/NetworkProxy1", "org.deepin.dde.NetworkProxy1.App", QDBusConnection::systemBus()); + QDBusInterface interface = QDBusInterface("org.deepin.dde.NetworkProxy1", "/org/deepin/dde/NetworkProxy1/App", "org.deepin.dde.NetworkProxy1.App", QDBusConnection::systemBus()); interface.call("AddProc", pid); }