mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-29 19:50:40 +00:00
sys/glsink/glimagesink.c: Sprinkle in some XSync calls to avoid raciness with broken drivers (ATI) when re-using a si...
Original commit message from CVS: * sys/glsink/glimagesink.c: (gst_glimage_sink_stop), (gst_glimage_sink_create_window), (gst_glimage_sink_init_display): Sprinkle in some XSync calls to avoid raciness with broken drivers (ATI) when re-using a single glimagesink.
This commit is contained in:
parent
ceba19f691
commit
1b26c3f023
2 changed files with 19 additions and 0 deletions
|
@ -1,3 +1,10 @@
|
|||
2007-06-06 Jan Schmidt <thaytan@mad.scientist.com>
|
||||
|
||||
* sys/glsink/glimagesink.c: (gst_glimage_sink_stop),
|
||||
(gst_glimage_sink_create_window), (gst_glimage_sink_init_display):
|
||||
Sprinkle in some XSync calls to avoid raciness with broken
|
||||
drivers (ATI) when re-using a single glimagesink.
|
||||
|
||||
2007-06-06 Jan Schmidt <thaytan@mad.scientist.com>
|
||||
|
||||
* gst/mpegvideoparse/mpegpacketiser.c:
|
||||
|
|
|
@ -355,8 +355,16 @@ gst_glimage_sink_stop (GstBaseSink * bsink)
|
|||
glimage_sink = GST_GLIMAGE_SINK (bsink);
|
||||
|
||||
if (glimage_sink->display) {
|
||||
if (glimage_sink->context) {
|
||||
glXDestroyContext (glimage_sink->display, glimage_sink->context);
|
||||
glimage_sink->context = NULL;
|
||||
}
|
||||
XSync (glimage_sink->display, False);
|
||||
XCloseDisplay (glimage_sink->display);
|
||||
glimage_sink->display = NULL;
|
||||
}
|
||||
glimage_sink->context = NULL;
|
||||
glimage_sink->window = 0;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -696,6 +704,8 @@ gst_glimage_sink_create_window (GstGLImageSink * glimage_sink)
|
|||
XMapWindow (glimage_sink->display, glimage_sink->window);
|
||||
}
|
||||
|
||||
XSync (glimage_sink->display, False);
|
||||
|
||||
gst_x_overlay_got_xwindow_id (GST_X_OVERLAY (glimage_sink),
|
||||
glimage_sink->window);
|
||||
|
||||
|
@ -769,6 +779,8 @@ gst_glimage_sink_init_display (GstGLImageSink * glimage_sink)
|
|||
window = XCreateWindow (glimage_sink->display, root, 0, 0,
|
||||
100, 100, 0, visinfo->depth, InputOutput, visinfo->visual, mask, &attr);
|
||||
|
||||
XSync (glimage_sink->display, FALSE);
|
||||
|
||||
glXMakeCurrent (glimage_sink->display, window, glimage_sink->context);
|
||||
|
||||
glGetIntegerv (GL_MAX_TEXTURE_SIZE, &glimage_sink->max_texture_size);
|
||||
|
|
Loading…
Reference in a new issue