summaryrefslogtreecommitdiff
path: root/chart2
diff options
context:
space:
mode:
authorweigao <weigao@multicorewareinc.com>2014-08-01 14:39:57 +0800
committerMarkus Mohrhard <markus.mohrhard@collabora.co.uk>2014-08-06 20:45:11 +0200
commitf9d2de854b737f98d4d74a2885965c7df2d52da8 (patch)
treee606972ea9579a8d103c914128c002ece9b7d39f /chart2
parentb757ac0b20ed2c6d34c0fee9ba638887fd8e7743 (diff)
texture should be released in render thread
Change-Id: I4ae03163a2bf9aff831e6fd3a8c1c91fa3eba675
Diffstat (limited to 'chart2')
-rw-r--r--chart2/source/view/charttypes/GL3DBarChart.cxx1
-rw-r--r--chart2/source/view/inc/GL3DRenderer.hxx2
-rw-r--r--chart2/source/view/main/GL3DRenderer.cxx13
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()