summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Fella <[email protected]>2023-09-07 21:36:20 +0200
committerNicolas Fella <[email protected]>2023-09-17 23:39:04 +0200
commitb2e5f7049047f6311b96506621ac75ec2fcb0c2e (patch)
tree1bf538f2e59c308c918c49439f694b3b839eaeee
parent2fd4a86dc5547d6ff3f512bd33ccf6e10d159ff4 (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.h9
-rw-r--r--src/dbus/qdbusintegrator.cpp36
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> &params,
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
}