Only copy the double-buffer on expose-events

This commit is contained in:
Axel Wagner 2010-08-22 10:24:32 +02:00
parent 5015cdc4d0
commit 14b885adf1
2 changed files with 26 additions and 1 deletions

View File

@ -48,6 +48,12 @@ void reconfig_windows();
*/ */
void draw_bars(); void draw_bars();
/*
* Redraw the bars, i.e. simply copy the buffer to the barwindow
*
*/
void redraw_bars();
/* /*
* Calculate the rendered width of a string with the configured font. * Calculate the rendered width of a string with the configured font.
* The string has to be encoded in ucs2 and glyph_len has to be the length * The string has to be encoded in ucs2 and glyph_len has to be the length

View File

@ -157,7 +157,7 @@ void xcb_chk_cb(struct ev_loop *loop, ev_check *watcher, int revents) {
switch (event->response_type & ~0x80) { switch (event->response_type & ~0x80) {
case XCB_EXPOSE: case XCB_EXPOSE:
/* Expose-events happen, when the window needs to be redrawn */ /* Expose-events happen, when the window needs to be redrawn */
draw_bars(); redraw_bars();
break; break;
case XCB_BUTTON_PRESS: case XCB_BUTTON_PRESS:
/* Button-press-events are mouse-buttons clicked on one of our bars */ /* Button-press-events are mouse-buttons clicked on one of our bars */
@ -569,3 +569,22 @@ void draw_bars() {
i = 0; i = 0;
} }
} }
/*
* Redraw the bars, i.e. simply copy the buffer to the barwindow
*
*/
void redraw_bars() {
i3_output *outputs_walk;
SLIST_FOREACH(outputs_walk, outputs, slist) {
xcb_copy_area(xcb_connection,
outputs_walk->buffer,
outputs_walk->bar,
outputs_walk->bargc,
0, 0,
0, 0,
outputs_walk->rect.w,
outputs_walk->rect.h);
xcb_flush(xcb_connection);
}
}