Clean up kompmgr slightly

pull/2/head
Timothy Pearson 11 years ago
parent f94af7a1fe
commit 1260c7da1a

@ -258,6 +258,7 @@ conv *gaussianMap;
#define TRANS_OPACITY 0.75 #define TRANS_OPACITY 0.75
#define NDEBUG 1 #define NDEBUG 1
#define DEBUG_WINDWS 0
#define DEBUG_REPAINT 0 #define DEBUG_REPAINT 0
#define DEBUG_WINDOWS 0 #define DEBUG_WINDOWS 0
#define DEBUG_EVENTS 0 #define DEBUG_EVENTS 0
@ -1054,8 +1055,9 @@ discard_ignore (Display *dpy, unsigned long sequence)
set_ignore (Display *dpy, unsigned long sequence) set_ignore (Display *dpy, unsigned long sequence)
{ {
ignore *i = malloc (sizeof (ignore)); ignore *i = malloc (sizeof (ignore));
if (!i) if (!i) {
return; return;
}
i->sequence = sequence; i->sequence = sequence;
i->next = 0; i->next = 0;
*ignore_tail = i; *ignore_tail = i;
@ -1072,11 +1074,13 @@ should_ignore (Display *dpy, unsigned long sequence)
static win * static win *
find_win (Display *dpy, Window id) find_win (Display *dpy, Window id)
{ {
win *w; win *w;
for (w = list; w; w = w->next) for (w = list; w; w = w->next) {
if ((!w->destroyed) && (w->id == id)) if ((!w->destroyed) && (w->id == id)) {
return w; return w;
}
}
return 0; return 0;
} }
@ -1363,12 +1367,20 @@ paint_all (Display *dpy, XserverRegion region)
#endif #endif
/* never painted, ignore it */ /* never painted, ignore it */
if ((!screen_damaged) && (!w->damaged)) if ((!screen_damaged) && (!w->damaged)) {
#if DEBUG_REPAINT
printf(" [not damaged: 0x%x]", w->id);
#endif
continue; continue;
}
/* skip invisible windows */ /* skip invisible windows */
if (w->a.x + w->a.width < 1 || w->a.y + w->a.height < 1 || w->a.x >= root_width || w->a.y >= root_height) if (w->a.x + w->a.width < 1 || w->a.y + w->a.height < 1 || w->a.x >= root_width || w->a.y >= root_height) {
#if DEBUG_REPAINT
printf(" [invisible: 0x%x]", w->id);
#endif
continue; continue;
}
if (!w->picture) if (!w->picture)
{ {
@ -1390,7 +1402,7 @@ paint_all (Display *dpy, XserverRegion region)
&pa); &pa);
} }
#if DEBUG_REPAINT #if DEBUG_REPAINT
printf (" 0x%x", w->id); printf (" [painting 0x%x]", w->id);
#endif #endif
if (clipChanged) if (clipChanged)
{ {
@ -1829,6 +1841,10 @@ map_win (Display *dpy, Window id, unsigned long sequence, Bool fade)
win *w = find_win (dpy, id); win *w = find_win (dpy, id);
Drawable back; Drawable back;
#if DEBUG_WINDOWS
printf("map_win: 0x%x 0x%x\n", w, id);
#endif
if (!w) { if (!w) {
return; return;
} }
@ -1879,6 +1895,9 @@ map_win (Display *dpy, Window id, unsigned long sequence, Bool fade)
static void static void
finish_unmap_win (Display *dpy, win *w) finish_unmap_win (Display *dpy, win *w)
{ {
#if DEBUG_WINDOWS
printf("finish_unmap_win: 0x%x\n", w->id);
#endif
w->damaged = 0; w->damaged = 0;
#if CAN_DO_USABLE #if CAN_DO_USABLE
w->usable = False; w->usable = False;
@ -1955,6 +1974,11 @@ static void
unmap_win (Display *dpy, Window id, Bool fade) unmap_win (Display *dpy, Window id, Bool fade)
{ {
win *w = find_win (dpy, id); win *w = find_win (dpy, id);
#if DEBUG_WINDOWS
printf("unmap_win: 0x%x 0x%x\n", w, id);
#endif
if (!w) if (!w)
return; return;
@ -2351,20 +2375,30 @@ add_win (Display *dpy, Window id, Window prev)
win **p; win **p;
unsigned int tmp; unsigned int tmp;
if (!new) #if DEBUG_WINDOWS
printf("add_win: 0x%x\n", id);
#endif
if (!new) {
return; return;
if (prev) }
{ if (prev) {
for (p = &list; *p; p = &(*p)->next) for (p = &list; *p; p = &(*p)->next) {
if ((*p)->id == prev && !(*p)->destroyed) if (((*p)->id == prev) && (!(*p)->destroyed)) {
break; break;
}
}
} }
else else {
p = &list; p = &list;
}
new->id = id; new->id = id;
set_ignore (dpy, NextRequest (dpy)); set_ignore (dpy, NextRequest (dpy));
if (!XGetWindowAttributes (dpy, id, &new->a)) if (!XGetWindowAttributes (dpy, id, &new->a))
{ {
#if DEBUG_WINDOWS
printf("not adding 0x%x: failed to get attributes\n", new->id);
#endif
free (new); free (new);
return; return;
} }
@ -2432,8 +2466,9 @@ add_win (Display *dpy, Window id, Window prev)
new->next = *p; new->next = *p;
*p = new; *p = new;
if (new->a.map_state == IsViewable) if (new->a.map_state == IsViewable) {
map_win (dpy, id, new->damage_sequence - 1, True); map_win (dpy, id, new->damage_sequence - 1, True);
}
} }
void void
@ -2441,25 +2476,32 @@ restack_win (Display *dpy, win *w, Window new_above)
{ {
Window old_above; Window old_above;
if (w->next) #if DEBUG_WINDOWS
printf("restack_win: 0x%x\n", w->id);
#endif
if (w->next) {
old_above = w->next->id; old_above = w->next->id;
else }
else {
old_above = None; old_above = None;
if (old_above != new_above) }
{ if (old_above != new_above) {
win **prev; win **prev;
/* unhook */ /* unhook */
for (prev = &list; *prev; prev = &(*prev)->next) for (prev = &list; *prev; prev = &(*prev)->next) {
if ((*prev) == w) if ((*prev) == w) {
break; break;
}
}
*prev = w->next; *prev = w->next;
/* rehook */ /* rehook */
for (prev = &list; *prev; prev = &(*prev)->next) for (prev = &list; *prev; prev = &(*prev)->next) {
{ if ((!(*prev)->destroyed) && ((*prev)->id == new_above)) {
if ((!(*prev)->destroyed) && ((*prev)->id == new_above))
break; break;
}
} }
w->next = *prev; w->next = *prev;
*prev = w; *prev = w;
@ -2568,11 +2610,15 @@ finish_destroy_win (Display *dpy, Window id, Bool gone)
{ {
win **prev, *w; win **prev, *w;
for (prev = &list; (w = *prev); prev = &w->next) #if DEBUG_WINDOWS
if (w->id == id && w->destroyed) printf("finish_destroy_win: 0x%x\n", id);
{ #endif
if (gone)
for (prev = &list; (w = *prev); prev = &w->next) {
if (w->id == id && w->destroyed) {
if (gone) {
finish_unmap_win (dpy, w); finish_unmap_win (dpy, w);
}
*prev = w->next; *prev = w->next;
if (w->picture) if (w->picture)
{ {
@ -2605,6 +2651,7 @@ finish_destroy_win (Display *dpy, Window id, Bool gone)
free (w); free (w);
break; break;
} }
}
} }
#if HAS_NAME_WINDOW_PIXMAP #if HAS_NAME_WINDOW_PIXMAP
@ -2621,15 +2668,21 @@ destroy_win (Display *dpy, Window id, Bool gone, Bool fadeout)
fade *f; fade *f;
win *w = find_win (dpy, id); win *w = find_win (dpy, id);
#if DEBUG_WINDOWS
printf("destroy_win: 0x%x 0x%x\n", w, id);
#endif
if (w) {
w->destroyed = True;
}
if (w && w->destruct_queued == False) { if (w && w->destruct_queued == False) {
f = find_fade (w); f = find_fade (w);
if (f) { if (f) {
w->destruct_queued = True; w->destruct_queued = True;
f->callback = destroy_callback; f->callback = destroy_callback;
w->destroyed = True;
} }
else { else {
w->destroyed = True;
#if HAS_NAME_WINDOW_PIXMAP #if HAS_NAME_WINDOW_PIXMAP
if (w->pixmap && fadeout && winTypeFade[w->windowType]) { if (w->pixmap && fadeout && winTypeFade[w->windowType]) {
set_fade (dpy, w, w->opacity*1.0/OPAQUE, 0.0, fade_out_step, destroy_callback, gone, False, True, True); set_fade (dpy, w, w->opacity*1.0/OPAQUE, 0.0, fade_out_step, destroy_callback, gone, False, True, True);
@ -2650,25 +2703,26 @@ destroy_win (Display *dpy, Window id, Bool gone, Bool fadeout)
} }
} }
/* #if DEBUG_WINDOWS
static void static void
dump_win (win *w) dump_win (win *w)
{ {
printf ("\t%08lx: %d x %d + %d + %d (%d)\n", w->id, printf ("\t%08lx: %d x %d + %d + %d (%d)\n", w->id,
w->a.width, w->a.height, w->a.x, w->a.y, w->a.border_width); w->a.width, w->a.height, w->a.x, w->a.y, w->a.border_width);
} }
static void static void
dump_wins (void) dump_wins (void)
{ {
win *w; win *w;
printf ("windows:\n"); printf ("windows:\n");
for (w = list; w; w = w->next) for (w = list; w; w = w->next) {
dump_win (w); dump_win (w);
} }
*/ }
#endif
static void static void
damage_win (Display *dpy, XDamageNotifyEvent *de) damage_win (Display *dpy, XDamageNotifyEvent *de)
@ -3569,8 +3623,9 @@ main (int argc, char **argv)
XShapeSelectInput (dpy, root, ShapeNotifyMask); XShapeSelectInput (dpy, root, ShapeNotifyMask);
XQueryTree (dpy, root, &root_return, &parent_return, &children, &nchildren); XQueryTree (dpy, root, &root_return, &parent_return, &children, &nchildren);
for (i = 0; i < nchildren; i++) for (i = 0; i < nchildren; i++) {
add_win (dpy, children[i], i ? children[i-1] : None); add_win (dpy, children[i], i ? children[i-1] : None);
}
XFree (children); XFree (children);
} }
XUngrabServer (dpy); XUngrabServer (dpy);
@ -3586,7 +3641,9 @@ main (int argc, char **argv)
for (;;) for (;;)
{ {
/* dump_wins (); */ #if DEBUG_WINDOWS
dump_wins ();
#endif
do { do {
if (autoRedirect) { if (autoRedirect) {
XFlush (dpy); XFlush (dpy);

Loading…
Cancel
Save