summaryrefslogtreecommitdiff
path: root/community/adesklets/fontconfig-2.4.patch
diff options
context:
space:
mode:
Diffstat (limited to 'community/adesklets/fontconfig-2.4.patch')
-rw-r--r--community/adesklets/fontconfig-2.4.patch50
1 files changed, 50 insertions, 0 deletions
diff --git a/community/adesklets/fontconfig-2.4.patch b/community/adesklets/fontconfig-2.4.patch
new file mode 100644
index 000000000..e7a1ad5ca
--- /dev/null
+++ b/community/adesklets/fontconfig-2.4.patch
@@ -0,0 +1,50 @@
+--- configure.ac
++++ configure.ac
+@@ -1,4 +1,4 @@
+-dnl Initialize autoconf and automake
++nl Initialize autoconf and automake
+ AC_INIT
+ AC_CONFIG_SRCDIR(src/main.c)
+ AC_PREREQ(2.52)
+@@ -428,7 +428,18 @@ AC_TRY_LINK(
+ #include <fontconfig/fontconfig.h>
+ , FcInit(),
+ AC_MSG_RESULT([yes])
+-AC_DEFINE(HAVE_FONTCONFIG_FONTCONFIG_H,1,[Define to 1 if you have the <fontconfig/fontconfig.h> header file.]),
++AC_DEFINE(HAVE_FONTCONFIG_FONTCONFIG_H,1,[Define to 1 if you have the <fontconfig/fontconfig.h> header file.])
++
++AC_MSG_CHECKING([For fontconfig FcFini()])
++AC_TRY_LINK(
++#include <fontconfig/fontconfig.h>
++, FcFini(),
++AC_MSG_RESULT([yes])
++AC_DEFINE(HAVE_FONTCONFIG_FCFINI,1,[Define to 1 if FcFini() call exists])
++,
++AC_MSG_RESULT([no]))
++
++,
+ AC_MSG_RESULT([no])
+ FONTCONFIG_LIBS=
+ FONTCONFIG_CFLAGS=
+--- src/xwindow.c
++++ src/xwindow.c
+@@ -123,9 +123,17 @@
+ if ((strlen((char*)file)>4) &&
+ (strstr((char*)file+strlen((char*)file)-4,".ttf")))
+ imlib_add_path_to_font_path(dirname((char*)file));
+- FcFontSetDestroy(fs);
+- FcObjectSetDestroy(os);
+ }
++#ifdef HAVE_FONTCONFIG_FCFINI
++ FcFini();
++#else
++ /* On FontConfig >= 2.4, this causes a segfault, probably due to the new
++ caching mechanism: we don't have to care, since FcFini() always exists,
++ and does the dirty dessalocation job just fine.
++ */
++ if (fs) FcFontSetDestroy(fs);
++ FcObjectSetDestroy(os);
++#endif
+ }
+ #endif
+ imlib_add_path_to_font_path(".");