summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/dbus/qdbusinterface.cpp6
-rw-r--r--tests/auto/qdbusinterface/tst_qdbusinterface.cpp3
2 files changed, 6 insertions, 3 deletions
diff --git a/src/dbus/qdbusinterface.cpp b/src/dbus/qdbusinterface.cpp
index 74b2a44..d0a693f 100644
--- a/src/dbus/qdbusinterface.cpp
+++ b/src/dbus/qdbusinterface.cpp
@@ -157,7 +157,9 @@ QDBusInterfacePrivate::QDBusInterfacePrivate(const QString &serv, const QString
if (!metaObject) {
// creation failed, somehow
- isValid = false;
+ // most common causes are that the service doesn't exist or doesn't support introspection
+ // those are not fatal errors, so we continue working
+
if (!lastError.isValid())
lastError = QDBusError(QDBusError::InternalError, QLatin1String("Unknown error"));
}
@@ -232,7 +234,7 @@ QDBusInterface::~QDBusInterface()
*/
const QMetaObject *QDBusInterface::metaObject() const
{
- return d_func()->isValid ? d_func()->metaObject : &QDBusAbstractInterface::staticMetaObject;
+ return d_func()->metaObject ? d_func()->metaObject : &QDBusAbstractInterface::staticMetaObject;
}
/*!
diff --git a/tests/auto/qdbusinterface/tst_qdbusinterface.cpp b/tests/auto/qdbusinterface/tst_qdbusinterface.cpp
index 62d6342..bcd5bd9 100644
--- a/tests/auto/qdbusinterface/tst_qdbusinterface.cpp
+++ b/tests/auto/qdbusinterface/tst_qdbusinterface.cpp
@@ -234,6 +234,7 @@ void tst_QDBusInterface::notValid()
void tst_QDBusInterface::invalidAfterServiceOwnerChanged()
{
+ // this test is technically the same as tst_QDBusAbstractInterface::followSignal
QDBusConnection conn = QDBusConnection::sessionBus();
QDBusConnectionInterface *connIface = conn.interface();
@@ -249,7 +250,7 @@ void tst_QDBusInterface::invalidAfterServiceOwnerChanged()
QTestEventLoop::instance().enterLoop(5);
QVERIFY(!QTestEventLoop::instance().timeout());
- QVERIFY(!invalidInterface.isValid());
+ QVERIFY(invalidInterface.isValid());
}
void tst_QDBusInterface::introspect()