From 399c44a133b8a2a409e30c271be74c93c42d992b Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 10 Apr 2006 10:49:36 +0000 Subject: Merge from Subversion: * qt/qt-dbus.qdocconf: Update Trolltech's webpage link to something that exists (r526315) * qt/qdbusinternalfilters.cpp: Correctly detect non-scriptable slots/signals (r526316) * qt/qdbusinternalfilters.cpp: Fix the setProperty call and also return an unknown-method error if the parameters don't match for org.freedesktop.DBus.Properties. (r526842) * qt/examples/dbus.cpp: Allow passing of QVariants (r526843) * qt/qdbusintegrator.cpp: Restore the proper order of delivery: don't make method returns be delivered on priority (r528150) --- qt/examples/dbus.cpp | 12 ++++++++++-- qt/qdbusintegrator.cpp | 6 ++++-- qt/qdbusinternalfilters.cpp | 12 ++++++++---- qt/qt-dbus.qdocconf | 2 +- 4 files changed, 23 insertions(+), 9 deletions(-) (limited to 'qt') diff --git a/qt/examples/dbus.cpp b/qt/examples/dbus.cpp index e011381b..00172c62 100644 --- a/qt/examples/dbus.cpp +++ b/qt/examples/dbus.cpp @@ -213,11 +213,13 @@ void placeCall(const QString &service, const QString &path, const QString &inter QVariantList params; for (int i = 0; argc && i < types.count(); ++i) { int id = QVariant::nameToType(types.at(i)); - if (id == QVariant::UserType || id == QVariant::Map) { + if ((id == QVariant::UserType || id == QVariant::Map) && types.at(i) != "QVariant") { fprintf(stderr, "Sorry, can't pass arg of type %s yet\n", types.at(i).constData()); exit(1); } + if (id == QVariant::UserType) + id = QMetaType::type(types.at(i)); Q_ASSERT(id); @@ -227,7 +229,13 @@ void placeCall(const QString &service, const QString &path, const QString &inter else p = QString::fromLocal8Bit(argv[0]); - p.convert( QVariant::Type(id) ); + if (id < QVariant::UserType) + // avoid calling it for QVariant + p.convert( QVariant::Type(id) ); + else if (types.at(i) == "QVariant") { + QVariant tmp(id, p.constData()); + p = tmp; + } params += p; --argc; ++argv; diff --git a/qt/qdbusintegrator.cpp b/qt/qdbusintegrator.cpp index 38f71a11..a9467c00 100644 --- a/qt/qdbusintegrator.cpp +++ b/qt/qdbusintegrator.cpp @@ -995,6 +995,9 @@ bool QDBusConnectionPrivate::activateInternalFilters(const ObjectTreeNode *node, qDBusPropertyGet(node, msg); else if (msg.method() == QLatin1String("Set") && msg.signature() == QLatin1String("ssv")) qDBusPropertySet(node, msg); + else + return false; + return true; } @@ -1245,10 +1248,9 @@ void QDBusConnectionPrivate::messageResultReceived(DBusPendingCall *pending, voi qDebug() << "got message: " << msg; CallDeliveryEvent *e = prepareReply(call->receiver, call->methodIdx, call->metaTypes, msg); if (e) - connection->deliverCall(*e); + connection->postCallDeliveryEvent(e); else qDebug() << "Deliver failed!"; - delete e; } dbus_pending_call_unref(pending); delete call; diff --git a/qt/qdbusinternalfilters.cpp b/qt/qdbusinternalfilters.cpp index e5a7fc92..7e938402 100644 --- a/qt/qdbusinternalfilters.cpp +++ b/qt/qdbusinternalfilters.cpp @@ -152,9 +152,13 @@ static QString generateInterfaceXml(const QMetaObject *mo, int flags, int method .arg(isOutput ? QLatin1String("out") : QLatin1String("in")); } - if (!isScriptable && - !(flags & (QDBusConnection::ExportAllSlots | QDBusConnection::ExportAllSignals))) - continue; + if (!isScriptable) { + // check if this was added by other means + if (isSignal && (flags & QDBusConnection::ExportAllSignals) != QDBusConnection::ExportAllSignals) + continue; + if (!isSignal && (flags & QDBusConnection::ExportAllSlots) != QDBusConnection::ExportAllSlots) + continue; + } if (qDBusCheckAsyncTag(mm.tag())) // add the no-reply annotation @@ -359,7 +363,7 @@ void qDBusPropertySet(const QDBusConnectionPrivate::ObjectTreeNode *node, const } } - if (!value.isValid() && node->flags & QDBusConnection::ExportProperties) { + if (node->flags & QDBusConnection::ExportProperties) { // try the object itself int pidx = node->obj->metaObject()->indexOfProperty(property_name); if (pidx != -1) { diff --git a/qt/qt-dbus.qdocconf b/qt/qt-dbus.qdocconf index 5c5ef6ca..db9fcd6e 100644 --- a/qt/qt-dbus.qdocconf +++ b/qt/qt-dbus.qdocconf @@ -126,7 +126,7 @@ HTML.postheader = "\n" \ "
\n" \ - "\n" \ + "\n" \ "\n" \ "\n" \ "
Copyright © 2006 TrolltechCopyright © 2006 Trolltech 
QtDBus \\version
" -- cgit