diff options
-rw-r--r-- | src/render/geometry/buffer.cpp | 4 | ||||
-rw-r--r-- | src/render/geometry/qbuffer.cpp | 2 | ||||
-rw-r--r-- | tests/auto/render/buffer/tst_buffer.cpp | 24 |
3 files changed, 23 insertions, 7 deletions
diff --git a/src/render/geometry/buffer.cpp b/src/render/geometry/buffer.cpp index 998db3640..0ce81efc1 100644 --- a/src/render/geometry/buffer.cpp +++ b/src/render/geometry/buffer.cpp @@ -130,8 +130,10 @@ void Buffer::syncFromFrontEnd(const QNode *frontEnd, bool firstTime) if (!node) return; - if (firstTime && m_manager != nullptr) + if (firstTime && m_manager != nullptr) { m_manager->addBufferReference(peerId()); + m_bufferDirty = true; + } m_syncData = node->isSyncData(); m_access = node->accessType(); diff --git a/src/render/geometry/qbuffer.cpp b/src/render/geometry/qbuffer.cpp index f27005f2b..d27da25c7 100644 --- a/src/render/geometry/qbuffer.cpp +++ b/src/render/geometry/qbuffer.cpp @@ -329,7 +329,7 @@ void QBuffer::setData(const QByteArray &bytes) Q_D(QBuffer); if (bytes != d->m_data) { d->m_data = bytes; - Qt3DCore::QNodePrivate::get(this)->update(); + d->update(); emit dataChanged(bytes); } } diff --git a/tests/auto/render/buffer/tst_buffer.cpp b/tests/auto/render/buffer/tst_buffer.cpp index 1487d3728..48215bea5 100644 --- a/tests/auto/render/buffer/tst_buffer.cpp +++ b/tests/auto/render/buffer/tst_buffer.cpp @@ -113,26 +113,40 @@ private Q_SLOTS: // GIVEN Qt3DRender::QBuffer frontendBuffer; - frontendBuffer.setUsage(Qt3DRender::QBuffer::DynamicCopy); - frontendBuffer.setData(QByteArrayLiteral("C7KR4")); - frontendBuffer.setDataGenerator(Qt3DRender::QBufferDataGeneratorPtr(new TestFunctor(73))); // WHEN backendBuffer.setManager(&bufferManager); backendBuffer.setRenderer(&renderer); simulateInitializationSync(&frontendBuffer, &backendBuffer); - frontendBuffer.updateData(2, QByteArrayLiteral("LS5")); + // THEN + QCOMPARE(backendBuffer.isDirty(), true); + QCOMPARE(backendBuffer.usage(), Qt3DRender::QBuffer::StaticDraw); + QVERIFY(backendBuffer.data().isEmpty()); + QVERIFY(backendBuffer.dataGenerator().isNull()); + QVERIFY(backendBuffer.pendingBufferUpdates().empty()); + + // WHEN + frontendBuffer.setUsage(Qt3DRender::QBuffer::DynamicCopy); + frontendBuffer.setData(QByteArrayLiteral("C7KR4")); + frontendBuffer.setDataGenerator(Qt3DRender::QBufferDataGeneratorPtr(new TestFunctor(73))); backendBuffer.syncFromFrontEnd(&frontendBuffer, false); // THEN QCOMPARE(backendBuffer.usage(), Qt3DRender::QBuffer::DynamicCopy); QCOMPARE(backendBuffer.isDirty(), true); - QCOMPARE(backendBuffer.data(), QByteArrayLiteral("C7LS5")); + QCOMPARE(backendBuffer.data(), QByteArrayLiteral("C7KR4")); QVERIFY(!backendBuffer.dataGenerator().isNull()); QVERIFY(!backendBuffer.pendingBufferUpdates().empty()); // WHEN + frontendBuffer.updateData(2, QByteArrayLiteral("LS5")); + backendBuffer.syncFromFrontEnd(&frontendBuffer, false); + + // THEN + QCOMPARE(backendBuffer.isDirty(), true); + QCOMPARE(backendBuffer.data(), QByteArrayLiteral("C7LS5")); + // WHEN backendBuffer.cleanup(); // THEN |