From 25a7acb6fd08e4c5dcd7816380b4a347555e8ce3 Mon Sep 17 00:00:00 2001 From: black-desk Date: Tue, 29 Aug 2023 10:06:55 +0800 Subject: [PATCH] Revert "fix: core dumped under Qt 6.4" Github bug makes me commit wrong content, revert it. This reverts commit 6fae5a758b32887dfd171f335eb936f16a1c2af9. --- apps/dde-application-manager/src/main.cpp | 1 - src/constant.h | 7 ------- src/dbus/applicationmanager1service.cpp | 6 ++++-- src/dbus/applicationservice.cpp | 2 +- src/dbus/jobmanager1service.cpp | 3 ++- src/dbus/jobmanager1service.h | 2 +- src/global.h | 22 +++++----------------- src/systemdsignaldispatcher.h | 8 +------- 8 files changed, 14 insertions(+), 37 deletions(-) diff --git a/apps/dde-application-manager/src/main.cpp b/apps/dde-application-manager/src/main.cpp index 3082c4a..a5c33e4 100644 --- a/apps/dde-application-manager/src/main.cpp +++ b/apps/dde-application-manager/src/main.cpp @@ -26,7 +26,6 @@ void registerComplexDbusType() qDBusRegisterMetaType>(); qRegisterMetaType(); qDBusRegisterMetaType(); - qDBusRegisterMetaType(); } } // namespace diff --git a/src/constant.h b/src/constant.h index 71a8c71..b85e92e 100644 --- a/src/constant.h +++ b/src/constant.h @@ -35,11 +35,4 @@ constexpr auto ApplicationManagerDestDBusName = u8"deepin_application_manager_dest_bus"; #endif -constexpr auto ObjectManagerInterface = "org.desktopspec.DBus.ObjectManager"; -constexpr auto JobManagerInterface = "org.desktopspec.JobManager1"; -constexpr auto JobInterface = "org.desktopspec.JobManager1.Job"; -constexpr auto ApplicationManagerInterface = "org.desktopspec.ApplicationManager1"; -constexpr auto InstanceInterface = "org.desktopspec.ApplicationManager1.Instance"; -constexpr auto ApplicationInterface = "org.desktopspec.ApplicationManager1.Application"; - #endif diff --git a/src/dbus/applicationmanager1service.cpp b/src/dbus/applicationmanager1service.cpp index 17001dc..57b6951 100644 --- a/src/dbus/applicationmanager1service.cpp +++ b/src/dbus/applicationmanager1service.cpp @@ -28,7 +28,8 @@ ApplicationManager1Service::ApplicationManager1Service(std::unique_ptr()))) { std::terminate(); } @@ -129,7 +130,8 @@ bool ApplicationManager1Service::addApplication(DesktopFile desktopFileSource) n return false; } - if (!registerObjectToDBus(ptr, application->applicationPath().path(), ApplicationInterface)) { + if (!registerObjectToDBus( + ptr, application->applicationPath().path(), getDBusInterface(QMetaType::fromType()))) { return false; } m_applicationList.insert(application->applicationPath(), application); diff --git a/src/dbus/applicationservice.cpp b/src/dbus/applicationservice.cpp index a4a288a..252cf4a 100644 --- a/src/dbus/applicationservice.cpp +++ b/src/dbus/applicationservice.cpp @@ -317,7 +317,7 @@ bool ApplicationService::addOneInstance(const QString &instanceId, const QString auto *adaptor = new InstanceAdaptor(service); QString objectPath{m_applicationPath.path() + "/" + instanceId}; - if (registerObjectToDBus(service, objectPath, InstanceInterface)) { + if (registerObjectToDBus(service, objectPath, getDBusInterface(QMetaType::fromType()))) { m_Instances.insert(QDBusObjectPath{objectPath}, QSharedPointer{service}); service->moveToThread(this->thread()); adaptor->moveToThread(this->thread()); diff --git a/src/dbus/jobmanager1service.cpp b/src/dbus/jobmanager1service.cpp index 62ba2a9..33a1533 100644 --- a/src/dbus/jobmanager1service.cpp +++ b/src/dbus/jobmanager1service.cpp @@ -9,7 +9,8 @@ JobManager1Service::JobManager1Service(ApplicationManager1Service *parent) : m_parent(parent) { new JobManager1Adaptor{this}; - if (!registerObjectToDBus(this, DDEApplicationManager1JobManagerObjectPath, JobManagerInterface)) { + if (!registerObjectToDBus( + this, DDEApplicationManager1JobManagerObjectPath, getDBusInterface(QMetaType::fromType()))) { std::terminate(); } qRegisterMetaType(); diff --git a/src/dbus/jobmanager1service.h b/src/dbus/jobmanager1service.h index 4d9dfe4..47e004d 100644 --- a/src/dbus/jobmanager1service.h +++ b/src/dbus/jobmanager1service.h @@ -61,7 +61,7 @@ public: auto *ptr = job.data(); new JobAdaptor(ptr); - if (!registerObjectToDBus(ptr, objectPath, JobInterface)) { + if (!registerObjectToDBus(ptr, objectPath, getDBusInterface(QMetaType::fromType()))) { qCritical() << "can't register job to dbus."; future.cancel(); return {}; diff --git a/src/global.h b/src/global.h index 7a0007a..8ac1357 100644 --- a/src/global.h +++ b/src/global.h @@ -196,24 +196,12 @@ void unregisterObjectFromDBus(const QString &path); inline QString getDBusInterface(const QMetaType &meta) { - auto name = QString{meta.name()}; - if (name == "ApplicationAdaptor") { - return ApplicationInterface; + const auto *infoObject = meta.metaObject(); + if (auto infoIndex = infoObject->indexOfClassInfo("D-Bus Interface"); infoIndex != -1) { + return infoObject->classInfo(infoIndex).value(); } - - if (name == "InstanceAdaptor") { - return InstanceInterface; - } - - if (name == "APPObjectManagerAdaptor" or name == "AMObjectManagerAdaptor") { - return ObjectManagerInterface; - } - // const auto *infoObject = meta.metaObject(); - // if (auto infoIndex = infoObject->indexOfClassInfo("D-Bus Interface"); infoIndex != -1) { - // return infoObject->classInfo(infoIndex).value(); - // } - qWarning() << "couldn't found interface:" << name; - return ""; + qWarning() << "no interface found."; + return {}; } inline ObjectInterfaceMap getChildInterfacesAndPropertiesFromObject(QObject *o) diff --git a/src/systemdsignaldispatcher.h b/src/systemdsignaldispatcher.h index ee4da8a..d1f950b 100644 --- a/src/systemdsignaldispatcher.h +++ b/src/systemdsignaldispatcher.h @@ -6,7 +6,6 @@ #define SYSTEMDSIGNALDISPATCHER_H #include "global.h" -#include class SystemdSignalDispatcher : public QObject { @@ -30,13 +29,8 @@ private: explicit SystemdSignalDispatcher(QObject *parent = nullptr) : QObject(parent) { - auto &con = ApplicationManager1DBus::instance().globalDestBus(); - auto ret = con.call(QDBusMessage::createMethodCall(SystemdService, SystemdObjectPath, SystemdInterfaceName, "Subscribe")); - if (ret.type() == QDBusMessage::ErrorMessage) { - qFatal("%s", ret.errorMessage().toLocal8Bit().data()); - } if (!connectToSignals()) { - qCritical() << "couldn't connect to Systemd signals"; + std::terminate(); } } bool connectToSignals() noexcept;