diff options
author | Dave Andrews <jetdog330@hotmail.com> | 2016-08-22 22:43:55 -0400 |
---|---|---|
committer | Milian Wolff <milian.wolff@kdab.com> | 2016-09-29 15:04:25 +0000 |
commit | 7cb2d467c3421eced44ae7b887b8738cc68595fc (patch) | |
tree | 52f26037e5963d46383b9484b30f3937755d9c3b /src | |
parent | e354bdc5cbe33621def2b200f01d6376291570fc (diff) | |
download | qtwebchannel-7cb2d467c3421eced44ae7b887b8738cc68595fc.tar.gz |
Fix asynchronous signals from QObjects in different threads
Switches the signal listener in QWebChannel from using
Qt::DirectConnection to Qt::AutoConnection to relay signals
from QObjects in different affinities than the QWebChannel.
Also adds a unit test in testAsyncObject() to verify that
QWebChannel no longer crashes when receiving such a signal,
and that such objects can be added and removed dynamically.
Task-number: QTBUG-51366
Change-Id: I51a4886286fec9257a21ea95360c1ea8889a584a
Reviewed-by: Dave Andrews <jetdog330@hotmail.com>
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/webchannel/signalhandler_p.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/webchannel/signalhandler_p.h b/src/webchannel/signalhandler_p.h index 971c1c9..0f99c5c 100644 --- a/src/webchannel/signalhandler_p.h +++ b/src/webchannel/signalhandler_p.h @@ -178,7 +178,7 @@ void SignalHandler<Receiver>::connectTo(const QObject *object, const int signalI } // otherwise not yet connected, do so now static const int memberOffset = QObject::staticMetaObject.methodCount(); - QMetaObject::Connection connection = QMetaObject::connect(object, signal.methodIndex(), this, memberOffset + signalIndex, Qt::DirectConnection, 0); + QMetaObject::Connection connection = QMetaObject::connect(object, signal.methodIndex(), this, memberOffset + signalIndex, Qt::AutoConnection, 0); if (!connection) { qWarning() << "SignalHandler: QMetaObject::connect returned false. Unable to connect to" << object << signal.name() << signal.methodSignature(); return; |