diff options
author | Laszlo Agocs <laszlo.p.agocs@nokia.com> | 2012-02-14 19:30:43 +0100 |
---|---|---|
committer | Jørgen Lind <jorgen.lind@nokia.com> | 2012-02-15 20:36:09 +0100 |
commit | af808243e01b13f12c27527198968b0a83423fb6 (patch) | |
tree | 993cb1b0e24558a7b7c0ff9bdd12fb60ce63abbd | |
parent | ae6bd13bc0190339d65582bbd3bf82ed1f9985ee (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.cpp | 6 | ||||
-rw-r--r-- | examples/qwindow-compositor/qwindowcompositor.cpp | 6 | ||||
-rw-r--r-- | examples/qwindow-compositor/qwindowcompositor.h | 2 | ||||
-rw-r--r-- | examples/qwindow-compositor/textureblitter.cpp | 6 | ||||
-rw-r--r-- | examples/qwindow-compositor/textureblitter.h | 1 |
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, |