From 9147c25eb4389bc3a1317ffcf9b9a65376079c76 Mon Sep 17 00:00:00 2001 From: ltoetsch Date: Sat, 17 Mar 2001 11:44:10 +0000 Subject: [lcd4linux @ 2001-03-17 11:44:10 by ltoetsch] allow more then 1 BAR_T git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@129 3ae390bd-cb1e-0410-b409-cd5a39f66f1f --- pixmap.c | 62 ++++++++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 42 insertions(+), 20 deletions(-) (limited to 'pixmap.c') diff --git a/pixmap.c b/pixmap.c index b63fcd7..dca7f52 100644 --- a/pixmap.c +++ b/pixmap.c @@ -1,4 +1,4 @@ -/* $Id: pixmap.c,v 1.6 2001/03/16 16:40:17 ltoetsch Exp $ +/* $Id: pixmap.c,v 1.7 2001/03/17 11:44:10 ltoetsch Exp $ * * generic pixmap driver * @@ -20,6 +20,9 @@ * * * $Log: pixmap.c,v $ + * Revision 1.7 2001/03/17 11:44:10 ltoetsch + * allow more then 1 BAR_T + * * Revision 1.6 2001/03/16 16:40:17 ltoetsch * implemented time bar * @@ -138,13 +141,19 @@ int pix_put (int row, int col, char *text) return 0; } +#define N_BAR_T 10 + int pix_bar (int type, int row, int col, int max, int len1, int len2) { int x, y, len, rev; - static int *valbuf = NULL; - static int init = 0; - static time_t old; + static struct { + int row, col, len; + int *buf; + int init; + time_t old; + } vals[N_BAR_T]; time_t now; + int i; row*=YRES; col*=XRES; @@ -161,16 +170,27 @@ int pix_bar (int type, int row, int col, int max, int len1, int len2) else if (len1>max) len1=max; if (type == BAR_T) { - if (init == 0 && valbuf == 0) { - valbuf = calloc(len2, sizeof(int)); - if (valbuf == NULL) { - error("Couldn't allocte valbuf"); - init = -1; - return -1; + for (i=0; i < N_BAR_T; i++) { + if (vals[i].init == 0 && vals[i].buf == 0) { + vals[i].buf = calloc(len2, sizeof(int)); + if (vals[i].buf == NULL) { + error("Couldn't allocte valbuf"); + vals[i].init = -1; + return -1; + } + vals[i].init = 1; + vals[i].len = len2; + vals[i].col = col; + vals[i].row = row; + time(&vals[i].old); + break; } - init = 1; - debug("valbuf ok, len2=%d", len2); - time(&old); + else if (vals[i].init==1 && col==vals[i].col && row==vals[i].row) + break; + } + if (i == N_BAR_T) { + error("Too many $t, %d supported", N_BAR_T); + return -1; } } else { @@ -211,21 +231,23 @@ int pix_bar (int type, int row, int col, int max, int len1, int len2) case BAR_T: len1=max-len1; + len2=vals[i].len; rev=1; time(&now); - if (now == old) { - valbuf[len2-1] += len1; - valbuf[len2-1] /= 2; + if (now == vals[i].old) { + vals[i].buf[len2-1] += len1; + vals[i].buf[len2-1] /= 2; } else { - for (; old < now; old++) + for (; vals[i].old < now; vals[i].old++) for (x=1; x