summaryrefslogtreecommitdiffstats
path: root/src/quick3d/quick3dscene2d/items/scene2d.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/quick3d/quick3dscene2d/items/scene2d.cpp')
-rw-r--r--src/quick3d/quick3dscene2d/items/scene2d.cpp18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/quick3d/quick3dscene2d/items/scene2d.cpp b/src/quick3d/quick3dscene2d/items/scene2d.cpp
index 981b290e2..063464b95 100644
--- a/src/quick3d/quick3dscene2d/items/scene2d.cpp
+++ b/src/quick3d/quick3dscene2d/items/scene2d.cpp
@@ -45,12 +45,12 @@
#include <QtCore/qthread.h>
#include <QtCore/qatomic.h>
#include <QtGui/qevent.h>
+#include <QtGui/QOpenGLFunctions>
#include <private/qscene2d_p.h>
#include <private/scene2d_p.h>
#include <private/scene2dmanager_p.h>
#include <private/scene2devent_p.h>
-#include <private/graphicscontext_p.h>
#include <private/texture_p.h>
#include <private/nodemanagers_p.h>
#include <private/resourceaccessor_p.h>
@@ -208,11 +208,16 @@ void Scene2D::syncFromFrontEnd(const Qt3DCore::QNode *frontEnd, bool firstTime)
if (!entity)
return;
- registerObjectPickerEvents(entity);
+ if (registerObjectPickerEvents(entity))
+ m_entities.push_back(id);
+ else
+ Qt3DCore::QNodePrivate::get(const_cast<Qt3DCore::QNode *>(frontEnd))->update();
}
- for (const auto &id: removedEntities)
+ for (const auto &id: removedEntities) {
+ m_entities.removeOne(id);
unregisterObjectPickerEvents(id);
- m_entities = ids;
+ }
+ std::sort(std::begin(m_entities), std::end(m_entities));
if (firstTime)
setSharedObject(dnode->m_renderManager->m_sharedObject);
@@ -428,8 +433,11 @@ bool Scene2D::registerObjectPickerEvents(Qt3DCore::QEntity *qentity)
{
Entity *entity = nullptr;
if (!resourceAccessor()->accessResource(RenderBackendResourceAccessor::EntityHandle,
- qentity->id(), (void**)&entity, nullptr))
+ qentity->id(), (void**)&entity, nullptr)) {
+ qCWarning(Qt3DRender::Quick::Scene2D) << Q_FUNC_INFO
+ << "Entity not yet available in backend";
return false;
+ }
if (!entity->containsComponentsOfType<ObjectPicker>() ||
!entity->containsComponentsOfType<GeometryRenderer>()) {