summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAntti Määttä <antti.maatta@qt.io>2016-11-14 14:10:27 +0200
committerAntti Määttä <antti.maatta@qt.io>2017-01-26 12:17:47 +0000
commitc7be0f914e58aca8442b19d0f8df86f59dcc0858 (patch)
tree63d850b26970ac3440dd4e1edaf9e9e0a33bde6e
parent421705544d8ba832c9e3ff67d048c57cc48b39b5 (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.cpp19
-rw-r--r--src/quick3d/quick3drender/scene2d/scene2d_p.h1
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;