summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2013-03-13 11:56:08 -0700
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-03-19 07:03:17 +0100
commitd2a98df9bcb113d9ef8ea0e7c1472875372706c7 (patch)
treea3c89ef0227a25bff5775ccbdad681f39274fd4c /src
parentd1b4857d1718ef50dba64c8700253fed5d187ab2 (diff)
Make sure that signal disconnects don't disconnect too much
There has been a latent bug forever in QtDBus that would make a signal disconnect actually disconnect too much. The reason is that disconnectNotify() is called every time a signal is disconnected from a receiver, but that doesn't mean it was the last connection. This test checks whether disconnecting from voidSignal() to our test receiver will also disconnect from exitLoop(). If it does, we'll get a timeout. I could have implemented it with two receivers, but in the buggy case, it would always fail first in the timeout verification. Change-Id: I5766d8a38594eb25e65b304913251303660fad41 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/dbus/qdbusabstractinterface.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/dbus/qdbusabstractinterface.cpp b/src/dbus/qdbusabstractinterface.cpp
index 22fe4a5fd8..2d7b15fe62 100644
--- a/src/dbus/qdbusabstractinterface.cpp
+++ b/src/dbus/qdbusabstractinterface.cpp
@@ -609,7 +609,7 @@ void QDBusAbstractInterface::disconnectNotify(const QMetaMethod &signal)
return;
QDBusConnectionPrivate *conn = d->connectionPrivate();
- if (conn)
+ if (conn && !isSignalConnected(signal))
conn->disconnectRelay(d->service, d->path, d->interface,
this, signal);
}