summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.p.agocs@nokia.com>2012-02-14 19:30:43 +0100
committerJørgen Lind <jorgen.lind@nokia.com>2012-02-15 20:36:09 +0100
commitaf808243e01b13f12c27527198968b0a83423fb6 (patch)
tree993cb1b0e24558a7b7c0ff9bdd12fb60ce63abbd
parentae6bd13bc0190339d65582bbd3bf82ed1f9985ee (diff)
Fix qwindow-compositor memory leaks
Change-Id: I85aa62c9deae308612ed2b13468e7f1e48f82acf Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
-rw-r--r--examples/qwindow-compositor/main.cpp6
-rw-r--r--examples/qwindow-compositor/qwindowcompositor.cpp6
-rw-r--r--examples/qwindow-compositor/qwindowcompositor.h2
-rw-r--r--examples/qwindow-compositor/textureblitter.cpp6
-rw-r--r--examples/qwindow-compositor/textureblitter.h1
5 files changed, 17 insertions, 4 deletions
diff --git a/examples/qwindow-compositor/main.cpp b/examples/qwindow-compositor/main.cpp
index 80ebeaac4..fef65d4b8 100644
--- a/examples/qwindow-compositor/main.cpp
+++ b/examples/qwindow-compositor/main.cpp
@@ -64,10 +64,10 @@ int main(int argc, char *argv[])
geom = QRect(screenGeometry.width() / 4, screenGeometry.height() / 4,
screenGeometry.width() / 2, screenGeometry.height() / 2);
- QOpenGLWindow *window = new QOpenGLWindow(format, geom);
- window->show();
+ QOpenGLWindow window(format, geom);
+ window.show();
- QWindowCompositor compositor(window);
+ QWindowCompositor compositor(&window);
return app.exec();
}
diff --git a/examples/qwindow-compositor/qwindowcompositor.cpp b/examples/qwindow-compositor/qwindowcompositor.cpp
index a7132101e..572e61f41 100644
--- a/examples/qwindow-compositor/qwindowcompositor.cpp
+++ b/examples/qwindow-compositor/qwindowcompositor.cpp
@@ -82,6 +82,12 @@ QWindowCompositor::QWindowCompositor(QOpenGLWindow *window)
m_renderScheduler.start(0);
}
+QWindowCompositor::~QWindowCompositor()
+{
+ delete m_textureBlitter;
+ delete m_textureCache;
+}
+
void QWindowCompositor::surfaceDestroyed(QObject *object)
{
WaylandSurface *surface = static_cast<WaylandSurface *>(object);
diff --git a/examples/qwindow-compositor/qwindowcompositor.h b/examples/qwindow-compositor/qwindowcompositor.h
index 18f719286..4a2f10073 100644
--- a/examples/qwindow-compositor/qwindowcompositor.h
+++ b/examples/qwindow-compositor/qwindowcompositor.h
@@ -54,6 +54,8 @@ class QWindowCompositor : public QObject, public WaylandCompositor
Q_OBJECT
public:
QWindowCompositor(QOpenGLWindow *window);
+ ~QWindowCompositor();
+
private slots:
void surfaceDestroyed(QObject *object);
void surfaceMapped();
diff --git a/examples/qwindow-compositor/textureblitter.cpp b/examples/qwindow-compositor/textureblitter.cpp
index fc70f7845..117ce81cc 100644
--- a/examples/qwindow-compositor/textureblitter.cpp
+++ b/examples/qwindow-compositor/textureblitter.cpp
@@ -45,7 +45,7 @@
#include <QtGui/QOpenGLFunctions>
TextureBlitter::TextureBlitter()
- : m_shaderProgram(new QOpenGLShaderProgram())
+ : m_shaderProgram(new QOpenGLShaderProgram)
{
static const char *textureVertexProgram =
"uniform highp mat4 matrix;\n"
@@ -73,6 +73,10 @@ TextureBlitter::TextureBlitter()
m_shaderProgram->link();
}
+TextureBlitter::~TextureBlitter()
+{
+ delete m_shaderProgram;
+}
void TextureBlitter::bind()
{
diff --git a/examples/qwindow-compositor/textureblitter.h b/examples/qwindow-compositor/textureblitter.h
index 83105b07e..c4680fb8c 100644
--- a/examples/qwindow-compositor/textureblitter.h
+++ b/examples/qwindow-compositor/textureblitter.h
@@ -48,6 +48,7 @@ class TextureBlitter
{
public:
TextureBlitter();
+ ~TextureBlitter();
void bind();
void release();
void drawTexture(int textureId, const QRectF &sourceGeometry,