diff --git a/kwin/kompmgr/kompmgr.c b/kwin/kompmgr/kompmgr.c index 64ddce408..3bb0a856a 100644 --- a/kwin/kompmgr/kompmgr.c +++ b/kwin/kompmgr/kompmgr.c @@ -117,6 +117,7 @@ typedef struct _win { Pixmap pixmap; #endif XWindowAttributes a; + XWindowAttributes a_prev; #if CAN_DO_USABLE Bool usable; /* mapped and all damaged at one point */ XRectangle damage_bounds; /* bounds of damage */ @@ -1773,16 +1774,19 @@ map_win (Display *dpy, Window id, unsigned long sequence, Bool fade) w->damaged = 0; #if WORK_AROUND_FGLRX - XserverRegion extents = win_extents (dpy, w); - XDamageNotifyEvent de; - de.drawable = w->id; - de.area.x = 0; - de.area.y = 0; - de.area.width = w->a.width + w->a.border_width * 2; - de.area.height = w->a.height + w->a.border_width * 2; - damage_win(dpy, &de); - XFixesDestroyRegion (dpy, extents); + if (w->a.x != 0) { + XserverRegion extents = win_extents (dpy, w); + XDamageNotifyEvent de; + de.drawable = w->id; + de.area.x = 0; + de.area.y = 0; + de.area.width = w->a.width + w->a.border_width * 2; + de.area.height = w->a.height + w->a.border_width * 2; + damage_win(dpy, &de); + XFixesDestroyRegion (dpy, extents); + } #endif + w->a_prev = w->a; if (fade && winTypeFade[w->windowType]) set_fade (dpy, w, 0, get_opacity_prop(dpy, w, OPAQUE)*1.0/OPAQUE, fade_in_step, 0, False, True, True, True); @@ -2228,6 +2232,7 @@ add_win (Display *dpy, Window id, Window prev) new->shape_bounds_prev = new->shape_bounds; new->shape_bounds.width = new->a.width; new->shape_bounds.height = new->a.height; + new->a_prev = new->a; new->damaged = 0; #if CAN_DO_USABLE new->usable = False;