diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2016-05-31 11:57:53 -0300 |
---|---|---|
committer | Thiago Macieira <thiago.macieira@intel.com> | 2016-08-09 02:41:22 +0000 |
commit | 6f275a4beb9a42b9d5ac99682ce9939a66239778 (patch) | |
tree | ea39e71a200d83d54cb358d744bacd2f4cd40703 /tests/auto/dbus | |
parent | e24f89f266cee6e2473af6f66bd78f2df3a51c83 (diff) |
Make sure QDBusConnection::connect() returns false if already connected
QDBusConnection::connect() behaves like QObject::connect with a
connection type of Qt::UniqueConnection | Qt::QueuedConnection. So
return false if it's already connected.
[ChangeLog][QtDBus][QDBusConnection] Fixed a bug that would cause
QDBusConnection::connect() to return true if a slot was already
connected to the same D-Bus signal. QtDBus does not support multiple
connections.
Change-Id: I87e17314d8b24ae983b1fffd1453aef5a7c9ad0b
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Diffstat (limited to 'tests/auto/dbus')
-rw-r--r-- | tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp b/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp index 602de58b2c..95daa256b5 100644 --- a/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp +++ b/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp @@ -1087,6 +1087,16 @@ void tst_QDBusConnection::connectSignal() QTest::qWait(100); QCOMPARE(recv.argumentReceived, signal.arguments().at(0).toString()); QCOMPARE(recv.signalsReceived, 1); + + // confirm that we are, indeed, a unique connection + recv.argumentReceived.clear(); + recv.signalsReceived = 0; + QVERIFY(!con.connect(con.baseService(), signal.path(), signal.interface(), + signal.member(), "s", &recv, SLOT(oneSlot(QString)))); + QVERIFY(con.send(signal)); + QTest::qWait(100); + QCOMPARE(recv.argumentReceived, signal.arguments().at(0).toString()); + QCOMPARE(recv.signalsReceived, 1); } void tst_QDBusConnection::slotsWithLessParameters() @@ -1118,6 +1128,15 @@ void tst_QDBusConnection::slotsWithLessParameters() QTest::qWait(100); QCOMPARE(recv.argumentReceived, QString()); QCOMPARE(recv.signalsReceived, 1); + + // confirm that we are, indeed, a unique connection + recv.signalsReceived = 0; + QVERIFY(!con.connect(con.baseService(), signal.path(), signal.interface(), + signal.member(), "s", &recv, SLOT(oneSlot()))); + QVERIFY(con.send(signal)); + QTest::qWait(100); + QCOMPARE(recv.argumentReceived, QString()); + QCOMPARE(recv.signalsReceived, 1); } void SignalReceiver::secondCallWithCallback() |