diff --git a/server/drivers/curses_drv.c b/server/drivers/curses_drv.c index 1b46ee0..4b576a2 100644 --- a/server/drivers/curses_drv.c +++ b/server/drivers/curses_drv.c @@ -136,7 +136,10 @@ curses_drv_close () refresh (); endwin (); - drv_base_close (); + if (curses_drv->framebuf != NULL) + free (curses_drv->framebuf); + + curses_drv->framebuf = NULL; } @@ -227,13 +230,13 @@ curses_drv_vbar (int x, int len) char map[] = "_.,,ooO8"; int y; - for (y = lcd.hgt; y > 0 && len > 0; y--) { - if (len >= lcd.cellhgt) + for (y = curses_drv->hgt; y > 0 && len > 0; y--) { + if (len >= curses_drv->cellhgt) curses_drv_chr (x, y, '8'); else curses_drv_chr (x, y, map[len - 1]); - len -= lcd.cellhgt; + len -= curses_drv->cellhgt; } // move(4-len/lcd.cellhgt, x-1); @@ -247,13 +250,13 @@ curses_drv_vbar (int x, int len) void curses_drv_hbar (int x, int y, int len) { - for (; x <= lcd.wid && len > 0; x++) { - if (len >= lcd.cellwid) + for (; x <= curses_drv->wid && len > 0; x++) { + if (len >= curses_drv->cellwid) curses_drv_chr (x, y, '='); else curses_drv_chr (x, y, '-'); - len -= lcd.cellwid; + len -= curses_drv->cellwid; } // move(y-1, x-1); diff --git a/server/drivers/text.c b/server/drivers/text.c index 3d02b9f..85eeaa7 100644 --- a/server/drivers/text.c +++ b/server/drivers/text.c @@ -74,7 +74,10 @@ text_init (lcd_logical_driver * driver, char *args) void text_close () { - drv_base_close (); + if (lcd.framebuf != NULL) + free (lcd.framebuf); + + lcd.framebuf = NULL; } ///////////////////////////////////////////////////////////////// @@ -83,7 +86,7 @@ text_close () void text_clear () { - memset (lcd.framebuf, ' ', lcd.wid * lcd.hgt); + memset (text->framebuf, ' ', text->wid * text->hgt); } @@ -93,7 +96,7 @@ text_clear () void text_flush () { - text_draw_frame (lcd.framebuf); + text_draw_frame (text->framebuf); } ///////////////////////////////////////////////////////////////// @@ -109,7 +112,7 @@ text_string (int x, int y, char string[]) y -= 1; for (i = 0; string[i]; i++) { - lcd.framebuf[(y * lcd.wid) + x + i] = string[i]; + text->framebuf[(y * text->wid) + x + i] = string[i]; } } @@ -123,7 +126,7 @@ text_chr (int x, int y, char c) y--; x--; - lcd.framebuf[(y * lcd.wid) + x] = c; + text->framebuf[(y * text->wid) + x] = c; } int @@ -185,10 +188,10 @@ void text_vbar (int x, int len) { int y; - for (y = lcd.hgt; y > 0 && len > 0; y--) { + for (y = text->hgt; y > 0 && len > 0; y--) { text_chr (x, y, '|'); - len -= lcd.cellhgt; + len -= text->cellhgt; } } @@ -199,10 +202,10 @@ text_vbar (int x, int len) void text_hbar (int x, int y, int len) { - for (; x <= lcd.wid && len > 0; x++) { + for (; x <= text->wid && len > 0; x++) { text_chr (x, y, '-'); - len -= lcd.cellwid; + len -= text->cellwid; } } @@ -226,25 +229,25 @@ text_draw_frame (char *dat) // printf("Frame (%ix%i): \n%s\n", lcd.wid, lcd.hgt, dat); - for (i = 0; i < lcd.wid; i++) { + for (i = 0; i < text->wid; i++) { out[i] = '-'; } - out[lcd.wid] = 0; + out[text->wid] = 0; printf ("+%s+\n", out); - for (i = 0; i < lcd.hgt; i++) { - for (j = 0; j < lcd.wid; j++) { - out[j] = dat[j + (i * lcd.wid)]; + for (i = 0; i < text->hgt; i++) { + for (j = 0; j < text->wid; j++) { + out[j] = dat[j + (i * text->wid)]; } - out[lcd.wid] = 0; + out[text->wid] = 0; printf ("|%s|\n", out); } - for (i = 0; i < lcd.wid; i++) { + for (i = 0; i < text->wid; i++) { out[i] = '-'; } - out[lcd.wid] = 0; + out[text->wid] = 0; printf ("+%s+\n", out); }