diff options
Diffstat (limited to 'src/qml/qml/qqmlnotifier.cpp')
-rw-r--r-- | src/qml/qml/qqmlnotifier.cpp | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/qml/qml/qqmlnotifier.cpp b/src/qml/qml/qqmlnotifier.cpp index 1ed3a2957d..20b90a7111 100644 --- a/src/qml/qml/qqmlnotifier.cpp +++ b/src/qml/qml/qqmlnotifier.cpp @@ -41,6 +41,8 @@ #include "qqmlnotifier_p.h" #include "qqmlproperty_p.h" +#include <QtCore/qdebug.h> +#include <private/qthread_p.h> QT_BEGIN_NAMESPACE @@ -67,10 +69,26 @@ void QQmlNotifier::emitNotify(QQmlNotifierEndpoint *endpoint, void **a) else if (endpoint) endpoint->notifying = 0; } -void QQmlNotifierEndpoint::connect(QObject *source, int sourceSignal) +void QQmlNotifierEndpoint::connect(QObject *source, int sourceSignal, QQmlEngine *engine) { disconnect(); + Q_ASSERT(engine); + if (QObjectPrivate::get(source)->threadData->threadId != + QObjectPrivate::get(engine)->threadData->threadId) { + + QString sourceName; + QDebug(&sourceName) << source; + sourceName = sourceName.left(sourceName.length() - 1); + QString engineName; + QDebug(&engineName).nospace() << engine; + engineName = engineName.left(engineName.length() - 1); + + qFatal("QQmlEngine: Illegal attempt to connect to %s that is in" + " a different thread than the QML engine %s.", qPrintable(sourceName), + qPrintable(engineName)); + } + this->source = source; this->sourceSignal = sourceSignal; QQmlPropertyPrivate::flushSignal(source, sourceSignal); |