[Bug 723529] glimagesink: only draws on buffer push

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Tue Feb 4 14:04:49 PST 2014


https://bugzilla.gnome.org/show_bug.cgi?id=723529
  GStreamer | gst-plugins-gl | git

--- Comment #5 from Matthew Waters <ystreet00 at gmail.com> 2014-02-04 22:04:46 UTC ---
(In reply to comment #4)
> You don't get expose events in the application, presumably because
> gst_gl_window_x11_handle_event() has handled the event for the internally
> created gl window and this window is completely covering the parent window -
> the one set with gst_video_overlay_set_window_handle().

The completely covered state fits my oservations as well.

> I suppose glimagesink could synthesize an expose event for the parent window
> whenever it doesn't handle an expose on the internal window, but this strikes
> me as a weird hack. Mind you - it also seems a bit weird that glimagesink
> implements gst_video_overlay_expose() by sending itself an expose event... They
> are normally only sent by the X server.

The whole parenting scenario is a little weird and ultimately, should not be
necessary.

> Resizes are not such a problem as both the internal and parent windows get the
> ConfigureNotify event. However, if you call gst_video_overlay_expose() from the
> application, then the resulting redraw happens at the previous window size, so
> the display tends to always be one resize behind where it should be.

Well, the following are my observations.
1. This all works perfectly fine for 'raw' X.
2. Using gtk+ I experienced this issue.  I tried XGetWindowAttributes on both
the parent win or our internal win, sending an extra expose to the parent win,
removing the parenting logic and hooking up both display connections to the
GMainLoop.  All resulting in stale data which leads me to believe that
something is different on the gtk+ side of things.

> ximagesink handles exposes by default, but you can turn it off with the
> handle-expose property.
> 
> ximagesink doesn't seem to handle configure events until the next buffer push.

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list