From b2f9839457a7c09c2898befe431443aaeb607edb Mon Sep 17 00:00:00 2001 From: David Faure Date: Sat, 4 May 2013 13:03:45 +0200 Subject: QDBus: improve error handling, to give the developer feedback. For instance, exporting an object with a slot like QString complexMethod(const MyVariantMap& vars); (even with a simple typedef QVariantMap MyVariantMap) used to silently skip that method in the introspection. Now it outputs: generateInterfaceXml: Skipped method "complexMethod" : Invalid type in parameter list: MyVariantMap Change-Id: I7964cfb63e973257ce1abe47b9625e361b2ad23f Reviewed-by: Kevin Ottens Reviewed-by: Thiago Macieira --- src/dbus/qdbusabstractadaptor.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'src/dbus/qdbusabstractadaptor.cpp') diff --git a/src/dbus/qdbusabstractadaptor.cpp b/src/dbus/qdbusabstractadaptor.cpp index e08714f04d..1dbc79d6ec 100644 --- a/src/dbus/qdbusabstractadaptor.cpp +++ b/src/dbus/qdbusabstractadaptor.cpp @@ -298,15 +298,18 @@ void QDBusAdaptorConnector::relay(QObject *senderObj, int lastSignalIdx, void ** // break down the parameter list QVector types; - int inputCount = qDBusParametersForMethod(mm, types); - if (inputCount == -1) + QString errorMsg; + int inputCount = qDBusParametersForMethod(mm, types, errorMsg); + if (inputCount == -1) { // invalid signal signature - // qDBusParametersForMethod has already complained + qWarning("QDBusAbstractAdaptor: Cannot relay signal %s::%s: %s", + senderMetaObject->className(), mm.methodSignature().constData(), + qPrintable(errorMsg)); return; + } if (inputCount + 1 != types.count() || types.at(inputCount) == QDBusMetaTypeId::message()) { // invalid signal signature - // qDBusParametersForMethod has not yet complained about this one qWarning("QDBusAbstractAdaptor: Cannot relay signal %s::%s", senderMetaObject->className(), mm.methodSignature().constData()); return; -- cgit v1.2.3