--- ./fb_display.c.00 2008-01-07 11:55:29.000000000 +0100 +++ ./fb_display.c 2008-01-07 11:55:40.000000000 +0100 @@ -310,7 +310,7 @@ { unsigned long i; void *fbbuff = NULL; - u_int8_t *c_fbbuff; + u_int8_t *c_fbbuff; u_int16_t *s_fbbuff; u_int32_t *i_fbbuff; @@ -338,6 +338,16 @@ fbbuff = (void *) s_fbbuff; break; case 24: + *cpp = 3; + c_fbbuff = (unsigned char *) malloc(count * 3 * sizeof(unsigned char)); + for(i = 0; i < (3 * count); i += 3) { + /* Big endian framebuffer. */ + c_fbbuff[i] = rgbbuff[i+2]; + c_fbbuff[i+1] = rgbbuff[i+1]; + c_fbbuff[i+2] = rgbbuff[i]; + } + fbbuff = (void *) c_fbbuff; + break; case 32: *cpp = 4; i_fbbuff = (unsigned int *) malloc(count * sizeof(unsigned int));