diff options
author | Caolán McNamara <caolanm@redhat.com> | 2012-01-06 09:37:16 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2012-01-06 09:52:42 +0000 |
commit | 79f5f4c97188e8584aceb6af98473c06f40f7500 (patch) | |
tree | a87132e1defa9a85cff6224354f9e77d755bcddf | |
parent | 504e01e52e38583c6bcbd620973b314596633cdb (diff) |
Resolves: fdo#44219 RHEL-4 buildbox doesn't have FT_Library_SetLcdFilter
-rw-r--r-- | cairo/cairo.dlsym.lcdfilter.patch | 56 | ||||
-rw-r--r-- | cairo/cairo/makefile.mk | 4 |
2 files changed, 59 insertions, 1 deletions
diff --git a/cairo/cairo.dlsym.lcdfilter.patch b/cairo/cairo.dlsym.lcdfilter.patch new file mode 100644 index 000000000000..46f7ac74fd7a --- /dev/null +++ b/cairo/cairo.dlsym.lcdfilter.patch @@ -0,0 +1,56 @@ +--- misc/cairo-1.10.2/src/cairo-ft-font.c 2012-01-06 09:09:21.500373823 +0000 ++++ misc/build/cairo-1.10.2/src/cairo-ft-font.c 2012-01-06 09:31:01.645238786 +0000 +@@ -59,6 +59,8 @@ + + #if HAVE_FT_LIBRARY_SETLCDFILTER + #include FT_LCD_FILTER_H ++#elif HAVE_DLFCN_H ++#include <dlfcn.h> + #endif + + /* Fontconfig version older than 2.6 didn't have these options */ +@@ -1217,6 +1219,26 @@ + return CAIRO_STATUS_SUCCESS; + } + ++static void try_FT_Library_SetLcdFilter( FT_Library library, ++ int lcd_filter ) ++{ ++#if HAVE_FT_LIBRARY_SETLCDFILTER ++ FT_Library_SetLcdFilter (library, lcd_filter); ++#elif HAVE_DLFCN_H ++ static void (*pFT_Library_SetLcdFilter) (FT_Library, int); ++ static int dlsymed = 0; ++ ++ if (!dlsymed) ++ { ++ pFT_Library_SetLcdFilter = dlsym(RTLD_DEFAULT, "FT_Library_SetLcdFilter"); ++ dlsymed = 1; ++ } ++ ++ if (pFT_Library_SetLcdFilter) ++ (*pFT_Library_SetLcdFilter) (library, lcd_filter); ++#endif ++} ++ + /* Converts an outline FT_GlyphSlot into an image + * + * This could go through _render_glyph_bitmap as well, letting +@@ -1350,15 +1372,11 @@ + break; + } + +-#if HAVE_FT_LIBRARY_SETLCDFILTER +- FT_Library_SetLcdFilter (library, lcd_filter); +-#endif ++ try_FT_Library_SetLcdFilter(library, lcd_filter); + + fterror = FT_Render_Glyph (face->glyph, render_mode); + +-#if HAVE_FT_LIBRARY_SETLCDFILTER +- FT_Library_SetLcdFilter (library, FT_LCD_FILTER_NONE); +-#endif ++ try_FT_Library_SetLcdFilter(library, FT_LCD_FILTER_NONE); + + if (fterror != 0) + return _cairo_error (CAIRO_STATUS_NO_MEMORY); diff --git a/cairo/cairo/makefile.mk b/cairo/cairo/makefile.mk index 7f84e3dedda2..1c06c7495a9b 100644 --- a/cairo/cairo/makefile.mk +++ b/cairo/cairo/makefile.mk @@ -47,7 +47,9 @@ CAIROVERSION=1.10.2 TARFILE_NAME=$(PRJNAME)-$(CAIROVERSION) TARFILE_MD5=f101a9e88b783337b20b2e26dfd26d5f -PATCH_FILES=..$/$(TARFILE_NAME).patch +PATCH_FILES=\ + ..$/cairo-1.10.2.patch \ + ..$/cairo.dlsym.lcdfilter.patch .IF "$(OS)$(COM)" == "WNTMSC" PATCH_FILES+= ..$/$(TARFILE_NAME).wntmsc.patch |