From: Sebastian Dröge Date: Mon, 24 Sep 2012 10:36:12 +0000 (+0200) Subject: eglglessink: Also unref current caps after usage X-Git-Tag: 1.19.3~507^2~14620 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=aa463f0274aefde28a068fcdb5601536ac808cc4;p=platform%2Fupstream%2Fgstreamer.git eglglessink: Also unref current caps after usage --- diff --git a/ext/eglgles/gsteglglessink.c b/ext/eglgles/gsteglglessink.c index 135e159..8cc90d5 100644 --- a/ext/eglgles/gsteglglessink.c +++ b/ext/eglgles/gsteglglessink.c @@ -1084,6 +1084,11 @@ gst_eglglessink_stop (GstBaseSink * sink) eglglessink->have_window = FALSE; } + if (eglglessink->current_caps) { + gst_caps_unref (eglglessink->current_caps); + eglglessink->current_caps = NULL; + } + return TRUE; } @@ -2112,35 +2117,40 @@ gst_eglglessink_setcaps (GstBaseSink * bsink, GstCaps * caps) if (gst_caps_can_intersect (caps, eglglessink->current_caps)) { GST_INFO_OBJECT (eglglessink, "Caps are compatible anyway"); goto SUCCEED; - } else { - GST_DEBUG_OBJECT (eglglessink, "Caps are not compatible, reconfiguring"); - if (eglglessink->rendering_path == GST_EGLGLESSINK_RENDER_SLOW) { - glDeleteBuffers (1, &eglglessink->vdata); - glDeleteBuffers (1, &eglglessink->tdata); - glDeleteBuffers (1, &eglglessink->idata); - eglglessink->have_vbo = FALSE; - - glDeleteShader (eglglessink->fragshader); - glDeleteShader (eglglessink->vertshader); - - glDeleteTextures (eglglessink->n_textures, eglglessink->texture); - eglglessink->have_texture = FALSE; - eglglessink->n_textures = 0; - - glDeleteProgram (eglglessink->program); - } + } - if (eglglessink->surface) { - eglDestroySurface (eglglessink->display, eglglessink->surface); - eglglessink->surface = NULL; - eglglessink->have_surface = FALSE; - } + GST_DEBUG_OBJECT (eglglessink, "Caps are not compatible, reconfiguring"); + if (eglglessink->rendering_path == GST_EGLGLESSINK_RENDER_SLOW) { + glDeleteBuffers (1, &eglglessink->vdata); + glDeleteBuffers (1, &eglglessink->tdata); + glDeleteBuffers (1, &eglglessink->idata); + eglglessink->have_vbo = FALSE; - if (eglglessink->context) { - eglDestroyContext (eglglessink->display, eglglessink->context); - eglglessink->context = NULL; - } + glDeleteShader (eglglessink->fragshader); + glDeleteShader (eglglessink->vertshader); + + glDeleteTextures (eglglessink->n_textures, eglglessink->texture); + eglglessink->have_texture = FALSE; + eglglessink->n_textures = 0; + + glDeleteProgram (eglglessink->program); + } + + if (eglglessink->surface) { + eglDestroySurface (eglglessink->display, eglglessink->surface); + eglglessink->surface = NULL; + eglglessink->have_surface = FALSE; + } + + if (eglglessink->context) { + eglDestroyContext (eglglessink->display, eglglessink->context); + eglglessink->context = NULL; } + + g_mutex_lock (eglglessink->flow_lock); + gst_caps_unref (eglglessink->current_caps); + eglglessink->current_caps = NULL; + g_mutex_unlock (eglglessink->flow_lock); } if (!gst_eglglessink_choose_config (eglglessink)) { diff --git a/ext/eglgles/gsteglglessink.h b/ext/eglgles/gsteglglessink.h index ac99980..5e20f4a 100644 --- a/ext/eglgles/gsteglglessink.h +++ b/ext/eglgles/gsteglglessink.h @@ -125,7 +125,6 @@ struct _GstEglGlesSink GstVideoSink videosink; GstVideoFormat format; GstCaps *current_caps; - GstPad *sink; GstVideoRectangle display_region; GList *supported_fmts;