diff options
author | Mika Salmela <mika.salmela@digia.com> | 2014-06-06 10:19:38 +0300 |
---|---|---|
committer | Tomi Korpipää <tomi.korpipaa@digia.com> | 2014-06-06 10:23:27 +0300 |
commit | e8e5286ff5c5e5ba822e798dc0c1f8270817a562 (patch) | |
tree | e92e222e7df5e5ce773756ff1d037088c5a61325 /src/datavisualization/utils/scatterpointbufferhelper.cpp | |
parent | 69d19ccc2925e8889e5ba77c416a227970d169cf (diff) |
Fix for static optimization crash on android
Added checks if visible items really exists and if buffers are empty.
Change-Id: Id29f87924e098c6f8b7b57bc74543ce37787995f
Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'src/datavisualization/utils/scatterpointbufferhelper.cpp')
-rw-r--r-- | src/datavisualization/utils/scatterpointbufferhelper.cpp | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/src/datavisualization/utils/scatterpointbufferhelper.cpp b/src/datavisualization/utils/scatterpointbufferhelper.cpp index cf3bc0fc..b14d84ad 100644 --- a/src/datavisualization/utils/scatterpointbufferhelper.cpp +++ b/src/datavisualization/utils/scatterpointbufferhelper.cpp @@ -81,6 +81,7 @@ void ScatterPointBufferHelper::load(ScatterSeriesRenderCache *cache) ScatterRenderItemArray &renderArray = cache->renderArray(); const int renderArraySize = renderArray.size(); + m_indexCount = 0; if (m_meshDataLoaded) { // Delete old data @@ -88,25 +89,31 @@ void ScatterPointBufferHelper::load(ScatterSeriesRenderCache *cache) m_bufferedPoints.clear(); } + bool itemsVisible = false; m_bufferedPoints.resize(renderArraySize); for (int i = 0; i < renderArraySize; i++) { ScatterRenderItem &item = renderArray[i]; - if (!item.isVisible()) + if (!item.isVisible()) { m_bufferedPoints[i] = hiddenPos; - else + } else { + itemsVisible = true; m_bufferedPoints[i] = item.translation(); + } } - m_indexCount = renderArraySize; + if (itemsVisible) + m_indexCount = renderArraySize; - glGenBuffers(1, &m_pointbuffer); - glBindBuffer(GL_ARRAY_BUFFER, m_pointbuffer); - glBufferData(GL_ARRAY_BUFFER, m_bufferedPoints.size() * sizeof(QVector3D), - &m_bufferedPoints.at(0), - GL_DYNAMIC_DRAW); - glBindBuffer(GL_ARRAY_BUFFER, 0); + if (m_indexCount > 0) { + glGenBuffers(1, &m_pointbuffer); + glBindBuffer(GL_ARRAY_BUFFER, m_pointbuffer); + glBufferData(GL_ARRAY_BUFFER, m_bufferedPoints.size() * sizeof(QVector3D), + &m_bufferedPoints.at(0), + GL_DYNAMIC_DRAW); + glBindBuffer(GL_ARRAY_BUFFER, 0); - m_meshDataLoaded = true; + m_meshDataLoaded = true; + } } QT_END_NAMESPACE_DATAVISUALIZATION |