diff --git a/src/compton.c b/src/compton.c index d6e7cd1..61ff40b 100644 --- a/src/compton.c +++ b/src/compton.c @@ -2089,7 +2089,7 @@ paint_all(session_t *ps, XserverRegion region, XserverRegion region_real, win *t } static void -repair_win(session_t *ps, win *w) { +repair_win(session_t *ps, win *w, XDamageNotifyEvent *de) { if (IsViewable != w->a.map_state) return; @@ -2097,12 +2097,8 @@ repair_win(session_t *ps, win *w) { if (!w->ever_damaged) { parts = win_extents(ps, w); - set_ignore_next(ps); - XDamageSubtract(ps->dpy, w->damage, None, None); } else { - parts = XFixesCreateRegion(ps->dpy, 0, 0); - set_ignore_next(ps); - XDamageSubtract(ps->dpy, w->damage, None, parts); + parts = XFixesCreateRegion(ps->dpy, (XRectangle[]){de->area}, 1); XFixesTranslateRegion(ps->dpy, parts, w->a.x + w->a.border_width, w->a.y + w->a.border_width); diff --git a/src/win.c b/src/win.c index 59ebee5..54871e4 100644 --- a/src/win.c +++ b/src/win.c @@ -878,7 +878,7 @@ bool add_win(session_t *ps, Window id, Window prev) { // Create Damage for window set_ignore_next(ps); - new->damage = XDamageCreate(ps->dpy, id, XDamageReportNonEmpty); + new->damage = XDamageCreate(ps->dpy, id, XDamageReportRawRectangles); } calc_win_size(ps, new);