glupload: keep the parent buffer around when converting EGLImage to 2D textures
authorMatthew Waters <matthew@centricular.com>
Wed, 6 Apr 2016 04:15:40 +0000 (04:15 +0000)
committerTim-Philipp Müller <tim@centricular.com>
Sat, 9 Dec 2017 19:32:19 +0000 (19:32 +0000)
e.g. receiving and releasing a buffer from OMX too early will potentially
cause textures to be overwritten while/before they are displayed.

gst-libs/gst/gl/gstglupload.c

index 32e6150fad53b6861dd99c34480f410fb6f6b0aa..0f11e0415bbdf1b52e53a7c0fa6d73a476ff31d0 100644 (file)
@@ -583,6 +583,8 @@ _egl_image_upload_perform_gl_thread (GstGLContext * context,
 
   /* FIXME: buffer pool */
   *image->outbuf = gst_buffer_new ();
+  gst_buffer_add_parent_buffer_meta (*image->outbuf, image->buffer);
+
   gst_gl_memory_setup_buffer (allocator, *image->outbuf, image->params);
   gst_object_unref (allocator);
 
@@ -600,10 +602,6 @@ _egl_image_upload_perform_gl_thread (GstGLContext * context,
     gl->EGLImageTargetTexture2D (GL_TEXTURE_2D,
         gst_egl_image_memory_get_image (mem));
   }
-
-  if (GST_IS_GL_BUFFER_POOL (image->buffer->pool))
-    gst_gl_buffer_pool_replace_last_buffer (GST_GL_BUFFER_POOL (image->
-            buffer->pool), image->buffer);
 }
 
 static GstGLUploadReturn