summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/engine/abstract3dcontroller.cpp
diff options
context:
space:
mode:
authorTomi Korpipää <tomi.korpipaa@digia.com>2014-05-15 12:01:47 +0300
committerTomi Korpipää <tomi.korpipaa@digia.com>2014-05-16 06:09:57 +0300
commit6368dd9a1d9e51016dcef9c93137526c07adcbeb (patch)
treefcdf2ca833728538977c43b009b9ce8c2d9fe8b5 /src/datavisualization/engine/abstract3dcontroller.cpp
parentc9a3325e59b224c26d5e49688b29b2a57134e019 (diff)
Dirty bits to custom item
Task-number: QTRD-3082 Change-Id: I1503b067edcc677904ca16c1501109187809f98b Change-Id: I1503b067edcc677904ca16c1501109187809f98b Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
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)