From 50f47e4edf583fc35e3db77209d6d91dc3a5a761 Mon Sep 17 00:00:00 2001 From: Erkin Bahceci <erkinbah@gmail.com> Date: Wed, 24 Sep 2008 18:49:44 -0500 Subject: [PATCH] [PATCH] Don't damage window region on minimize/shade ending. Slightly improves performance by not damaging the full window region at the end of minimize and shade animations. --- plugins/minimize.c | 15 +++++++++++++++ 1 files changed, 15 insertions(+), 0 deletions(-) diff --git a/plugins/minimize.c b/plugins/minimize.c index 1f8a614..a517fb0 100644 --- a/plugins/minimize.c +++ b/plugins/minimize.c @@ -76,6 +76,8 @@ typedef struct _MinWindow { Region region; int unmapCnt; + + Bool ignoreDamage; } MinWindow; #define GET_MIN_DISPLAY(d) \ @@ -330,11 +332,13 @@ minPreparePaintScreen (CompScreen *s, { mw->state = mw->newState; + mw->ignoreDamage = TRUE; while (mw->unmapCnt) { unmapWindow (w); mw->unmapCnt--; } + mw->ignoreDamage = FALSE; } } else if (mw->region && w->damaged) @@ -353,11 +357,13 @@ minPreparePaintScreen (CompScreen *s, { mw->shade = 0; + mw->ignoreDamage = TRUE; while (mw->unmapCnt) { unmapWindow (w); mw->unmapCnt--; } + mw->ignoreDamage = FALSE; } } } @@ -555,11 +561,13 @@ minHandleEvent (CompDisplay *d, if (mw->region) w->height = 0; + mw->ignoreDamage = TRUE; while (mw->unmapCnt) { unmapWindow (w); mw->unmapCnt--; } + mw->ignoreDamage = FALSE; } break; case UnmapNotify: @@ -670,6 +678,9 @@ minDamageWindowRect (CompWindow *w, MIN_SCREEN (w->screen); MIN_WINDOW (w); + if (mw->ignoreDamage) + return TRUE; + if (initial) { if (mw->state == IconicState) @@ -890,6 +901,8 @@ minInitWindow (CompPlugin *p, mw->unmapCnt = 0; + mw->ignoreDamage = FALSE; + if (w->state & CompWindowStateHiddenMask) { if (w->shaded) @@ -923,8 +936,10 @@ minFiniWindow (CompPlugin *p, { MIN_WINDOW (w); + mw->ignoreDamage = TRUE; while (mw->unmapCnt--) unmapWindow (w); + mw->ignoreDamage = FALSE; if (mw->region) XDestroyRegion (mw->region); -- 1.6.0.2