xref: /OK3568_Linux_fs/buildroot/package/fbv/0003-fix-24bpp-support-on-big-endian.patch (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyundiff -upr a/fb_display.c b/fb_display.c
2*4882a593Smuzhiyun--- a/fb_display.c	2007-06-01 16:52:45.000000000 +0200
3*4882a593Smuzhiyun+++ b/fb_display.c	2007-06-01 16:51:43.000000000 +0200
4*4882a593Smuzhiyun@@ -307,7 +307,7 @@ void* convertRGB2FB(int fh, unsigned cha
5*4882a593Smuzhiyun {
6*4882a593Smuzhiyun     unsigned long i;
7*4882a593Smuzhiyun     void *fbbuff = NULL;
8*4882a593Smuzhiyun-	u_int8_t  *c_fbbuff;
9*4882a593Smuzhiyun+    u_int8_t  *c_fbbuff;
10*4882a593Smuzhiyun     u_int16_t *s_fbbuff;
11*4882a593Smuzhiyun     u_int32_t *i_fbbuff;
12*4882a593Smuzhiyun
13*4882a593Smuzhiyun@@ -335,6 +335,16 @@ void* convertRGB2FB(int fh, unsigned cha
14*4882a593Smuzhiyun 	    fbbuff = (void *) s_fbbuff;
15*4882a593Smuzhiyun 	    break;
16*4882a593Smuzhiyun 	case 24:
17*4882a593Smuzhiyun+	    *cpp = 3;
18*4882a593Smuzhiyun+	    c_fbbuff = (unsigned char *) malloc(count * 3 * sizeof(unsigned char));
19*4882a593Smuzhiyun+	    for(i = 0; i < (3 * count); i += 3) {
20*4882a593Smuzhiyun+		/* Big endian framebuffer. */
21*4882a593Smuzhiyun+		c_fbbuff[i] = rgbbuff[i+2];
22*4882a593Smuzhiyun+		c_fbbuff[i+1] = rgbbuff[i+1];
23*4882a593Smuzhiyun+		c_fbbuff[i+2] = rgbbuff[i];
24*4882a593Smuzhiyun+	    }
25*4882a593Smuzhiyun+	    fbbuff = (void *) c_fbbuff;
26*4882a593Smuzhiyun+	    break;
27*4882a593Smuzhiyun 	case 32:
28*4882a593Smuzhiyun 	    *cpp = 4;
29*4882a593Smuzhiyun 	    i_fbbuff = (unsigned int *) malloc(count * sizeof(unsigned int));
30*4882a593SmuzhiyunOnly in build_avr32/fbv-1.0b-modified: .fb_display.c.swp
31*4882a593SmuzhiyunBinary files build_avr32/fbv-1.0b/fb_display.o and build_avr32/fbv-1.0b-modified/fb_display.o differ
32*4882a593SmuzhiyunBinary files build_avr32/fbv-1.0b/fbv and build_avr32/fbv-1.0b-modified/fbv differ
33