eglglessink: Properly clean up renderbuffers and EAGL context
authorSebastian Dröge <sebastian@centricular.com>
Tue, 24 Dec 2013 10:51:16 +0000 (11:51 +0100)
committerSebastian Dröge <sebastian@centricular.com>
Thu, 26 Dec 2013 07:58:46 +0000 (08:58 +0100)
ext/eglgles/gstegladaptation_eagl.m

index 9d7d608c46e74bd60fd5fac0bc2cac88331d554e..3177ca625ed2e2307fc9f974fd4a131fc60e5a97 100644 (file)
@@ -305,6 +305,12 @@ gst_egl_adaptation_destroy_surface (GstEglAdaptationContext * ctx)
   if (ctx->eaglctx->framebuffer) {
     glDeleteFramebuffers (1, &ctx->eaglctx->framebuffer);
     ctx->eaglctx->framebuffer = 0;
+
+    glDeleteRenderbuffers(1, &ctx->eaglctx->depth_renderbuffer);
+    ctx->eaglctx->depth_renderbuffer = 0;
+    glDeleteRenderbuffers(1, &ctx->eaglctx->color_renderbuffer);
+    ctx->eaglctx->color_renderbuffer = 0;
+
     ctx->have_surface = FALSE;
   }
 }
@@ -330,8 +336,7 @@ void
 gst_egl_adaptation_destroy_context (GstEglAdaptationContext * ctx)
 {
   if (ctx->eaglctx->eagl_context) {
-    /* Do not release/dealloc as it seems that EAGL expects to do all
-     * the cleanup by itself when a new context replaces the old one */
+    [ctx->eaglctx->eagl_context release];
     ctx->eaglctx->eagl_context = NULL;
   }
 }