From 28d15024cb9336b6dbc38f0aaa6050c3bfff807b Mon Sep 17 00:00:00 2001 From: Olivier Fourdan <fourdan.olivier@wanadoo.fr> Date: Sat, 8 Jul 2006 12:11:30 +0000 Subject: [PATCH] Compositor optimization that also fixes an issue with fullscreen unredirected windows. (Old svn revision: 22291) --- src/compositor.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/compositor.c b/src/compositor.c index db4303796..783b87ed7 100644 --- a/src/compositor.c +++ b/src/compositor.c @@ -1584,14 +1584,25 @@ damage_screen (ScreenInfo *screen_info) } static void -damage_win (CWindow *cw) +damage_extents (CWindow *cw) { XserverRegion extents; + ScreenInfo *screen_info; + DisplayInfo *display_info; g_return_if_fail (cw != NULL); - TRACE ("entering damage_win"); + TRACE ("entering damage_extents"); + + if (cw->borderSize == None) + { + cw->borderSize = border_size (cw); + } + + screen_info = cw->screen_info; + display_info = screen_info->display_info; extents = win_extents (cw); + XFixesSubtractRegion (display_info->dpy, extents, extents, cw->borderSize); fix_region (cw, extents); add_damage (cw->screen_info, extents); } @@ -1747,9 +1758,13 @@ unmap_win (CWindow *cw) TRACE ("Unmapped window 0x%lx, overlays decreased to %i\n", cw->id, screen_info->overlays); } + if (WIN_IS_VISIBLE(cw)) + { + damage_extents (cw); + } + cw->viewable = FALSE; cw->damaged = FALSE; - damage_win (cw); free_win_data (cw, FALSE); } -- GitLab