summaryrefslogtreecommitdiffstats
path: root/src/datavisualization
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2014-09-29 10:28:51 +0300
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2014-09-29 10:44:58 +0300
commit471bff51a0a066d92c611e680d2bc817ab94736b (patch)
tree03a599bf15c3c9130f06806743ad1808b9fe6a6f /src/datavisualization
parent5b8b37ebe42f9fb3cdc0bb269146c18ebbd56ed3 (diff)
Make various selection queries thread safe
Task-number: QTRD-3333 Change-Id: I09cb9a119a3490de008feb97cbb6f0c623238927 Reviewed-by: Mika Salmela <mika.salmela@digia.com>
Diffstat (limited to 'src/datavisualization')
-rw-r--r--src/datavisualization/engine/abstract3dcontroller.cpp23
-rw-r--r--src/datavisualization/engine/abstract3dcontroller_p.h4
2 files changed, 17 insertions, 10 deletions
diff --git a/src/datavisualization/engine/abstract3dcontroller.cpp b/src/datavisualization/engine/abstract3dcontroller.cpp
index c1d27bab..325cb5ce 100644
--- a/src/datavisualization/engine/abstract3dcontroller.cpp
+++ b/src/datavisualization/engine/abstract3dcontroller.cpp
@@ -58,7 +58,10 @@ Abstract3DController::Abstract3DController(QRect initialViewport, Q3DScene *scen
m_radialLabelOffset(1.0f),
m_measureFps(false),
m_numFrames(0),
- m_currentFps(0.0)
+ m_currentFps(0.0),
+ m_clickedType(QAbstract3DGraph::ElementNone),
+ m_selectedLabelIndex(-1),
+ m_selectedCustomItemIndex(-1)
{
if (!m_scene)
m_scene = new Q3DScene;
@@ -1471,8 +1474,11 @@ void Abstract3DController::emitNeedRender()
void Abstract3DController::handlePendingClick()
{
- QAbstract3DGraph::ElementType type = m_renderer->clickedType();
- emit elementSelected(type);
+ m_clickedType = m_renderer->clickedType();
+ m_selectedLabelIndex = m_renderer->m_selectedLabelIndex;
+ m_selectedCustomItemIndex = m_renderer->m_selectedCustomItemIndex;
+
+ emit elementSelected(m_clickedType);
}
void Abstract3DController::handlePendingGraphPositionQuery()
@@ -1483,7 +1489,7 @@ void Abstract3DController::handlePendingGraphPositionQuery()
int Abstract3DController::selectedLabelIndex() const
{
- int index = m_renderer->m_selectedLabelIndex;
+ int index = m_selectedLabelIndex;
QAbstract3DAxis *axis = selectedAxis();
if (axis && axis->labels().count() <= index)
index = -1;
@@ -1493,7 +1499,7 @@ int Abstract3DController::selectedLabelIndex() const
QAbstract3DAxis *Abstract3DController::selectedAxis() const
{
QAbstract3DAxis *axis = 0;
- QAbstract3DGraph::ElementType type = m_renderer->clickedType();
+ QAbstract3DGraph::ElementType type = m_clickedType;
switch (type) {
case QAbstract3DGraph::ElementAxisXLabel:
axis = axisX();
@@ -1514,7 +1520,7 @@ QAbstract3DAxis *Abstract3DController::selectedAxis() const
int Abstract3DController::selectedCustomItemIndex() const
{
- int index = m_renderer->m_selectedCustomItemIndex;
+ int index = m_selectedCustomItemIndex;
if (m_customItems.count() <= index)
index = -1;
return index;
@@ -1531,10 +1537,7 @@ QCustom3DItem *Abstract3DController::selectedCustomItem() const
QAbstract3DGraph::ElementType Abstract3DController::selectedElement() const
{
- if (m_renderer)
- return m_renderer->clickedType();
- else
- return QAbstract3DGraph::ElementNone;
+ return m_clickedType;
}
void Abstract3DController::setOrthoProjection(bool enable)
diff --git a/src/datavisualization/engine/abstract3dcontroller_p.h b/src/datavisualization/engine/abstract3dcontroller_p.h
index 125e9885..705de915 100644
--- a/src/datavisualization/engine/abstract3dcontroller_p.h
+++ b/src/datavisualization/engine/abstract3dcontroller_p.h
@@ -205,6 +205,10 @@ protected:
QList<QCustom3DItem *> m_customItems;
+ QAbstract3DGraph::ElementType m_clickedType;
+ int m_selectedLabelIndex;
+ int m_selectedCustomItemIndex;
+
explicit Abstract3DController(QRect initialViewport, Q3DScene *scene, QObject *parent = 0);
public: