From 993c95dacc71d7111130d156dd12a351533a6ffa Mon Sep 17 00:00:00 2001 From: uclaros Date: Wed, 18 Oct 2023 21:43:15 +0300 Subject: [PATCH] trigger loading of sub indexes using queued connection --- src/3d/qgsvirtualpointcloudentity_p.cpp | 4 +++- src/3d/qgsvirtualpointcloudentity_p.h | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/3d/qgsvirtualpointcloudentity_p.cpp b/src/3d/qgsvirtualpointcloudentity_p.cpp index bd8096a83a6..88535053111 100644 --- a/src/3d/qgsvirtualpointcloudentity_p.cpp +++ b/src/3d/qgsvirtualpointcloudentity_p.cpp @@ -56,7 +56,9 @@ QgsVirtualPointCloudEntity::QgsVirtualPointCloudEntity( QgsPointCloudLayer *laye } updateBboxEntity(); + connect( this, &QgsVirtualPointCloudEntity::subIndexNeedsLoading, provider(), &QgsVirtualPointCloudProvider::loadSubIndex, Qt::QueuedConnection ); connect( provider(), &QgsVirtualPointCloudProvider::subIndexLoaded, this, &QgsVirtualPointCloudEntity::createChunkedEntityForSubIndex ); + } QList QgsVirtualPointCloudEntity::chunkedEntities() const @@ -120,7 +122,7 @@ void QgsVirtualPointCloudEntity::handleSceneUpdate( const SceneState &state ) // then once the camera changes we display as bbox depending on screen space error const bool displayAsBbox = state.cameraPos.isNull() || sse < THRESHOLD; if ( !displayAsBbox && !subIndexes.at( i ).index() ) - provider()->loadSubIndex( i ); + emit subIndexNeedsLoading( i ); setRenderSubIndexAsBbox( i, displayAsBbox ); if ( !displayAsBbox && mChunkedEntitiesMap.contains( i ) ) diff --git a/src/3d/qgsvirtualpointcloudentity_p.h b/src/3d/qgsvirtualpointcloudentity_p.h index 241a53fb7b3..d3f9c8af9f1 100644 --- a/src/3d/qgsvirtualpointcloudentity_p.h +++ b/src/3d/qgsvirtualpointcloudentity_p.h @@ -75,6 +75,9 @@ class QgsVirtualPointCloudEntity : public Qgs3DMapSceneEntity //! If \a asBbox is TRUE only the bounding box will be rendered for the sub index \a i. If it is FALSE, the sub index will be rendered as a chunked entity. void setRenderSubIndexAsBbox( int i, bool asBbox ); + signals: + void subIndexNeedsLoading( int i ); + private: //! Updates the Bbox child entity to display the sub indexes set with setRenderSubIndexAsBbox() void updateBboxEntity();