rename packages/ to recipes/ per earlier agreement
[openembedded.git] / recipes / libmatchbox / files / 16bppfixes.patch
diff --git a/recipes/libmatchbox/files/16bppfixes.patch b/recipes/libmatchbox/files/16bppfixes.patch
new file mode 100644 (file)
index 0000000..09a0347
--- /dev/null
@@ -0,0 +1,36 @@
+Index: libmb/mbpixbuf.c
+===================================================================
+--- libmatchbox/libmb.orig/mbpixbuf.c  2006-02-01 12:45:55.000000000 +0000
++++ libmatchbox/libmb/mbpixbuf.c       2006-03-11 15:20:47.000000000 +0000
+@@ -716,7 +716,13 @@
+       case 15:
+         return ((r & 0xf8) << 7) | ((g & 0xf8) << 2) | ((b & 0xf8) >> 3);
+       case 16:
+-        return ((r & 0xf8) << 8) | ((g & 0xfc) << 3) | ((b & 0xf8) >> 3);
++        switch (pb->byte_order)
++          {
++          case BYTE_ORD_24_RGB:
++            return ((r & 0xf8) << 8) | ((g & 0xfc) << 3) | ((b & 0xf8) >> 3);
++          case BYTE_ORD_24_BGR:
++            return ((b & 0xf8) << 8) | ((g & 0xfc) << 3) | ((r & 0xf8) >> 3);
++          }
+       case 24:
+       case 32:
+         switch (pb->byte_order)
+@@ -1880,12 +1886,11 @@
+         for(y=0; y<img->height; y++)
+           for(x=0; x<img->width; x++)
+             {
+-              /* Below is potentially dangerous.  
+-               */
+-              pixel =  ( *p | (*(p+1) << 8)); 
++              internal_16bpp_pixel_to_rgb(p, r, g, b);
++              internal_16bpp_pixel_next(p);
++              a = ((img->has_alpha) ?  *p++ : 0xff);
+-              p +=  ((img->has_alpha) ?  3 : 2);
+-              
++              pixel = mb_pixbuf_get_pixel(pb, r, g, b, a);
+               XPutPixel(img->ximg, x, y, pixel);
+             }
+       }