Skip to content

Commit

Permalink
gdk: Fix invalidation w/ pixel cache when changing child window geome…
Browse files Browse the repository at this point in the history
…try.

When moving/scrolling a child window we can't use the current clip
region to limit what is invalidated, because there may be a pixel
cache that listens for changes outside the clip region. Instead
invalidate the entire area and rely on the invalidation code to limit
the repaint to the actually visible area.
  • Loading branch information
alexlarsson committed Nov 9, 2015
1 parent a0d9728 commit 09a181d
Showing 1 changed file with 17 additions and 7 deletions.
24 changes: 17 additions & 7 deletions gdk/gdkwindow.c
Original file line number Diff line number Diff line change
Expand Up @@ -5761,11 +5761,16 @@ gdk_window_move_resize_internal (GdkWindow *window,
if (gdk_window_is_viewable (window) &&
!window->input_only)
{
GdkRectangle r;

expose = TRUE;

old_region = cairo_region_copy (window->clip_region);
/* Adjust regions to parent window coords */
cairo_region_translate (old_region, window->x, window->y);
r.x = window->x;
r.y = window->y;
r.width = window->width;
r.height = window->height;

old_region = cairo_region_create_rectangle (&r);
}

/* Set the new position and size */
Expand Down Expand Up @@ -5801,9 +5806,14 @@ gdk_window_move_resize_internal (GdkWindow *window,

if (expose)
{
new_region = cairo_region_copy (window->clip_region);
/* Adjust region to parent window coords */
cairo_region_translate (new_region, window->x, window->y);
GdkRectangle r;

r.x = window->x;
r.y = window->y;
r.width = window->width;
r.height = window->height;

new_region = cairo_region_create_rectangle (&r);

cairo_region_union (new_region, old_region);

Expand Down Expand Up @@ -5940,7 +5950,7 @@ gdk_window_scroll (GdkWindow *window,

move_native_children (window);

gdk_window_invalidate_region_full (window, window->clip_region, TRUE);
gdk_window_invalidate_rect_full (window, NULL, TRUE);

_gdk_synthesize_crossing_events_for_geometry_change (window);
}
Expand Down

0 comments on commit 09a181d

Please sign in to comment.