diff options
author | weigao <weigao@multicorewareinc.com> | 2014-08-01 14:39:57 +0800 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@collabora.co.uk> | 2014-08-06 20:45:11 +0200 |
commit | f9d2de854b737f98d4d74a2885965c7df2d52da8 (patch) | |
tree | e606972ea9579a8d103c914128c002ece9b7d39f /chart2 | |
parent | b757ac0b20ed2c6d34c0fee9ba638887fd8e7743 (diff) |
texture should be released in render thread
Change-Id: I4ae03163a2bf9aff831e6fd3a8c1c91fa3eba675
Diffstat (limited to 'chart2')
-rw-r--r-- | chart2/source/view/charttypes/GL3DBarChart.cxx | 1 | ||||
-rw-r--r-- | chart2/source/view/inc/GL3DRenderer.hxx | 2 | ||||
-rw-r--r-- | chart2/source/view/main/GL3DRenderer.cxx | 13 |
3 files changed, 12 insertions, 4 deletions
diff --git a/chart2/source/view/charttypes/GL3DBarChart.cxx b/chart2/source/view/charttypes/GL3DBarChart.cxx index 8a10e7029981..2924eeb88ade 100644 --- a/chart2/source/view/charttypes/GL3DBarChart.cxx +++ b/chart2/source/view/charttypes/GL3DBarChart.cxx @@ -99,6 +99,7 @@ void RenderThread::renderFrame() mpChart->mpRenderer->SetSize(aSize); if(mpChart->mbNeedsNewRender) { + mpChart->mpRenderer->ReleaseTextTexture(); for(boost::ptr_vector<opengl3D::Renderable3DObject>::iterator itr = mpChart->maShapes.begin(), itrEnd = mpChart->maShapes.end(); itr != itrEnd; ++itr) { diff --git a/chart2/source/view/inc/GL3DRenderer.hxx b/chart2/source/view/inc/GL3DRenderer.hxx index ffad3e067c8d..3e731a3b8eae 100644 --- a/chart2/source/view/inc/GL3DRenderer.hxx +++ b/chart2/source/view/inc/GL3DRenderer.hxx @@ -203,6 +203,7 @@ public: void ReleaseShapes(); void ReleaseScreenTextShapes(); + void ReleaseTextTexture(); private: void MoveModelf( const PosVecf3& trans, const PosVecf3& angle, const PosVecf3& scale); @@ -435,6 +436,7 @@ private: glm::vec4 m_LightColor[MAX_LIGHT_NUM]; glm::vec4 m_PositionWorldspace[MAX_LIGHT_NUM]; float m_fLightPower[MAX_LIGHT_NUM]; + std::vector<GLuint> m_Texturelist; }; } diff --git a/chart2/source/view/main/GL3DRenderer.cxx b/chart2/source/view/main/GL3DRenderer.cxx index f1769c1ac36b..1243853bf693 100644 --- a/chart2/source/view/main/GL3DRenderer.cxx +++ b/chart2/source/view/main/GL3DRenderer.cxx @@ -1707,6 +1707,7 @@ void OpenGL3DRenderer::CreateTextTextureSingle(const boost::shared_array<sal_uIn glBindTexture(GL_TEXTURE_2D, 0); CHECK_GL_ERROR(); m_TextInfoList.push_back(aTextInfo); + m_Texturelist.push_back(aTextInfo.texture); } @@ -1796,12 +1797,16 @@ void OpenGL3DRenderer::CreateTextTexture(const boost::shared_array<sal_uInt8> &b void OpenGL3DRenderer::ReleaseTextShapes() { - for (size_t i = 0; i < m_TextInfoList.size(); i++) + m_TextInfoList.clear(); +} + +void OpenGL3DRenderer::ReleaseTextTexture() +{ + for (size_t i = 0; i < m_Texturelist.size(); i++) { - TextInfo &textInfo = m_TextInfoList[i]; - glDeleteTextures(1, &textInfo.texture); + glDeleteTextures(1, &m_Texturelist[i]); } - m_TextInfoList.clear(); + m_Texturelist.clear(); } void OpenGL3DRenderer::ReleaseScreenTextShapes() |