mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 12:11:13 +00:00
qt: use our function table instead of directly calling gl functions
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
This commit is contained in:
parent
e99c591dc9
commit
579b734346
1 changed files with 5 additions and 2 deletions
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue