From e2853c3db2e7ae371b6f245684d33b64c516ea2b Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sun, 16 Jul 2017 03:52:38 +0200 Subject: [PATCH] Ref T109, worker tweaks * set name already in ctor * Q_ASSERT_X for start --- src/blackmisc/worker.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/blackmisc/worker.cpp b/src/blackmisc/worker.cpp index 4f66758ce..d7a148514 100644 --- a/src/blackmisc/worker.cpp +++ b/src/blackmisc/worker.cpp @@ -119,7 +119,9 @@ namespace BlackMisc CContinuousWorker::CContinuousWorker(QObject *owner, const QString &name) : m_owner(owner), m_name(name) { - m_updateTimer.setObjectName(name + ":timer"); + if (m_name.isEmpty()) { m_name = metaObject()->className(); } + setObjectName(m_name); + m_updateTimer.setObjectName(m_name + ":timer"); } void CContinuousWorker::start(QThread::Priority priority) @@ -127,8 +129,8 @@ namespace BlackMisc BLACK_VERIFY_X(!hasStarted(), Q_FUNC_INFO, "Tried to start a worker that was already started"); if (hasStarted()) { return; } - if (m_name.isEmpty()) { m_name = metaObject()->className(); } - + // avoid message "QObject: Cannot create children for a parent that is in a different thread" + Q_ASSERT_X(CThreadUtils::isCurrentThreadObjectThread(m_owner), Q_FUNC_INFO, "Needs to be started in owner thread"); emit aboutToStart(); setStarted(); auto *thread = new CRegularThread(m_owner); @@ -136,10 +138,9 @@ namespace BlackMisc Q_ASSERT(m_owner); // must not be null, see (9) https://dev.vatsim-germany.org/issues/402 if (m_owner) { - QString ownerName = m_owner->objectName().isEmpty() ? m_owner->metaObject()->className() : m_owner->objectName(); + const QString ownerName = m_owner->objectName().isEmpty() ? m_owner->metaObject()->className() : m_owner->objectName(); thread->setObjectName(ownerName + ":" + m_name); } - setObjectName(m_name); moveToThread(thread); connect(thread, &QThread::started, this, &CContinuousWorker::initialize);