meta-wayland: intersect the damage region with the window size before applying

According to the wayland documentation, damage outside the
window size is ignored.
This happened with xwayland+wlshm (causing a GL error when calling
TexSubImage2D), probably due to not resizing the buffer
until we receive the corresponding X event.
Might also be an off-by-one in xwayland, as the window size did
not actually change.

Note: we might want to take the configure_notify path instead,
and keep the GL/clutter size consistent with wayland rather than
X, because in the end that's what matters for events and composition.
This commit is contained in:
Giovanni Campagna 2013-07-29 14:09:26 +02:00
parent cee22daf55
commit 9bdcc9c418

View File

@ -210,6 +210,16 @@ surface_process_damage (MetaWaylandSurface *surface,
{ {
MetaWindowActor *window_actor = MetaWindowActor *window_actor =
META_WINDOW_ACTOR (meta_window_get_compositor_private (surface->window)); META_WINDOW_ACTOR (meta_window_get_compositor_private (surface->window));
MetaRectangle rect;
cairo_rectangle_int_t cairo_rect;
meta_window_get_input_rect (surface->window, &rect);
cairo_rect.x = rect.x;
cairo_rect.y = rect.y;
cairo_rect.width = rect.width;
cairo_rect.height = rect.height;
cairo_region_intersect_rectangle (region, &cairo_rect);
if (window_actor) if (window_actor)
{ {