diff options
Diffstat (limited to 'src/render/backend/renderbuffer.cpp')
-rw-r--r-- | src/render/backend/renderbuffer.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/render/backend/renderbuffer.cpp b/src/render/backend/renderbuffer.cpp index 7fd576290..423255786 100644 --- a/src/render/backend/renderbuffer.cpp +++ b/src/render/backend/renderbuffer.cpp @@ -64,6 +64,7 @@ void RenderBuffer::cleanup() m_type = QBuffer::VertexBuffer; m_usage = QBuffer::StaticDraw; m_data.clear(); + m_functor.reset(); m_bufferDirty = false; } @@ -87,7 +88,7 @@ void RenderBuffer::updateFromPeer(QNode *peer) m_data = buffer->data(); m_functor = buffer->bufferFunctor(); // Add to dirty list in the manager - if (m_functor) + if (m_functor && m_manager != Q_NULLPTR) m_manager->addDirtyBuffer(peerUuid()); m_bufferDirty = true; } @@ -110,9 +111,9 @@ void RenderBuffer::sceneChangeEvent(const QSceneChangePtr &e) m_bufferDirty = true; } else if (propertyName == QByteArrayLiteral("bufferFunctor")) { QBufferFunctorPtr newFunctor = propertyChange->value().value<QBufferFunctorPtr>(); - m_bufferDirty |= !(*newFunctor == *m_functor); + m_bufferDirty |= !(newFunctor && m_functor && *newFunctor == *m_functor); m_functor = newFunctor; - if (m_functor) + if (m_functor && m_manager != Q_NULLPTR) m_manager->addDirtyBuffer(peerUuid()); } } |