summaryrefslogtreecommitdiff
path: root/gst-libs/gst/gl/x11/gstglwindow_x11.c
diff options
context:
space:
mode:
Diffstat (limited to 'gst-libs/gst/gl/x11/gstglwindow_x11.c')
-rw-r--r--gst-libs/gst/gl/x11/gstglwindow_x11.c36
1 files changed, 15 insertions, 21 deletions
diff --git a/gst-libs/gst/gl/x11/gstglwindow_x11.c b/gst-libs/gst/gl/x11/gstglwindow_x11.c
index 705fe72e4..355513b39 100644
--- a/gst-libs/gst/gl/x11/gstglwindow_x11.c
+++ b/gst-libs/gst/gl/x11/gstglwindow_x11.c
@@ -645,6 +645,20 @@ gst_gl_window_x11_handle_event (GstGLWindowX11 * window_x11)
break;
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) {
context = gst_gl_window_get_context (window);
context_class = GST_GL_CONTEXT_GET_CLASS (context);
@@ -657,28 +671,8 @@ gst_gl_window_x11_handle_event (GstGLWindowX11 * window_x11)
break;
case VisibilityNotify:
- {
- switch (event.xvisibility.state) {
- case VisibilityUnobscured:
- if (window->draw)
- window->draw (window->draw_data);
- 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;
- }
+ /* actually nothing to do here */
break;
- }
default:
GST_DEBUG ("unknown XEvent type: %u", event.type);