From: ianmdlvl Date: Sun, 12 Dec 2004 01:43:58 +0000 (+0000) Subject: improved event and display X-Git-Tag: debian_version_4_0_99_0_12~9 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=chiark-utils.git;a=commitdiff_plain;h=b4e0eab2fc31a2b65988f149c065aa4992c08820 improved event and display --- diff --git a/cprogs/xacpi-simple.c b/cprogs/xacpi-simple.c index 50b7965..4dd74a7 100644 --- a/cprogs/xacpi-simple.c +++ b/cprogs/xacpi-simple.c @@ -10,7 +10,7 @@ * green | red | dimgrey charging - low * cyan | red | dimgrey charged - low [1] * grey | red | dimgrey charging&discharching, low [1] - * ... darkmagenta ... no batteries present + * ... darkgreen ... no batteries present * * [1] battery must be quite badly degraded */ @@ -71,14 +71,15 @@ typedef struct batinfo_field { QUANTITY_FIELDS #undef QF -static unsigned long thisbat_info_present, thisbat_state_present; -static unsigned long thisbat_state_charging_state; +static unsigned long thisbat_alarm_present, thisbat_info_present; +static unsigned long thisbat_state_present, thisbat_state_charging_state; #define VAL_NOTFOUND (~0UL) static const batinfo_field fields[]= { #define E(f,l) #f, #l, &thisbat_##f##_##l, 0 #define QF(f,l,u) { #f, #l, &thisbat_##f##_##l, u }, + { E(alarm, present), { "no", "yes" } }, { E(info, present), { "no", "yes" } }, { E(state,present), { "no", "yes" } }, { E(state,charging_state), { "discharging", "charging", "charged" } }, @@ -204,16 +205,23 @@ static int readbattery(void) { /* 0=>ok, -1=>couldn't */ if (r) return batfaile("chdir",".."); batdirname= 0; - for (field=fields, missing=0; - field->file; - field++) { - if (*field->valuep == VAL_NOTFOUND) { - fprintf(stderr,"battery/%s/%s: %s: not found\n", - batdirname, field->file,field->label); - missing++; + if (!(thisbat_alarm_present==0 || + thisbat_info_present==0 || + thisbat_state_present==0)) { + if (thisbat_alarm_present == VAL_NOTFOUND) + thisbat_alarm_present= 1; + + for (field=fields, missing=0; + field->file; + field++) { + if (*field->valuep == VAL_NOTFOUND) { + fprintf(stderr,"battery/%s/%s: %s: not found\n", + batdirname, field->file,field->label); + missing++; + } } + if (missing) return -1; } - if (missing) return -1; return 0; } @@ -252,10 +260,8 @@ static void acquiredata(void) { if (r) continue; - if (!thisbat_info_present || !thisbat_state_present) { - printf("battery/%s not present\n",de->d_name); + if (!thisbat_info_present || !thisbat_state_present) continue; - } charging_state_mask |= 1u << thisbat_state_charging_state; @@ -303,7 +309,7 @@ static void initacquire(void) { C(green) \ C(cyan) \ C(grey) \ - C(darkmagenta) \ + C(darkgreen) \ C(white) \ GC(remain) \ GC(white) \ @@ -341,7 +347,7 @@ static void setbackground(unsigned long newbg) { if (newbg == lastbackground) return; r= XSetWindowBackground(disp,win,newbg); - if (r) failr("XSetWindowBackground",r); + if (!r) fail("XSetWindowBackground"); lastbackground= newbg; } @@ -362,7 +368,7 @@ static void show(void) { int i, leftmost_lit, leftmost_nondeg, beyond, first_beyond; if (!charging_state_mask) { - setbackground(pix_darkmagenta); + setbackground(pix_darkgreen); XClearWindow(disp,win); return; } @@ -472,6 +478,8 @@ static void eventloop(void) { refresh(); for (;;) { + XFlush(disp); + pfd.fd= ConnectionNumber(disp); pfd.events= POLLIN|POLLERR; @@ -486,9 +494,7 @@ static void eventloop(void) { height= ce->height; } } - refresh(); - XFlush(disp); } }