qt: use our function table instead of directly calling gl functions
authorMatthew Waters <matthew@centricular.com>
Wed, 9 Sep 2015 14:00:11 +0000 (00:00 +1000)
committerMatthew Waters <matthew@centricular.com>
Wed, 9 Sep 2015 14:33:40 +0000 (00:33 +1000)
Otherwise when building with --as-needed we would need to link to
a GL or GLES library.

https://bugzilla.gnome.org/show_bug.cgi?id=754732

ext/qt/gstqsgtexture.cc

index a9be90c..12810fa 100644 (file)
@@ -81,6 +81,7 @@ GstQSGTexture::setBuffer (GstBuffer * buffer)
 void
 GstQSGTexture::bind ()
 {
+  const GstGLFuncs *gl;
   GstGLContext *context;
   GstGLSyncMeta *sync_meta;
   GstMemory *mem;
@@ -95,6 +96,9 @@ GstQSGTexture::bind ()
   if (!this->mem_)
     return;
 
+  g_assert (this->qt_context_);
+  gl = this->qt_context_->gl_vtable;
+
   /* FIXME: should really lock the memory to prevent write access */
   if (!gst_video_frame_map (&this->v_frame, &this->v_info, this->buffer_,
         (GstMapFlags) (GST_MAP_READ | GST_MAP_GL))) {
@@ -113,13 +117,12 @@ GstQSGTexture::bind ()
 
   gst_gl_sync_meta_set_sync_point (sync_meta, context);
 
-  g_assert (this->qt_context_);
   gst_gl_sync_meta_wait (sync_meta, this->qt_context_);
 
   tex_id = *(guint *) this->v_frame.data[0];
   GST_LOG ("%p binding Qt texture %u", this, tex_id);
 
-  glBindTexture (GL_TEXTURE_2D, tex_id);
+  gl->BindTexture (GL_TEXTURE_2D, tex_id);
 
   gst_video_frame_unmap (&this->v_frame);
 }