flicker prevention through screen-sized offscreen pixmap

This commit is contained in:
Anselm R. Garbe 2006-06-22 15:25:59 +02:00
parent e57867eddd
commit e8178048af
3 changed files with 11 additions and 2 deletions

View File

@ -25,7 +25,7 @@ create_frame(Area *a, Client *c)
f->collapsed = False;
f->tile.blitz = &blz;
f->tile.drawable = c->framewin;
f->tile.drawable = pmap;
f->tile.gc = c->gc;
f->tile.font = &def.font;
f->tile.color = def.normcolor;
@ -34,7 +34,7 @@ create_frame(Area *a, Client *c)
f->posbar.align = CENTER;
f->tagbar.blitz = &blz;
f->tagbar.drawable = c->framewin;
f->tagbar.drawable = pmap;
f->tagbar.gc = c->gc;
f->tagbar.font = &def.font;
f->tagbar.norm = def.normcolor;
@ -184,6 +184,11 @@ draw_frame(Frame *f)
blitz_draw_input(&f->tagbar);
blitz_draw_label(&f->titlebar, f->client->name);
blitz_draw_label(&f->posbar, buf);
XCopyArea(blz.display, pmap, f->client->framewin, f->tagbar.gc,
f->rect.x, f->rect.y,
f->rect.width, f->rect.height,
f->rect.x, f->rect.y);
XSync(blz.display, False);
}
void

View File

@ -338,6 +338,9 @@ main(int argc, char *argv[])
bbrush.color = def.normcolor;
bbrush.font = &def.font;
pmap = XCreatePixmap(blz.display, blz.root, rect.width, rect.height,
DefaultDepth(blz.display, blz.screen));
XMapRaised(blz.display, barwin);
draw_bar();
scan_wins();

View File

@ -185,6 +185,7 @@ Cursor cursor[CurLast];
unsigned int valid_mask;
unsigned int num_lock_mask;
Bool sel_screen;
Pixmap pmap;
void (*handler[LASTEvent]) (XEvent *);
/* wm.c */