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
STRIP ?= strip
CFLAGS ?= --std=c99 -fshort-wchar -Os
CFLAGS ?= -std=c99 -fshort-wchar -Os
LDFLAGS += -lxcb
CFDEBUG = -g3 -pedantic -Wall -Wunused-parameter -Wlong-long\
-Wsign-conversion -Wconversion -Wimplicit-function-declaration

40
bar.c
View File

@ -30,6 +30,12 @@ enum {
FONT_MAX
};
enum {
ALIGN_L = 0,
ALIGN_C,
ALIGN_R
};
static xcb_connection_t *c;
static xcb_window_t win;
static xcb_drawable_t canvas;
@ -54,13 +60,13 @@ xcb_set_bg (int i)
void
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
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
@ -73,19 +79,19 @@ void
xcb_set_fontset (int i)
{
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
draw_char (int x, int align, wchar_t ch)
{
switch (align) {
case 1:
case ALIGN_C:
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);
x = bar_width / 2 - (x + sel_font->width) / 2 + x;
break;
case 2:
case ALIGN_R:
xcb_copy_area (c, canvas, canvas, draw_gc, bar_width - x, 0,
bar_width - x - sel_font->width, 0, x, BAR_HEIGHT);
x = bar_width - sel_font->width;
@ -141,15 +147,15 @@ parse (char *text)
break;
case 'l':
align = 0;
align = ALIGN_L;
pos_x = 0;
break;
case 'c':
align = 1;
align = ALIGN_C;
pos_x = 0;
break;
case 'r':
align = 2;
align = ALIGN_R;
pos_x = 0;
break;
}
@ -233,7 +239,7 @@ set_ewmh_atoms (xcb_window_t root)
xcb_get_property_reply_t *reply1;
xcb_atom_t atoms[5];
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[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 */
if (*a == atoms[2]) {
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++;
}
/* Tell the WM that this space is for the bar */
@ -324,13 +330,13 @@ init (void)
y = 0;
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,
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 */
int ewmh_docking = set_ewmh_atoms (root);
/* 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 */
canvas = xcb_generate_id (c);
@ -338,13 +344,13 @@ init (void)
/* Create the gc for drawing */
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);
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);
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 */
xcb_map_window (c, win);
@ -399,10 +405,10 @@ main (int argc, char **argv)
}
}
atexit (cleanup);
signal (SIGINT, sighandle);
signal (SIGTERM, sighandle);
init ();
atexit (cleanup);
/* Get the fd to Xserver */
pollin[1].fd = xcb_get_file_descriptor (c);
@ -412,7 +418,7 @@ main (int argc, char **argv)
for (;;) {
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 (permanent) pollin[0].fd = -1; /* ...null the fd and continue polling :D */
else break; /* ...bail out */