--- a/drv_generic_graphic.c +++ b/drv_generic_graphic.c @@ -24,7 +24,7 @@ * */ -/* +/* * * exported functions: * @@ -98,6 +98,9 @@ static int INVERTED = 0; /* must be implemented by the real driver */ void (*drv_generic_graphic_real_blit) () = NULL; +/* can be implemented by the real driver */ +void (*drv_generic_graphic_real_clear) () = NULL; + /****************************************/ /*** generic Framebuffer stuff ***/ @@ -691,7 +694,10 @@ int drv_generic_graphic_clear(void) for (i = 0; i < LCOLS * LROWS; i++) drv_generic_graphic_FB[l][i] = NO_COL; - drv_generic_graphic_blit(0, 0, LROWS, LCOLS); + if (drv_generic_graphic_real_clear) + drv_generic_graphic_real_clear(NO_COL); + else + drv_generic_graphic_blit(0, 0, LROWS, LCOLS); return 0; } --- a/drv_generic_graphic.h +++ b/drv_generic_graphic.h @@ -40,6 +40,9 @@ extern RGBA NO_COL; /* no color (comple /* these functions must be implemented by the real driver */ extern void (*drv_generic_graphic_real_blit) (const int row, const int col, const int height, const int width); +/* these functions can be implemented by the real driver */ +extern void (*drv_generic_graphic_real_clear) (const RGBA rgba); + /* helper function to get pixel color or gray value */ extern RGBA drv_generic_graphic_rgb(const int row, const int col); extern unsigned char drv_generic_graphic_gray(const int row, const int col);