From ee7e31e723a4f20baedb409853742c1a5c55bdf9 Mon Sep 17 00:00:00 2001 From: Sebastian Sauer Date: Fri, 19 Sep 2025 10:26:17 +0200 Subject: [PATCH] Fix assert because Transaction::Role is not registered with QtDBus Its needed to explicit register the Q_ENUM and provide streaming operators. While on it also register the Transaction::Status. QFlags are, according to the documentation, already proper registered. With this patch plasma-discover doesn't assert for me anymore. --- src/daemon.cpp | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/src/daemon.cpp b/src/daemon.cpp index 31ebc6d..6282c48 100644 --- a/src/daemon.cpp +++ b/src/daemon.cpp @@ -34,6 +34,42 @@ Q_DECLARE_METATYPE(QList); Q_DECLARE_METATYPE(PackageKit::PkDetail); Q_DECLARE_METATYPE(QList); +static const QDBusArgument &operator<<(QDBusArgument &argument, const PackageKit::Transaction::Role &role) +{ + argument.beginStructure(); + argument << static_cast(role); + argument.endStructure(); + return argument; +} + +static const QDBusArgument &operator>>(const QDBusArgument &argument, PackageKit::Transaction::Role &role) +{ + argument.beginStructure(); + qlonglong result = 0; + argument >> result; + role = static_cast(result); + argument.endStructure(); + return argument; +} + +static const QDBusArgument &operator<<(QDBusArgument &argument, const PackageKit::Transaction::Status &status) +{ + argument.beginStructure(); + argument << static_cast(status); + argument.endStructure(); + return argument; +} + +static const QDBusArgument &operator>>(const QDBusArgument &argument, PackageKit::Transaction::Status &status) +{ + argument.beginStructure(); + qlonglong result = 0; + argument >> result; + status = static_cast(result); + argument.endStructure(); + return argument; +} + static const QDBusArgument &operator<<(QDBusArgument &argument, const PackageKit::PkPackage &pkg) { argument.beginStructure(); @@ -122,6 +158,8 @@ Daemon::Daemon(QObject *parent) : this, SLOT(propertiesChanged(QString,QVariantMap,QStringList))); + qDBusRegisterMetaType(); + qDBusRegisterMetaType(); qDBusRegisterMetaType(); qDBusRegisterMetaType>(); qDBusRegisterMetaType();