diff options
author | Nicolas Fella <[email protected]> | 2023-09-07 21:36:20 +0200 |
---|---|---|
committer | Nicolas Fella <[email protected]> | 2023-09-17 23:39:04 +0200 |
commit | b2e5f7049047f6311b96506621ac75ec2fcb0c2e (patch) | |
tree | 1bf538f2e59c308c918c49439f694b3b839eaeee | |
parent | 2fd4a86dc5547d6ff3f512bd33ccf6e10d159ff4 (diff) |
QDBusConnection: Print error from prepareHook
When the operation fails we print a warning, but that warning does not
include the error message that prepareHook internally collects but
ignores.
Printing the error is useful for debugging.
Pick-to: 6.6
Change-Id: I946c4781942115a17ffd43a79bff7676b6674be1
Reviewed-by: Thiago Macieira <[email protected]>
-rw-r--r-- | src/dbus/qdbusconnection_p.h | 9 | ||||
-rw-r--r-- | src/dbus/qdbusintegrator.cpp | 36 |
2 files changed, 25 insertions, 20 deletions
diff --git a/src/dbus/qdbusconnection_p.h b/src/dbus/qdbusconnection_p.h index 1b79d3911ce..53e68748186 100644 --- a/src/dbus/qdbusconnection_p.h +++ b/src/dbus/qdbusconnection_p.h @@ -320,11 +320,10 @@ public: static int findSlot(QObject *obj, const QByteArray &normalizedName, QList<QMetaType> ¶ms, QString &errorMsg); static bool prepareHook(QDBusConnectionPrivate::SignalHook &hook, QString &key, - const QString &service, - const QString &path, const QString &interface, const QString &name, - const ArgMatchRules &argMatch, - QObject *receiver, const char *signal, int minMIdx, - bool buildSignature); + const QString &service, const QString &path, const QString &interface, + const QString &name, const ArgMatchRules &argMatch, QObject *receiver, + const char *signal, int minMIdx, bool buildSignature, + QString &errorMsg); static QDBusCallDeliveryEvent *prepareReply(QDBusConnectionPrivate *target, QObject *object, int idx, const QList<QMetaType> &metaTypes, const QDBusMessage &msg); diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp index c61ca27b5d1..276a3fcc3fb 100644 --- a/src/dbus/qdbusintegrator.cpp +++ b/src/dbus/qdbusintegrator.cpp @@ -1304,14 +1304,13 @@ int QDBusConnectionPrivate::findSlot(QObject *obj, const QByteArray &normalizedN } bool QDBusConnectionPrivate::prepareHook(QDBusConnectionPrivate::SignalHook &hook, QString &key, - const QString &service, - const QString &path, const QString &interface, const QString &name, - const ArgMatchRules &argMatch, - QObject *receiver, const char *signal, int minMIdx, - bool buildSignature) + const QString &service, const QString &path, + const QString &interface, const QString &name, + const ArgMatchRules &argMatch, QObject *receiver, + const char *signal, int minMIdx, bool buildSignature, + QString &errorMsg) { QByteArray normalizedName = signal + 1; - QString errorMsg; hook.midx = findSlot(receiver, signal + 1, hook.params, errorMsg); if (hook.midx == -1) { normalizedName = QMetaObject::normalizedSignature(signal + 1); @@ -2225,9 +2224,11 @@ bool QDBusConnectionPrivate::connectSignal(const QString &service, QString key; hook.signature = signature; + QString errorMsg; if (!prepareHook(hook, key, service, path, interface, name, argumentMatch, receiver, slot, 0, - false)) { - qCWarning(dbusIntegration) << "Could not connect" << interface << "to" << slot + 1; + false, errorMsg)) { + qCWarning(dbusIntegration) + << "Could not connect" << interface << "to" << slot + 1 << ":" << qPrintable(errorMsg); return false; // don't connect } @@ -2328,9 +2329,11 @@ bool QDBusConnectionPrivate::disconnectSignal(const QString &service, name2.detach(); hook.signature = signature; + QString errorMsg; if (!prepareHook(hook, key, service, path, interface, name, argumentMatch, receiver, slot, 0, - false)) { - qCWarning(dbusIntegration) << "Could not disconnect" << interface << "to" << slot + 1; + false, errorMsg)) { + qCWarning(dbusIntegration) + << "Could not disconnect" << interface << "to" << slot + 1 << ":" << qPrintable(errorMsg); return false; // don't disconnect } @@ -2470,9 +2473,11 @@ void QDBusConnectionPrivate::connectRelay(const QString &service, QByteArray sig; sig.append(QSIGNAL_CODE + '0'); sig.append(signal.methodSignature()); + QString errorMsg; if (!prepareHook(hook, key, service, path, interface, QString(), ArgMatchRules(), receiver, sig, - QDBusAbstractInterface::staticMetaObject.methodCount(), true)) { - qCWarning(dbusIntegration) << "Could not connect" << interface << "to" << signal.name(); + QDBusAbstractInterface::staticMetaObject.methodCount(), true, errorMsg)) { + qCWarning(dbusIntegration) + << "Could not connect" << interface << "to" << signal.name() << ":" << qPrintable(errorMsg); return; // don't connect } @@ -2493,10 +2498,11 @@ void QDBusConnectionPrivate::disconnectRelay(const QString &service, QByteArray sig; sig.append(QSIGNAL_CODE + '0'); sig.append(signal.methodSignature()); + QString errorMsg; if (!prepareHook(hook, key, service, path, interface, QString(), ArgMatchRules(), receiver, sig, - QDBusAbstractInterface::staticMetaObject.methodCount(), true)) { - qCWarning(dbusIntegration) - << "Could not disconnect" << interface << "to" << signal.methodSignature(); + QDBusAbstractInterface::staticMetaObject.methodCount(), true, errorMsg)) { + qCWarning(dbusIntegration) << "Could not disconnect" << interface << "to" + << signal.methodSignature() << ":" << qPrintable(errorMsg); return; // don't disconnect } |