diff options
author | Antti Määttä <antti.maatta@qt.io> | 2016-11-14 14:10:27 +0200 |
---|---|---|
committer | Antti Määttä <antti.maatta@qt.io> | 2017-01-26 12:17:47 +0000 |
commit | c7be0f914e58aca8442b19d0f8df86f59dcc0858 (patch) | |
tree | 63d850b26970ac3440dd4e1edaf9e9e0a33bde6e | |
parent | 421705544d8ba832c9e3ff67d048c57cc48b39b5 (diff) |
Fix scene2d unit tests
Change-Id: Id3caa548ad906647488a343cf0c68f176270f319
Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
-rw-r--r-- | src/quick3d/quick3drender/scene2d/scene2d.cpp | 19 | ||||
-rw-r--r-- | src/quick3d/quick3drender/scene2d/scene2d_p.h | 1 |
2 files changed, 11 insertions, 9 deletions
diff --git a/src/quick3d/quick3drender/scene2d/scene2d.cpp b/src/quick3d/quick3drender/scene2d/scene2d.cpp index 0ccf38fc7..309899066 100644 --- a/src/quick3d/quick3drender/scene2d/scene2d.cpp +++ b/src/quick3d/quick3drender/scene2d/scene2d.cpp @@ -134,7 +134,8 @@ void Scene2D::initializeSharedObject() m_sharedObject->m_renderThread->start(); // Notify main thread we have been initialized - QCoreApplication::postEvent(m_sharedObject->m_renderManager, new QEvent(INITIALIZED)); + if (m_sharedObject->m_renderManager) + QCoreApplication::postEvent(m_sharedObject->m_renderManager, new QEvent(INITIALIZED)); // Initialize render thread QCoreApplication::postEvent(m_sharedObject->m_renderObject, new QEvent(INITIALIZE)); @@ -151,7 +152,6 @@ void Scene2D::initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &chan setSharedObject(data.sharedObject); setOutput(data.output); m_shareContext = renderer()->shareContext(); - m_accessor = resourceAccessor(); } void Scene2D::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) @@ -170,6 +170,7 @@ void Scene2D::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) setSharedObject(sharedObject); } } + BackendNode::sceneChangeEvent(e); } void Scene2D::setSharedObject(Qt3DRender::Quick::Scene2DSharedObjectPtr sharedObject) @@ -181,9 +182,7 @@ void Scene2D::setSharedObject(Qt3DRender::Quick::Scene2DSharedObjectPtr sharedOb void Scene2D::initializeRender() { - if (!m_renderInitialized) { - - Q_ASSERT(m_shareContext); + if (!m_renderInitialized && m_sharedObject.data() != nullptr) { QSurfaceFormat format; format.setDepthBufferSize(24); @@ -252,8 +251,10 @@ void Scene2D::render() QMutex *textureLock = nullptr; m_context->makeCurrent(m_sharedObject->m_surface); - if (m_accessor->accessResource(m_outputId, (void**)&attachmentData, nullptr)) { - if (!m_accessor->accessResource(attachmentData->m_textureUuid, (void**)&texture, &textureLock)) { + + if (resourceAccessor()->accessResource(m_outputId, (void**)&attachmentData, nullptr)) { + if (!resourceAccessor()->accessResource(attachmentData->m_textureUuid, + (void**)&texture, &textureLock)) { // Need to call sync even if the texture is not in use syncRenderControl(); m_context->doneCurrent(); @@ -320,13 +321,15 @@ void Scene2D::cleanup() m_context->functions()->glDeleteFramebuffers(1, &m_fbo); m_context->functions()->glDeleteRenderbuffers(1, &m_rbo); m_context->doneCurrent(); + m_renderInitialized = false; + } + if (m_initialized) { m_sharedObject->m_renderThread->quit(); delete m_sharedObject->m_renderObject; m_sharedObject->m_renderObject = nullptr; delete m_context; m_context = nullptr; m_sharedObject = nullptr; - m_renderInitialized = false; m_initialized = false; } } diff --git a/src/quick3d/quick3drender/scene2d/scene2d_p.h b/src/quick3d/quick3drender/scene2d/scene2d_p.h index 769916fc9..cfe8035bf 100644 --- a/src/quick3d/quick3drender/scene2d/scene2d_p.h +++ b/src/quick3d/quick3drender/scene2d/scene2d_p.h @@ -106,7 +106,6 @@ public: Qt3DCore::QNodeId m_outputId; QSharedPointer<Qt3DRender::Quick::Scene2DSharedObject> m_sharedObject; Qt3DCore::QNodeId m_peerId; - QSharedPointer<RenderBackendResourceAccessor> m_accessor; Qt3DRender::Render::Attachment m_attachmentData; GLuint m_fbo; |