diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-11-02 03:02:38 +0100 |
---|---|---|
committer | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2019-11-02 03:02:38 +0100 |
commit | bfeba7c431fd7bebbf7163853cb2e6a327e188aa (patch) | |
tree | f89b0abaef1cf74acb5cfe88648cd23c642a6a24 /src/core | |
parent | c9d4103e52b28c7a242d90433112bfaedb77f0cc (diff) | |
parent | fae98c57264e78e62c5955559c7e513969462a79 (diff) |
Merge remote-tracking branch 'origin/5.14' into 5.15
Change-Id: I8564907ed5efd7617be383017fe12ffa7cd3a0d1
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/aspects/qaspectmanager.cpp | 6 | ||||
-rw-r--r-- | src/core/nodes/qnode.cpp | 5 |
2 files changed, 10 insertions, 1 deletions
diff --git a/src/core/aspects/qaspectmanager.cpp b/src/core/aspects/qaspectmanager.cpp index dffdd1c1a..f24248399 100644 --- a/src/core/aspects/qaspectmanager.cpp +++ b/src/core/aspects/qaspectmanager.cpp @@ -414,6 +414,8 @@ bool QAspectManager::event(QEvent *e) // the loop if (m_simulationLoopRunning && m_driveMode == QAspectEngine::Automatic) requestNextFrame(); + + return true; } return QObject::event(e); @@ -424,7 +426,7 @@ void QAspectManager::requestNextFrame() qCDebug(Aspects) << "Requesting new Frame"; // Post event in the event loop to force // next frame to be processed - qApp->postEvent(this, new RequestFrameEvent()); + QCoreApplication::postEvent(this, new RequestFrameEvent()); } void QAspectManager::processFrame() @@ -436,6 +438,8 @@ void QAspectManager::processFrame() m_serviceLocator->service<QAbstractFrameAdvanceService>(QServiceLocator::FrameAdvanceService); const qint64 t = frameAdvanceService->waitForNextFrame(); + if (t < 0) + return; // Distribute accumulated changes. This includes changes sent from the frontend // to the backend nodes. We call this before the call to m_scheduler->update() to ensure diff --git a/src/core/nodes/qnode.cpp b/src/core/nodes/qnode.cpp index cfe83f4db..739b46cfe 100644 --- a/src/core/nodes/qnode.cpp +++ b/src/core/nodes/qnode.cpp @@ -683,6 +683,11 @@ void QNodePrivate::update() void QNodePrivate::updateNode(QNode *node, const char *property, ChangeFlag change) { if (m_changeArbiter) { + // Ensure node has its postConstructorInit called if we reach this + // point, we could otherwise endup referencing a node that has yet + // to be created in the backend + QNodePrivate::get(node)->_q_ensureBackendNodeCreated(); + Q_Q(QNode); m_changeArbiter->addDirtyFrontEndNode(q, node, property, change); } |