summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/engine/abstract3dcontroller.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/datavisualization/engine/abstract3dcontroller.cpp')
-rw-r--r--src/datavisualization/engine/abstract3dcontroller.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/datavisualization/engine/abstract3dcontroller.cpp b/src/datavisualization/engine/abstract3dcontroller.cpp
index 78ac135b..473ad34c 100644
--- a/src/datavisualization/engine/abstract3dcontroller.cpp
+++ b/src/datavisualization/engine/abstract3dcontroller.cpp
@@ -32,6 +32,7 @@
#include "q3dtheme_p.h"
#include "q3dscene_p.h"
#include "q3dscene.h"
+#include "qcustom3ditem_p.h"
#include <QtCore/QThread>
#include <QtGui/QOpenGLFramebufferObject>
@@ -52,6 +53,7 @@ Abstract3DController::Abstract3DController(QRect initialViewport, Q3DScene *scen
m_renderer(0),
m_isDataDirty(true),
m_isCustomDataDirty(true),
+ m_isCustomItemDirty(true),
m_isSeriesVisualsDirty(true),
m_renderPending(false),
m_measureFps(false),
@@ -411,6 +413,11 @@ void Abstract3DController::synchDataToRenderer()
m_renderer->updateCustomData(m_customItems);
m_isCustomDataDirty = false;
}
+
+ if (m_isCustomItemDirty) {
+ m_renderer->updateCustomItems();
+ m_isCustomItemDirty = false;
+ }
}
void Abstract3DController::render(const GLuint defaultFboHandle)
@@ -874,6 +881,8 @@ int Abstract3DController::addCustomItem(QCustom3DItem *item)
return index;
item->setParent(this);
+ connect(item->d_ptr.data(), &QCustom3DItemPrivate::needUpdate,
+ this, &Abstract3DController::updateCustomItem);
m_customItems.append(item);
m_isCustomDataDirty = true;
emitNeedRender();
@@ -914,6 +923,8 @@ void Abstract3DController::deleteCustomItem(const QVector3D &position)
void Abstract3DController::releaseCustomItem(QCustom3DItem *item)
{
if (item && m_customItems.contains(item)) {
+ disconnect(item->d_ptr.data(), &QCustom3DItemPrivate::needUpdate,
+ this, &Abstract3DController::updateCustomItem);
m_customItems.removeOne(item);
item->setParent(0);
m_isCustomDataDirty = true;
@@ -921,6 +932,12 @@ void Abstract3DController::releaseCustomItem(QCustom3DItem *item)
}
}
+void Abstract3DController::updateCustomItem()
+{
+ m_isCustomItemDirty = true;
+ emitNeedRender();
+}
+
void Abstract3DController::handleAxisTitleChanged(const QString &title)
{
Q_UNUSED(title)