mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-30 13:41:48 +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
|
void
|
||||||
GstQSGTexture::bind ()
|
GstQSGTexture::bind ()
|
||||||
{
|
{
|
||||||
|
const GstGLFuncs *gl;
|
||||||
GstGLContext *context;
|
GstGLContext *context;
|
||||||
GstGLSyncMeta *sync_meta;
|
GstGLSyncMeta *sync_meta;
|
||||||
GstMemory *mem;
|
GstMemory *mem;
|
||||||
|
@ -95,6 +96,9 @@ GstQSGTexture::bind ()
|
||||||
if (!this->mem_)
|
if (!this->mem_)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
g_assert (this->qt_context_);
|
||||||
|
gl = this->qt_context_->gl_vtable;
|
||||||
|
|
||||||
/* FIXME: should really lock the memory to prevent write access */
|
/* FIXME: should really lock the memory to prevent write access */
|
||||||
if (!gst_video_frame_map (&this->v_frame, &this->v_info, this->buffer_,
|
if (!gst_video_frame_map (&this->v_frame, &this->v_info, this->buffer_,
|
||||||
(GstMapFlags) (GST_MAP_READ | GST_MAP_GL))) {
|
(GstMapFlags) (GST_MAP_READ | GST_MAP_GL))) {
|
||||||
|
@ -113,13 +117,12 @@ GstQSGTexture::bind ()
|
||||||
|
|
||||||
gst_gl_sync_meta_set_sync_point (sync_meta, context);
|
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_);
|
gst_gl_sync_meta_wait (sync_meta, this->qt_context_);
|
||||||
|
|
||||||
tex_id = *(guint *) this->v_frame.data[0];
|
tex_id = *(guint *) this->v_frame.data[0];
|
||||||
GST_LOG ("%p binding Qt texture %u", this, tex_id);
|
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);
|
gst_video_frame_unmap (&this->v_frame);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue