unsigned int opacity;
wintype windowType;
unsigned long damage_sequence; /* sequence when damage was created */
+ Bool destroyed;
Bool need_configure;
XConfigureEvent queue_configure;
win *w;
for (w = list; w; w = w->next)
- if (w->id == id)
+ if (w->id == id && !w->destroyed)
return w;
return 0;
}
if (prev)
{
for (p = &list; *p; p = &(*p)->next)
- if ((*p)->id == prev)
+ if ((*p)->id == prev && !(*p)->destroyed)
break;
}
else
new->shadow_width = 0;
new->shadow_height = 0;
new->opacity = OPAQUE;
+ new->destroyed = False;
new->need_configure = False;
new->borderClip = None;
/* rehook */
for (prev = &list; *prev; prev = &(*prev)->next)
{
- if ((*prev)->id == new_above)
+ if ((*prev)->id == new_above && !(*prev)->destroyed)
break;
}
w->next = *prev;
win **prev, *w;
for (prev = &list; (w = *prev); prev = &w->next)
- if (w->id == id)
+ if (w->id == id && w->destroyed)
{
finish_unmap_win (dpy, w);
*prev = w->next;
{
win *w = find_win (dpy, id);
+ if (w) w->destroyed = True;
+
#if HAS_NAME_WINDOW_PIXMAP
if (w && w->pixmap && fade && winTypeFade[w->windowType])
set_fade (dpy, w, w->opacity*1.0/OPAQUE, 0.0, fade_out_step,