summaryrefslogtreecommitdiff
path: root/src/render
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2014-03-17 18:18:28 +0300
committerAndrei Karas <akaras@inbox.ru>2014-03-17 18:18:28 +0300
commit4364a3fcae6b7994f3ee92811ce8d000dcb785ce (patch)
tree6b7012061d7dd4f36b8ae020de1a85586c91d611 /src/render
parentfa69d82536fbe9b9b7763ae8a106f59757bec116 (diff)
downloadmanaplus-4364a3fcae6b7994f3ee92811ce8d000dcb785ce.tar.gz
manaplus-4364a3fcae6b7994f3ee92811ce8d000dcb785ce.tar.bz2
manaplus-4364a3fcae6b7994f3ee92811ce8d000dcb785ce.tar.xz
manaplus-4364a3fcae6b7994f3ee92811ce8d000dcb785ce.zip
Fix memory leak on window resize.
Diffstat (limited to 'src/render')
-rw-r--r--src/render/mobileopenglgraphics.cpp12
-rw-r--r--src/render/normalopenglgraphics.cpp18
-rw-r--r--src/render/nullopenglgraphics.cpp9
3 files changed, 26 insertions, 13 deletions
diff --git a/src/render/mobileopenglgraphics.cpp b/src/render/mobileopenglgraphics.cpp
index 86707fac8..c815d096d 100644
--- a/src/render/mobileopenglgraphics.cpp
+++ b/src/render/mobileopenglgraphics.cpp
@@ -113,10 +113,14 @@ void MobileOpenGLGraphics::initArrays()
// need alocate small size, after if limit reached reallocate to double size
const int sz = mMaxVertices * 4 + 30;
vertexBufSize = mMaxVertices;
- mFloatTexArray = new GLfloat[sz];
- mShortVertArray = new GLshort[sz];
- mFloatTexArrayCached = new GLfloat[sz];
- mShortVertArrayCached = new GLshort[sz];
+ if (!mFloatTexArray)
+ mFloatTexArray = new GLfloat[sz];
+ if (!mShortVertArray)
+ mShortVertArray = new GLshort[sz];
+ if (!mFloatTexArrayCached)
+ mFloatTexArrayCached = new GLfloat[sz];
+ if (!mShortVertArrayCached)
+ mShortVertArrayCached = new GLshort[sz];
}
bool MobileOpenGLGraphics::setVideoMode(const int w, const int h,
diff --git a/src/render/normalopenglgraphics.cpp b/src/render/normalopenglgraphics.cpp
index 6bc25be32..ebac68e1b 100644
--- a/src/render/normalopenglgraphics.cpp
+++ b/src/render/normalopenglgraphics.cpp
@@ -131,12 +131,18 @@ void NormalOpenGLGraphics::initArrays()
// need alocate small size, after if limit reached reallocate to double size
vertexBufSize = mMaxVertices;
const int sz = mMaxVertices * 4 + 30;
- mFloatTexArray = new GLfloat[sz];
- mIntTexArray = new GLint[sz];
- mIntVertArray = new GLint[sz];
- mFloatTexArrayCached = new GLfloat[sz];
- mIntTexArrayCached = new GLint[sz];
- mIntVertArrayCached = new GLint[sz];
+ if (!mFloatTexArray)
+ mFloatTexArray = new GLfloat[sz];
+ if (!mIntTexArray)
+ mIntTexArray = new GLint[sz];
+ if (!mIntVertArray)
+ mIntVertArray = new GLint[sz];
+ if (!mFloatTexArrayCached)
+ mFloatTexArrayCached = new GLfloat[sz];
+ if (!mIntTexArrayCached)
+ mIntTexArrayCached = new GLint[sz];
+ if (!mIntVertArrayCached)
+ mIntVertArrayCached = new GLint[sz];
}
bool NormalOpenGLGraphics::setVideoMode(const int w, const int h,
diff --git a/src/render/nullopenglgraphics.cpp b/src/render/nullopenglgraphics.cpp
index d09d7b13b..8782c9573 100644
--- a/src/render/nullopenglgraphics.cpp
+++ b/src/render/nullopenglgraphics.cpp
@@ -77,9 +77,12 @@ void NullOpenGLGraphics::initArrays()
// need alocate small size, after if limit reached reallocate to double size
vertexBufSize = mMaxVertices;
const int sz = mMaxVertices * 4 + 30;
- mFloatTexArray = new GLfloat[sz];
- mIntTexArray = new GLint[sz];
- mIntVertArray = new GLint[sz];
+ if (!mFloatTexArray)
+ mFloatTexArray = new GLfloat[sz];
+ if (!mIntTexArray)
+ mIntTexArray = new GLint[sz];
+ if (!mIntVertArray)
+ mIntVertArray = new GLint[sz];
}
bool NullOpenGLGraphics::setVideoMode(const int w, const int h,