From: Dmitry Timoshkov dmitry@baikal.ru
Signed-off-by: Dmitry Timoshkov dmitry@baikal.ru --- server/window.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/server/window.c b/server/window.c index 242e93f303a..fc16acc1822 100644 --- a/server/window.c +++ b/server/window.c @@ -1530,7 +1530,17 @@ static void redraw_window( struct window *win, struct region *region, int frame, { if ((tmp = crop_region_to_win_rect( win, region, frame ))) { - if (!subtract_region( tmp, win->update_region, tmp )) + rectangle_t rect = win->window_rect; + + offset_rect( &rect, -rect.left, -rect.top ); + + /* region covers whole window: validate everything */ + if (rect_in_region( tmp, &rect )) + { + free_region( tmp ); + tmp = NULL; + } + else if (!subtract_region( tmp, win->update_region, tmp )) { free_region( tmp ); return;