[Bug 723529] glimagesink: only draws on buffer push
GStreamer (bugzilla.gnome.org)
bugzilla at gnome.org
Thu Feb 13 03:44:04 PST 2014
https://bugzilla.gnome.org/show_bug.cgi?id=723529
GStreamer | gst-plugins-gl | git
--- Comment #6 from Chris Paulson-Ellis <chris at edesix.com> 2014-02-13 11:44:01 UTC ---
(In reply to comment #5)
> 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.
I had a trace through in the debugger. When I resize the window gtk+
re-calculates the layout for the container widget hierarchy and eventually my
video window (GtkDrawingArea) gets the new allocation...
gtk_drawing_area_size_allocate() calls gdk_window_move_resize(), which results
in the expected XMoveResizeWindow() call in
_gdk_x11_window_move_resize_child().
gtk_drawing_area_size_allocate() then calls gtk_drawing_area_send_configure(),
my application "configure_event" handler calls gst_video_overlay_expose(),
which results in the XGetWindowAttributes() call in gst_gl_window_x11_draw().
It does indeed return the old size, not the one set in the proceeding
XMoveResizeWindow() call. I tried adding an XSync() call before
XGetWindowAttributes(), but it make no difference.
I don't know what one is supposed to do about this. Normal applications use
ConfigureEvent to detect window size changes, but gstglwindow can't do this
because it is not in charge of receiving events for parent_win (presumably this
is why internal_win exists at all). If you can't rely on XGetWindowAttributes()
to detect the size changes of parent_win, then the whole strategy seems to be
out of luck.
Perhaps gst needs a gst_video_overlay_configure() call added to the overlay
interface, so the application can inform the plugin of the configure events.
--
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