diff options
author | Tomi Korpipää <tomi.korpipaa@digia.com> | 2014-05-15 12:01:47 +0300 |
---|---|---|
committer | Tomi Korpipää <tomi.korpipaa@digia.com> | 2014-05-16 06:09:57 +0300 |
commit | 6368dd9a1d9e51016dcef9c93137526c07adcbeb (patch) | |
tree | fcdf2ca833728538977c43b009b9ce8c2d9fe8b5 /src/datavisualization/engine/abstract3dcontroller.cpp | |
parent | c9a3325e59b224c26d5e49688b29b2a57134e019 (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.cpp | 17 |
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) |