diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2014-05-21 13:37:11 +0300 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2014-05-22 08:03:06 +0300 |
commit | cb79f11be1c0c379a1eccea62606a58b73442f2f (patch) | |
tree | 0e8409d491897b4fc9d1929ea1e13e575c6b7198 /src/datavisualization/data | |
parent | 37a82fbeb7aa59260fe5f31b62228914ee4a44a3 (diff) |
Cache ObjectHelper instances
Task-number: QTRD-2792
Change-Id: I90d83bd9b73a0f337fd26f1b92000e72b3ec0607
Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'src/datavisualization/data')
-rw-r--r-- | src/datavisualization/data/customrenderitem.cpp | 18 | ||||
-rw-r--r-- | src/datavisualization/data/customrenderitem_p.h | 9 |
2 files changed, 11 insertions, 16 deletions
diff --git a/src/datavisualization/data/customrenderitem.cpp b/src/datavisualization/data/customrenderitem.cpp index 53db9bd1..a1c70057 100644 --- a/src/datavisualization/data/customrenderitem.cpp +++ b/src/datavisualization/data/customrenderitem.cpp @@ -24,29 +24,19 @@ CustomRenderItem::CustomRenderItem() : AbstractRenderItem(), m_texture(0), m_object(0), - m_visible(true) + m_visible(true), + m_renderer(0) { } -CustomRenderItem::CustomRenderItem(const CustomRenderItem &other) - : AbstractRenderItem(other) -{ - m_texture = other.m_texture; -} - CustomRenderItem::~CustomRenderItem() { - if (m_object) - delete m_object; + ObjectHelper::releaseObjectHelper(m_renderer, m_object); } void CustomRenderItem::setMesh(const QString &meshFile) { - if (m_object) - delete m_object; - // Load mesh and make an object of it - m_object = new ObjectHelper(meshFile); - m_object->load(); + ObjectHelper::resetObjectHelper(m_renderer, m_object, meshFile); } QT_END_NAMESPACE_DATAVISUALIZATION diff --git a/src/datavisualization/data/customrenderitem_p.h b/src/datavisualization/data/customrenderitem_p.h index f05540d0..17195f7b 100644 --- a/src/datavisualization/data/customrenderitem_p.h +++ b/src/datavisualization/data/customrenderitem_p.h @@ -35,12 +35,12 @@ QT_BEGIN_NAMESPACE_DATAVISUALIZATION class QCustom3DItem; +class Abstract3DRenderer; class CustomRenderItem : public AbstractRenderItem { public: CustomRenderItem(); - CustomRenderItem(const CustomRenderItem &other); virtual ~CustomRenderItem(); inline void setTexture(GLuint texture) { m_texture = texture; } @@ -65,19 +65,24 @@ public: inline int index() const { return m_index; } inline void setShadowCasting(bool shadowCasting) { m_shadowCasting = shadowCasting; } inline bool isShadowCasting() const { return m_shadowCasting; } + inline void setRenderer(Abstract3DRenderer *renderer) { m_renderer = renderer; } private: + Q_DISABLE_COPY(CustomRenderItem) + GLuint m_texture; QVector3D m_scaling; QVector3D m_position; bool m_absolute; - ObjectHelper *m_object; + ObjectHelper *m_object; // shared reference bool m_needBlend; bool m_visible; bool m_valid; int m_index; bool m_shadowCasting; QCustom3DItem *m_item; + Abstract3DRenderer *m_renderer; + }; typedef QHash<QCustom3DItem *, CustomRenderItem *> CustomRenderItemArray; |