summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/dbus/qdbusabstractadaptor.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/dbus/qdbusabstractadaptor.cpp b/src/dbus/qdbusabstractadaptor.cpp
index e08714f04d..02ff40068b 100644
--- a/src/dbus/qdbusabstractadaptor.cpp
+++ b/src/dbus/qdbusabstractadaptor.cpp
@@ -279,7 +279,16 @@ void QDBusAdaptorConnector::polish()
void QDBusAdaptorConnector::relaySlot(void **argv)
{
- relay(sender(), senderSignalIndex(), argv);
+ QObject *sndr = sender();
+ if (Q_LIKELY(sndr)) {
+ relay(sndr, senderSignalIndex(), argv);
+ } else {
+ qWarning("QtDBus: cannot relay signals from parent %s(%p \"%s\") unless they are emitted in the object's thread %s(%p \"%s\"). "
+ "Current thread is %s(%p \"%s\").",
+ parent()->metaObject()->className(), parent(), qPrintable(parent()->objectName()),
+ parent()->thread()->metaObject()->className(), parent()->thread(), qPrintable(parent()->thread()->objectName()),
+ QThread::currentThread()->metaObject()->className(), QThread::currentThread(), qPrintable(QThread::currentThread()->objectName()));
+ }
}
void QDBusAdaptorConnector::relay(QObject *senderObj, int lastSignalIdx, void **argv)