[832/906] x11: ignore Expose events not initiated by gst_gl_window_draw

This commit is contained in:
Julien Isorce 2013-11-06 21:59:27 +00:00 committed by Matthew Waters
parent c775bf584b
commit d1376390ba

View file

@ -645,6 +645,20 @@ gst_gl_window_x11_handle_event (GstGLWindowX11 * window_x11)
break; break;
case Expose: case Expose:
/* non-zero means that other Expose follows
* so just wait for the last one
* in theory we should not receive non-zero because
* we have no sub areas here but just in case */
if (event.xexpose.count != 0) {
break;
}
/* just ignore request that does not come from us
* they are un-necessary and it overloads the drawer
*/
if (!event.xexpose.send_event)
break;
if (window->draw) { if (window->draw) {
context = gst_gl_window_get_context (window); context = gst_gl_window_get_context (window);
context_class = GST_GL_CONTEXT_GET_CLASS (context); context_class = GST_GL_CONTEXT_GET_CLASS (context);
@ -657,29 +671,9 @@ gst_gl_window_x11_handle_event (GstGLWindowX11 * window_x11)
break; break;
case VisibilityNotify: case VisibilityNotify:
{ /* actually nothing to do here */
switch (event.xvisibility.state) {
case VisibilityUnobscured:
if (window->draw)
window->draw (window->draw_data);
break; break;
case VisibilityPartiallyObscured:
if (window->draw)
window->draw (window->draw_data);
break;
case VisibilityFullyObscured:
break;
default:
GST_DEBUG ("unknown xvisibility event: %d",
event.xvisibility.state);
break;
}
break;
}
default: default:
GST_DEBUG ("unknown XEvent type: %u", event.type); GST_DEBUG ("unknown XEvent type: %u", event.type);
break; break;