Several small corrections

This commit is contained in:
Georg Reinke 2012-07-24 12:25:45 +02:00
parent 8a35dc7695
commit ab350c86f7
2 changed files with 24 additions and 18 deletions

View File

@ -1,6 +1,6 @@
CC ?= gcc CC ?= gcc
STRIP ?= strip STRIP ?= strip
CFLAGS ?= --std=c99 -fshort-wchar -Os CFLAGS ?= -std=c99 -fshort-wchar -Os
LDFLAGS += -lxcb LDFLAGS += -lxcb
CFDEBUG = -g3 -pedantic -Wall -Wunused-parameter -Wlong-long\ CFDEBUG = -g3 -pedantic -Wall -Wunused-parameter -Wlong-long\
-Wsign-conversion -Wconversion -Wimplicit-function-declaration -Wsign-conversion -Wconversion -Wimplicit-function-declaration

40
bar.c
View File

@ -30,6 +30,12 @@ enum {
FONT_MAX FONT_MAX
}; };
enum {
ALIGN_L = 0,
ALIGN_C,
ALIGN_R
};
static xcb_connection_t *c; static xcb_connection_t *c;
static xcb_window_t win; static xcb_window_t win;
static xcb_drawable_t canvas; static xcb_drawable_t canvas;
@ -54,13 +60,13 @@ xcb_set_bg (int i)
void void
xcb_set_fg (int i) xcb_set_fg (int i)
{ {
xcb_change_gc (c, draw_gc , XCB_GC_FOREGROUND, (const unsigned []){ palette[i] }); xcb_change_gc (c, draw_gc , XCB_GC_FOREGROUND, (const uint32_t []){ palette[i] });
} }
void void
xcb_set_ud (int i) xcb_set_ud (int i)
{ {
xcb_change_gc (c, underl_gc, XCB_GC_FOREGROUND, (const unsigned []){ palette[i] }); xcb_change_gc (c, underl_gc, XCB_GC_FOREGROUND, (const uint32_t []){ palette[i] });
} }
void void
@ -73,19 +79,19 @@ void
xcb_set_fontset (int i) xcb_set_fontset (int i)
{ {
sel_font = &fontset[i&1]; sel_font = &fontset[i&1];
xcb_change_gc (c, draw_gc , XCB_GC_FONT, (const unsigned []){ sel_font->xcb_ft }); xcb_change_gc (c, draw_gc , XCB_GC_FONT, (const uint32_t []){ sel_font->xcb_ft });
} }
int int
draw_char (int x, int align, wchar_t ch) draw_char (int x, int align, wchar_t ch)
{ {
switch (align) { switch (align) {
case 1: case ALIGN_C:
xcb_copy_area (c, canvas, canvas, draw_gc, bar_width / 2 - x / 2, 0, xcb_copy_area (c, canvas, canvas, draw_gc, bar_width / 2 - x / 2, 0,
bar_width / 2 - (x + sel_font->width) / 2, 0, x, BAR_HEIGHT); bar_width / 2 - (x + sel_font->width) / 2, 0, x, BAR_HEIGHT);
x = bar_width / 2 - (x + sel_font->width) / 2 + x; x = bar_width / 2 - (x + sel_font->width) / 2 + x;
break; break;
case 2: case ALIGN_R:
xcb_copy_area (c, canvas, canvas, draw_gc, bar_width - x, 0, xcb_copy_area (c, canvas, canvas, draw_gc, bar_width - x, 0,
bar_width - x - sel_font->width, 0, x, BAR_HEIGHT); bar_width - x - sel_font->width, 0, x, BAR_HEIGHT);
x = bar_width - sel_font->width; x = bar_width - sel_font->width;
@ -141,15 +147,15 @@ parse (char *text)
break; break;
case 'l': case 'l':
align = 0; align = ALIGN_L;
pos_x = 0; pos_x = 0;
break; break;
case 'c': case 'c':
align = 1; align = ALIGN_C;
pos_x = 0; pos_x = 0;
break; break;
case 'r': case 'r':
align = 2; align = ALIGN_R;
pos_x = 0; pos_x = 0;
break; break;
} }
@ -233,7 +239,7 @@ set_ewmh_atoms (xcb_window_t root)
xcb_get_property_reply_t *reply1; xcb_get_property_reply_t *reply1;
xcb_atom_t atoms[5]; xcb_atom_t atoms[5];
int compliance_lvl; int compliance_lvl;
unsigned int v[12] = {0}; uint32_t v[12] = {0};
cookies[0] = xcb_intern_atom (c, 0, strlen ("_NET_WM_WINDOW_TYPE") , "_NET_WM_WINDOW_TYPE"); cookies[0] = xcb_intern_atom (c, 0, strlen ("_NET_WM_WINDOW_TYPE") , "_NET_WM_WINDOW_TYPE");
cookies[1] = xcb_intern_atom (c, 0, strlen ("_NET_WM_WINDOW_TYPE_DOCK"), "_NET_WM_WINDOW_TYPE_DOCK"); cookies[1] = xcb_intern_atom (c, 0, strlen ("_NET_WM_WINDOW_TYPE_DOCK"), "_NET_WM_WINDOW_TYPE_DOCK");
@ -270,7 +276,7 @@ set_ewmh_atoms (xcb_window_t root)
/* Show on every desktop */ /* Show on every desktop */
if (*a == atoms[2]) { if (*a == atoms[2]) {
xcb_change_property (c, XCB_PROP_MODE_REPLACE, win, atoms[2], XCB_ATOM_CARDINAL, 32, 1, xcb_change_property (c, XCB_PROP_MODE_REPLACE, win, atoms[2], XCB_ATOM_CARDINAL, 32, 1,
(const unsigned []){ 0xffffffff } ); (const uint32_t []){ 0xffffffff } );
compliance_lvl++; compliance_lvl++;
} }
/* Tell the WM that this space is for the bar */ /* Tell the WM that this space is for the bar */
@ -324,13 +330,13 @@ init (void)
y = 0; y = 0;
xcb_create_window (c, XCB_COPY_FROM_PARENT, win, root, 0, y, xcb_create_window (c, XCB_COPY_FROM_PARENT, win, root, 0, y,
bar_width, BAR_HEIGHT, 0, XCB_WINDOW_CLASS_INPUT_OUTPUT, scr->root_visual, bar_width, BAR_HEIGHT, 0, XCB_WINDOW_CLASS_INPUT_OUTPUT, scr->root_visual,
XCB_CW_BACK_PIXEL | XCB_CW_EVENT_MASK, (const unsigned []){ palette[0], XCB_EVENT_MASK_EXPOSURE }); XCB_CW_BACK_PIXEL | XCB_CW_EVENT_MASK, (const uint32_t []){ palette[0], XCB_EVENT_MASK_EXPOSURE });
/* Set EWMH hints */ /* Set EWMH hints */
int ewmh_docking = set_ewmh_atoms (root); int ewmh_docking = set_ewmh_atoms (root);
/* Quirk for wm not supporting the EWMH docking method */ /* Quirk for wm not supporting the EWMH docking method */
xcb_change_window_attributes (c, win, XCB_CW_OVERRIDE_REDIRECT, (const unsigned []){ !ewmh_docking }); xcb_change_window_attributes (c, win, XCB_CW_OVERRIDE_REDIRECT, (const uint32_t []){ !ewmh_docking });
/* Create a temporary canvas */ /* Create a temporary canvas */
canvas = xcb_generate_id (c); canvas = xcb_generate_id (c);
@ -338,13 +344,13 @@ init (void)
/* Create the gc for drawing */ /* Create the gc for drawing */
draw_gc = xcb_generate_id (c); draw_gc = xcb_generate_id (c);
xcb_create_gc (c, draw_gc, root, XCB_GC_FOREGROUND | XCB_GC_BACKGROUND, (const unsigned []){ palette[1], palette[0] }); xcb_create_gc (c, draw_gc, root, XCB_GC_FOREGROUND | XCB_GC_BACKGROUND, (const uint32_t []){ palette[1], palette[0] });
clear_gc = xcb_generate_id (c); clear_gc = xcb_generate_id (c);
xcb_create_gc (c, clear_gc, root, XCB_GC_FOREGROUND, (const unsigned []){ palette[0] }); xcb_create_gc (c, clear_gc, root, XCB_GC_FOREGROUND, (const uint32_t []){ palette[0] });
underl_gc = xcb_generate_id (c); underl_gc = xcb_generate_id (c);
xcb_create_gc (c, underl_gc, root, XCB_GC_FOREGROUND, (const unsigned []){ palette[0] }); xcb_create_gc (c, underl_gc, root, XCB_GC_FOREGROUND, (const uint32_t []){ palette[0] });
/* Make the bar visible */ /* Make the bar visible */
xcb_map_window (c, win); xcb_map_window (c, win);
@ -399,10 +405,10 @@ main (int argc, char **argv)
} }
} }
atexit (cleanup);
signal (SIGINT, sighandle); signal (SIGINT, sighandle);
signal (SIGTERM, sighandle); signal (SIGTERM, sighandle);
init (); init ();
atexit (cleanup);
/* Get the fd to Xserver */ /* Get the fd to Xserver */
pollin[1].fd = xcb_get_file_descriptor (c); pollin[1].fd = xcb_get_file_descriptor (c);
@ -412,7 +418,7 @@ main (int argc, char **argv)
for (;;) { for (;;) {
int redraw = 0; int redraw = 0;
if (poll ((struct pollfd *)&pollin, 2, -1) > 0) { if (poll (pollin, 2, -1) > 0) {
if (pollin[0].revents & POLLHUP) { /* No more data... */ if (pollin[0].revents & POLLHUP) { /* No more data... */
if (permanent) pollin[0].fd = -1; /* ...null the fd and continue polling :D */ if (permanent) pollin[0].fd = -1; /* ...null the fd and continue polling :D */
else break; /* ...bail out */ else break; /* ...bail out */