diff options
author | Dmitry Artamonow <mad_soft@inbox.ru> | 2010-06-23 07:00:38 +0000 |
---|---|---|
committer | Martin Jansa <Martin.Jansa@gmail.com> | 2010-08-20 08:37:58 +0200 |
commit | cf8d370464b68cd1ccbb2be9b93833c20ad1cfa4 (patch) | |
tree | 5324e274eacf88b915c37cfe5912f3d47bf3e668 /recipes/mupdf/mupdf-0.6/mupdf_fix_endianness.patch | |
parent | 78c84d68c9d4f5034651ec3def7d65e10bc3c480 (diff) |
mupdf-0.6: new recipe
MuPDF is a slim and fast PDF viewer/toolkit.
Signed-off-by: Dmitry Artamonow <mad_soft@inbox.ru>
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Diffstat (limited to 'recipes/mupdf/mupdf-0.6/mupdf_fix_endianness.patch')
-rw-r--r-- | recipes/mupdf/mupdf-0.6/mupdf_fix_endianness.patch | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/recipes/mupdf/mupdf-0.6/mupdf_fix_endianness.patch b/recipes/mupdf/mupdf-0.6/mupdf_fix_endianness.patch new file mode 100644 index 0000000000..056e1451b1 --- /dev/null +++ b/recipes/mupdf/mupdf-0.6/mupdf_fix_endianness.patch @@ -0,0 +1,90 @@ +Patch from upstream darcs repository, see this bugzilla entry for details: +http://bugs.ghostscript.com/show_bug.cgi?id=690932 + +Wed Jun 16 10:29:54 UTC 2010 tor@ghostscript.com + * Do runtime endianness test instead of relying on unreliable preprocessor macros. +diff -rN -u old-mupdf/apps/x11_image.c new-mupdf-1/apps/x11_image.c +--- old-mupdf/apps/x11_image.c 2010-06-16 12:33:35.000000000 +0000 ++++ new-mupdf-1/apps/x11_image.c 2010-06-16 12:33:35.000000000 +0000 +@@ -10,7 +10,7 @@ + # define _XOPEN_SOURCE 1 + #endif + +-#include <fitz.h> ++#include "fitz.h" + + #include <X11/Xlib.h> + #include <X11/Xutil.h> +@@ -205,11 +205,10 @@ + unsigned long rs, gs, bs; + + byteorder = ImageByteOrder(info.display); +-#if BYTE_ORDER == BIG_ENDIAN +- byterev = byteorder != MSBFirst; +-#else +- byterev = byteorder != LSBFirst; +-#endif ++ if (fz_isbigendian()) ++ byterev = byteorder != MSBFirst; ++ else ++ byterev = byteorder != LSBFirst; + + rm = info.visual.red_mask; + gm = info.visual.green_mask; +diff -rN -u old-mupdf/draw/imageunpack.c new-mupdf-1/draw/imageunpack.c +--- old-mupdf/draw/imageunpack.c 2010-06-16 12:33:35.000000000 +0000 ++++ new-mupdf-1/draw/imageunpack.c 2010-06-16 12:33:36.000000000 +0000 +@@ -31,6 +31,12 @@ + justinvert &= min[i] == 255 && max[i] == 0 && sub[i] == -255; + } + ++ unsigned mask; ++ if (fz_isbigendian()) ++ mask = 0x00ff00ff; ++ else ++ mask = 0xff00ff00; ++ + if (!needed) + return; + +@@ -51,11 +57,7 @@ + wh = wh - 2 * hwh; + while(hwh--) { + unsigned in = *wp; +-#if BYTE_ORDER == LITTLE_ENDIAN +- unsigned out = in ^ 0xff00ff00; +-#else +- unsigned out = in ^ 0x00ff00ff; +-#endif ++ unsigned out = in ^ mask; + *wp++ = out; + } + p = (byte *)wp; +diff -rN -u old-mupdf/fitz/base_cpudep.c new-mupdf-1/fitz/base_cpudep.c +--- old-mupdf/fitz/base_cpudep.c 2010-06-16 12:33:35.000000000 +0000 ++++ new-mupdf-1/fitz/base_cpudep.c 2010-06-16 12:33:36.000000000 +0000 +@@ -10,6 +10,12 @@ + /* global run-time constant */ + unsigned fz_cpuflags = 0; + ++int fz_isbigendian(void) ++{ ++ static const int one = 1; ++ return *(char*)&one == 0; ++} ++ + #ifndef HAVE_CPUDEP + + void fz_cpudetect(void) +diff -rN -u old-mupdf/fitz/fitz_base.h new-mupdf-1/fitz/fitz_base.h +--- old-mupdf/fitz/fitz_base.h 2010-06-16 12:33:35.000000000 +0000 ++++ new-mupdf-1/fitz/fitz_base.h 2010-06-16 12:33:36.000000000 +0000 +@@ -86,6 +86,8 @@ + /* treat as constant! */ + extern unsigned fz_cpuflags; + ++int fz_isbigendian(void); ++ + /* + * Base Fitz runtime. + */ |