diff --git a/server/drivers/CFontz.c b/server/drivers/CFontz.c index 4e15dc5..fc91974 100644 --- a/server/drivers/CFontz.c +++ b/server/drivers/CFontz.c @@ -187,11 +187,6 @@ CFontz_init (lcd_logical_driver * driver, char *args) CFontz_autoscroll (0); CFontz_backlight (backlight_brightness); - if (!driver->framebuf) { - syslog(LOG_ERR, "cfontz_init: no frame buffer!"); - CFontz_close (); - return -1; - } // Set the functions the driver supports... driver->clear = CFontz_clear; diff --git a/server/drivers/MtxOrb.c b/server/drivers/MtxOrb.c index 3d1eb4b..9fd67c5 100644 --- a/server/drivers/MtxOrb.c +++ b/server/drivers/MtxOrb.c @@ -361,12 +361,6 @@ MtxOrb_init (lcd_logical_driver * driver, char *args) MtxOrb_cursorblink (DEFAULT_CURSORBLINK); MtxOrb_contrast (contrast); - if (!driver->framebuf) { - syslog(LOG_ERR, "no frame buffer! exiting driver init..."); - MtxOrb_close (); - return -1; - } - /* * Configure the display functions */ diff --git a/server/drivers/debug.c b/server/drivers/debug.c index 832754c..301a09b 100644 --- a/server/drivers/debug.c +++ b/server/drivers/debug.c @@ -26,13 +26,6 @@ debug_init (struct lcd_logical_driver *driver, char *args) debug_drv = driver; - if (driver->framebuf) - syslog(LOG_INFO, "frame buffer at: %010X", (int) driver->framebuf); - else { - syslog(LOG_ERR, "no frame buffer!"); - return -1; - } - debug_clear (); driver->daemonize = 0; diff --git a/server/drivers/lb216.c b/server/drivers/lb216.c index 3098c09..344d1cf 100644 --- a/server/drivers/lb216.c +++ b/server/drivers/lb216.c @@ -196,15 +196,6 @@ int LB216_init(lcd_logical_driver *driver, char *args) LB216_hidecursor(); LB216_backlight(backlight_brightness); - - if(!driver->framebuf) - { - fprintf(stderr, "LB216_init: No frame buffer.\n"); - driver->close(); - return -1; - } - - // Set the functions the driver supports... driver->clear = LB216_clear; diff --git a/server/drivers/lcd.c b/server/drivers/lcd.c index 3fd6106..9a7f1cc 100644 --- a/server/drivers/lcd.c +++ b/server/drivers/lcd.c @@ -445,18 +445,16 @@ lcd_add_driver (char *driver, char *args) // Default settings for the driver... lcd_drv_init(add, NULL); - memset(buf, '\0', sizeof(buf)); - add->framebuf = buf; // *** HACK: makes drivers think framebuffer is allocated! - i = init_driver (add, args); - // Allocate space for a framebuffer... *AFTER* the driver - // has a chance to initialize height and width!! - if ((add->framebuf = malloc (add->wid * add->hgt)) == NULL) { - snprintf (buf, sizeof(buf), "couldn't allocate framebuffer for driver \"%s\"", driver); - syslog (LOG_ERR, buf); - // free (add); - return -1; + if (!add->framebuf) { + if ((add->framebuf = malloc (add->wid * add->hgt)) == NULL) { + snprintf (buf, sizeof(buf), "couldn't allocate framebuffer of %d chars for driver \"%s\"", + (add->wid * add->hgt), driver); + syslog (LOG_ERR, buf); + // free (add); + return -1; + } } memset (add->framebuf, ' ', (add->wid * add->hgt)); diff --git a/server/drivers/sed1520.c b/server/drivers/sed1520.c index c0e555f..8438515 100644 --- a/server/drivers/sed1520.c +++ b/server/drivers/sed1520.c @@ -217,12 +217,16 @@ sed1520_init (struct lcd_logical_driver *driver, char *args) writecommand (0xAF, CS1 + CS2); writecommand (0xC0, CS1 + CS2); selectpage (3); + + driver->cellwid = 6; + driver->cellhgt = 8; + // The Framebuffer LCDproc allocates by default is too small, - // so we free() it and allocate one of adequate size. + // so we free() it (if it exists) and allocate one of adequate size. if (!driver->framebuf) free (driver->framebuf); - driver->framebuf = malloc (488); + driver->framebuf = malloc (122 * 4); if (!driver->framebuf) { sed1520_close (); @@ -232,10 +236,6 @@ sed1520_init (struct lcd_logical_driver *driver, char *args) // clear screen memset (driver->framebuf, 0, 122 * 4); - driver->cellwid = 6; - driver->cellhgt = 8; // FIXME: sed1520->cellwid always stays 5 - // regardless what it is set to here. This is - // a bug but not inside this driver. driver->clear = sed1520_clear; driver->string = sed1520_string; driver->chr = sed1520_chr; diff --git a/server/drivers/stv5730.c b/server/drivers/stv5730.c index a228c17..986d124 100644 --- a/server/drivers/stv5730.c +++ b/server/drivers/stv5730.c @@ -447,9 +447,8 @@ stv5730_init (struct lcd_logical_driver *driver, char *args) memset (driver->framebuf, 0, STV5730_WID * STV5730_HGT); driver->cellwid = 4; - driver->cellhgt = 6; // FIXME: stv5730->cellwid always stays 5 - // regardless what it is set to here. This is - // a bug but not inside this driver. + driver->cellhgt = 6; + driver->clear = stv5730_clear; driver->string = stv5730_string; driver->chr = stv5730_chr; diff --git a/server/drivers/text.c b/server/drivers/text.c index af18ce1..958bb8d 100644 --- a/server/drivers/text.c +++ b/server/drivers/text.c @@ -38,12 +38,6 @@ text_init (lcd_logical_driver * driver, char *args) { text = driver; - if (!text->framebuf) { - syslog(LOG_ERR, "text: no frame buffer!"); - text_close (); - return -1; - } - text->wid = LCD_DEFAULT_WIDTH; text->hgt = LCD_DEFAULT_HEIGHT; text->cellwid = LCD_DEFAULT_CELL_WIDTH; diff --git a/server/drivers/wirz-sli.c b/server/drivers/wirz-sli.c index c8232df..1cded69 100644 --- a/server/drivers/wirz-sli.c +++ b/server/drivers/wirz-sli.c @@ -148,11 +148,6 @@ sli_init (lcd_logical_driver * driver, char *args) out[1] = 0x001; /* Clear LCD, not sure if this belongs here */ write (fd, out, 2); - if (!driver->framebuf) { - fprintf (stderr, "sli_init: No frame buffer.\n"); - sli_close (); - return -1; - } // Set LCD parameters (I use a 16x2 LCD) -- small but still useful // Its also much cheaper than the higher quality Matrix Orbital modules // Currently, $30 for interface kit and 16x2 non-backlit LCD...