glbufferpool: introduce check for GLMemory allocators
authorMatthew Waters <matthew@centricular.com>
Tue, 15 Nov 2016 03:36:11 +0000 (14:36 +1100)
committerMatthew Waters <matthew@centricular.com>
Tue, 15 Nov 2016 12:55:00 +0000 (23:55 +1100)
The last missing piece of EGLImage support has been pushed.

gst-libs/gst/gl/gstglbufferpool.c

index 4b3cf28..a12f750 100644 (file)
@@ -115,8 +115,13 @@ gst_gl_buffer_pool_set_config (GstBufferPool * pool, GstStructure * config)
   if (priv->allocator)
     gst_object_unref (priv->allocator);
 
-  if (allocator /* && GST_IS_GL_MEMORY_ALLOCATOR (allocator) FIXME EGLImage */ ) {
-    priv->allocator = gst_object_ref (allocator);
+  if (allocator) {
+    if (!GST_IS_GL_MEMORY_ALLOCATOR (allocator)) {
+      gst_object_unref (allocator);
+      goto wrong_allocator;
+    } else {
+      priv->allocator = gst_object_ref (allocator);
+    }
   } else {
     priv->allocator =
         GST_ALLOCATOR (gst_gl_memory_allocator_get_default (glpool->context));
@@ -241,6 +246,11 @@ wrong_caps:
         "failed getting geometry from caps %" GST_PTR_FORMAT, caps);
     return FALSE;
   }
+wrong_allocator:
+  {
+    GST_WARNING_OBJECT (pool, "Incorrect allocator type for this pool");
+    return FALSE;
+  }
 }
 
 static gboolean