diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2013-03-13 11:56:08 -0700 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-03-19 07:03:17 +0100 |
commit | d2a98df9bcb113d9ef8ea0e7c1472875372706c7 (patch) | |
tree | a3c89ef0227a25bff5775ccbdad681f39274fd4c /src/dbus/qdbusabstractinterface.cpp | |
parent | d1b4857d1718ef50dba64c8700253fed5d187ab2 (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/dbus/qdbusabstractinterface.cpp')
-rw-r--r-- | src/dbus/qdbusabstractinterface.cpp | 2 |
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); } |