summaryrefslogtreecommitdiff
path: root/recipes/libmatchbox
diff options
context:
space:
mode:
authorDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
committerDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
commit709c4d66e0b107ca606941b988bad717c0b45d9b (patch)
tree37ee08b1eb308f3b2b6426d5793545c38396b838 /recipes/libmatchbox
parentfa6cd5a3b993f16c27de4ff82b42684516d433ba (diff)
rename packages/ to recipes/ per earlier agreement
See links below for more details: http://thread.gmane.org/gmane.comp.handhelds.openembedded/21326 http://thread.gmane.org/gmane.comp.handhelds.openembedded/21816 Signed-off-by: Denys Dmytriyenko <denis@denix.org> Acked-by: Mike Westerhof <mwester@dls.net> Acked-by: Philip Balister <philip@balister.org> Acked-by: Khem Raj <raj.khem@gmail.com> Acked-by: Marcin Juszkiewicz <hrw@openembedded.org> Acked-by: Koen Kooi <koen@openembedded.org> Acked-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com>
Diffstat (limited to 'recipes/libmatchbox')
-rw-r--r--recipes/libmatchbox/files/16bppfixes-2.patch258
-rw-r--r--recipes/libmatchbox/files/16bppfixes.patch36
-rw-r--r--recipes/libmatchbox/files/autofoo.patch19
-rw-r--r--recipes/libmatchbox/files/check.m4133
-rw-r--r--recipes/libmatchbox/files/configure_fixes.patch79
-rw-r--r--recipes/libmatchbox/files/fix-configure-for-1.9.patch14
-rw-r--r--recipes/libmatchbox/files/reset-sigchld.patch15
-rw-r--r--recipes/libmatchbox/files/svn-autofu-xsettings.patch132
-rw-r--r--recipes/libmatchbox/files/svn-code-misc-xsettings.patch101
-rw-r--r--recipes/libmatchbox/files/svn-explicit-types.patch363
-rw-r--r--recipes/libmatchbox/libmatchbox.inc23
-rw-r--r--recipes/libmatchbox/libmatchbox_1.9.bb14
12 files changed, 1187 insertions, 0 deletions
diff --git a/recipes/libmatchbox/files/16bppfixes-2.patch b/recipes/libmatchbox/files/16bppfixes-2.patch
new file mode 100644
index 0000000000..ab9cdc74a5
--- /dev/null
+++ b/recipes/libmatchbox/files/16bppfixes-2.patch
@@ -0,0 +1,258 @@
+--- libmatchbox/libmb/mbpixbuf.c.orig 2007-05-04 14:41:55.000000000 +0100
++++ libmatchbox/libmb/mbpixbuf.c 2007-05-04 14:41:55.000000000 +0100
+@@ -710,46 +710,19 @@
+ return colnum;
+ }
+
+-
+-static unsigned long
+-mb_pixbuf_get_pixel(MBPixbuf *pb, int r, int g, int b, int a)
++/*
++ * Split the mb_pixbuf_get_pixel() function into several specialized
++ * functions which we will inline; this allows us to optimize
++ * mb_pixbuf_img_render_to_drawable_with_gc () by taking some of the
++ * decision taking outside of the double loop
++ */
++
++/*
++ * Get pixel value for rgb values and pixel depth <= 8
++ */
++static inline unsigned long
++mb_pixbuf_get_pixel_le8_rgb (MBPixbuf *pb, int r, int g, int b)
+ {
+- if (pb->depth > 8)
+- {
+- switch (pb->depth)
+- {
+- case 15:
+- return ((r & 0xf8) << 7) | ((g & 0xf8) << 2) | ((b & 0xf8) >> 3);
+- case 16:
+- return ((r & 0xf8) << 8) | ((g & 0xfc) << 3) | ((b & 0xf8) >> 3);
+- case 24:
+- case 32:
+- switch (pb->byte_order)
+- {
+- case BYTE_ORD_24_RGB:
+- return ((r & 0xff) << 16) | ((g & 0xff) << 8) | (b & 0xff);
+- case BYTE_ORD_24_RBG:
+- return ((r & 0xff) << 16) | ((b & 0xff) << 8) | (g & 0xff);
+- case BYTE_ORD_24_BRG:
+- return ((b & 0xff) << 16) | ((r & 0xff) << 8) | (g & 0xff);
+- case BYTE_ORD_24_BGR:
+- return ((b & 0xff) << 16) | ((g & 0xff) << 8) | (r & 0xff);
+- case BYTE_ORD_24_GRB:
+- return ((g & 0xff) << 16) | ((r & 0xff) << 8) | (b & 0xff);
+- case BYTE_ORD_24_GBR:
+- return ((g & 0xff) << 16) | ((b & 0xff) << 8) | (r & 0xff);
+- case BYTE_ORD_32_ARGB:
+- return (a << 24) | (r << 16) | (g << 8) | b;
+- default:
+- return 0;
+- }
+- default:
+- return 0;
+- }
+- return 0;
+- }
+-
+- /* pb->depth <= 8 */
+ switch(pb->vis->class)
+ {
+ case PseudoColor:
+@@ -794,6 +767,111 @@
+ return 0;
+ }
+
++/*
++ * Get pixel value from a pointer to 16bbp value for pixel depth <= 8
++ * and advance the pointer
++ */
++static inline unsigned long
++mb_pixbuf_get_pixel_le8_16bpp_advance (MBPixbuf *pb, unsigned char ** p)
++{
++ unsigned short s = SHORT_FROM_2BYTES(*p);
++ int r, b, g;
++
++ r = (s & 0xf800) >> 8;
++ g = (s & 0x07e0) >> 3;
++ b = (s & 0x001f) << 3;
++
++ *p += 2;
++
++ return mb_pixbuf_get_pixel_le8_rgb (pb, r, g, b);
++}
++
++/*
++ * Get pixel value for rgba values and pixel depth > 8
++ *
++ */
++static inline unsigned long
++mb_pixbuf_get_pixel_gt8_rgba (MBPixbuf *pb, int r, int g, int b, int a)
++{
++ switch (pb->depth)
++ {
++ case 15:
++ switch (pb->byte_order)
++ {
++ case BYTE_ORD_24_RGB:
++ return ((r & 0xf8) << 7) | ((g & 0xf8) << 2) | ((b & 0xf8) >> 3);
++ case BYTE_ORD_24_BGR:
++ return ((b & 0xf8) << 7) | ((g & 0xf8) << 2) | ((r & 0xf8) >> 3);
++ }
++ case 16:
++ 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)
++ {
++ case BYTE_ORD_24_RGB:
++ return ((r & 0xff) << 16) | ((g & 0xff) << 8) | (b & 0xff);
++ case BYTE_ORD_24_RBG:
++ return ((r & 0xff) << 16) | ((b & 0xff) << 8) | (g & 0xff);
++ case BYTE_ORD_24_BRG:
++ return ((b & 0xff) << 16) | ((r & 0xff) << 8) | (g & 0xff);
++ case BYTE_ORD_24_BGR:
++ return ((b & 0xff) << 16) | ((g & 0xff) << 8) | (r & 0xff);
++ case BYTE_ORD_24_GRB:
++ return ((g & 0xff) << 16) | ((r & 0xff) << 8) | (b & 0xff);
++ case BYTE_ORD_24_GBR:
++ return ((g & 0xff) << 16) | ((b & 0xff) << 8) | (r & 0xff);
++ case BYTE_ORD_32_ARGB:
++ return (a << 24) | (r << 16) | (g << 8) | b;
++ default:
++ return 0;
++ }
++ default:
++ return 0;
++ }
++}
++
++/*
++ * Get pixel value from pointer to 16bpp data for pixel depth > 8
++ * and advance the pointer
++ *
++ * TODO ? We could take the 32bit case out of here, which would allow
++ * to ignore the alpha value for <15, 24>, but we might not gain that
++ * much by this on arm due to the conditional execution.
++ */
++static inline unsigned long
++mb_pixbuf_get_pixel_gt8_16bpp_advance (MBPixbuf *pb, unsigned char ** p,
++ int has_alpha)
++{
++ unsigned short s = SHORT_FROM_2BYTES(*p);
++ int r, b, g, a;
++
++ r = (s & 0xf800) >> 8;
++ g = (s & 0x07e0) >> 3;
++ b = (s & 0x001f) << 3;
++
++ *p += 2;
++
++ a = has_alpha ? *(*p)++ : 0xff;
++
++ return mb_pixbuf_get_pixel_gt8_rgba (pb, r, g, b, a);
++}
++
++static inline unsigned long
++mb_pixbuf_get_pixel(MBPixbuf *pb, int r, int g, int b, int a)
++{
++ if (pb->depth > 8)
++ return mb_pixbuf_get_pixel_gt8_rgba (pb, r, g, b, a);
++
++ return mb_pixbuf_get_pixel_le8_rgb (pb, r, g, b);
++}
++
+ unsigned long
+ mb_pixbuf_lookup_x_pixel(MBPixbuf *pb, int r, int g, int b, int a)
+ {
+@@ -1825,7 +1903,6 @@
+ mb_pixbuf_img_render_to_drawable_with_gc(pb, img, drw, drw_x, drw_y, pb->gc);
+ }
+
+-
+ void
+ mb_pixbuf_img_render_to_drawable_with_gc(MBPixbuf *pb,
+ MBPixbufImage *img,
+@@ -1883,31 +1960,57 @@
+
+ if (pb->internal_bytespp == 2)
+ {
+- for(y=0; y<img->height; y++)
+- for(x=0; x<img->width; x++)
+- {
+- /* Below is potentially dangerous.
+- */
+- pixel = ( *p | (*(p+1) << 8));
+-
+- p += ((img->has_alpha) ? 3 : 2);
+-
+- XPutPixel(img->ximg, x, y, pixel);
+- }
++ if (pb->depth > 8)
++ {
++ for(y=0; y<img->height; y++)
++ for(x=0; x<img->width; x++)
++ {
++ pixel = mb_pixbuf_get_pixel_gt8_16bpp_advance(pb, &p,
++ img->has_alpha);
++ XPutPixel(img->ximg, x, y, pixel);
++ }
++ }
++ else
++ {
++ for(y=0; y<img->height; y++)
++ for(x=0; x<img->width; x++)
++ {
++ pixel = mb_pixbuf_get_pixel_le8_16bpp_advance(pb, &p);
++ XPutPixel(img->ximg, x, y, pixel);
++ }
++ }
+ }
+ else
+ {
+- for(y=0; y<img->height; y++)
++ if (pb->depth > 8)
+ {
+- for(x=0; x<img->width; x++)
++ for(y=0; y<img->height; y++)
+ {
+- r = ( *p++ );
+- g = ( *p++ );
+- b = ( *p++ );
+- a = ((img->has_alpha) ? *p++ : 0xff);
++ for(x=0; x<img->width; x++)
++ {
++ r = ( *p++ );
++ g = ( *p++ );
++ b = ( *p++ );
++ a = ((img->has_alpha) ? *p++ : 0xff);
+
+- pixel = mb_pixbuf_get_pixel(pb, r, g, b, a);
+- XPutPixel(img->ximg, x, y, pixel);
++ pixel = mb_pixbuf_get_pixel_gt8_rgba(pb, r, g, b, a);
++ XPutPixel(img->ximg, x, y, pixel);
++ }
++ }
++ }
++ else
++ {
++ for(y=0; y<img->height; y++)
++ {
++ for(x=0; x<img->width; x++)
++ {
++ r = ( *p++ );
++ g = ( *p++ );
++ b = ( *p++ );
++
++ pixel = mb_pixbuf_get_pixel_le8_rgb(pb, r, g, b);
++ XPutPixel(img->ximg, x, y, pixel);
++ }
+ }
+ }
+ }
diff --git a/recipes/libmatchbox/files/16bppfixes.patch b/recipes/libmatchbox/files/16bppfixes.patch
new file mode 100644
index 0000000000..09a0347809
--- /dev/null
+++ b/recipes/libmatchbox/files/16bppfixes.patch
@@ -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);
+ }
+ }
diff --git a/recipes/libmatchbox/files/autofoo.patch b/recipes/libmatchbox/files/autofoo.patch
new file mode 100644
index 0000000000..ad3be578e4
--- /dev/null
+++ b/recipes/libmatchbox/files/autofoo.patch
@@ -0,0 +1,19 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+--- libmatchbox-1.5/configure.ac~autofoo 2004-12-21 12:56:46.000000000 -0500
++++ libmatchbox-1.5/configure.ac 2005-01-18 16:40:04.421179624 -0500
+@@ -1,10 +1,10 @@
+ AC_PREREQ(2.53)
+ AC_INIT([libmatchbox], 1.5, [mallum@handhelds.org])
+ AC_CONFIG_SRCDIR([libmb/mbtray.c])
++AC_CONFIG_AUX_DIR(.)
+
+ AM_INIT_AUTOMAKE()
+ AM_CONFIG_HEADER([config.h])
+-AC_CONFIG_AUX_DIR(.)
+
+ # Checks for programs.
+ AC_GNU_SOURCE
diff --git a/recipes/libmatchbox/files/check.m4 b/recipes/libmatchbox/files/check.m4
new file mode 100644
index 0000000000..97bfd9c478
--- /dev/null
+++ b/recipes/libmatchbox/files/check.m4
@@ -0,0 +1,133 @@
+dnl AM_PATH_CHECK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
+dnl Test for check, and define CHECK_CFLAGS and CHECK_LIBS
+dnl
+
+AC_DEFUN(AM_PATH_CHECK,
+[
+ AC_ARG_WITH(check,
+ [ --with-check=PATH prefix where check is installed [default=auto]])
+
+ min_check_version=ifelse([$1], ,0.8.2,$1)
+
+ AC_MSG_CHECKING(for check - version >= $min_check_version)
+
+ if test x$with_check = xno; then
+ AC_MSG_RESULT(disabled)
+ ifelse([$3], , AC_MSG_ERROR([disabling check is not supported]), [$3])
+ else
+ if test "x$with_check" != x; then
+ CHECK_CFLAGS="-I$with_check/include"
+ CHECK_LIBS="-L$with_check/lib -lcheck"
+ else
+ CHECK_CFLAGS=""
+ CHECK_LIBS="-lcheck"
+ fi
+
+ ac_save_CFLAGS="$CFLAGS"
+ ac_save_LIBS="$LIBS"
+
+ CFLAGS="$CFLAGS $CHECK_CFLAGS"
+ LIBS="$CHECK_LIBS $LIBS"
+
+ rm -f conf.check-test
+ AC_TRY_RUN([
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <check.h>
+
+int main ()
+{
+ int major, minor, micro;
+ char *tmp_version;
+
+ system ("touch conf.check-test");
+
+ /* HP/UX 9 (%@#!) writes to sscanf strings */
+ tmp_version = strdup("$min_check_version");
+ if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
+ printf("%s, bad version string\n", "$min_check_version");
+ return 1;
+ }
+
+ if ((CHECK_MAJOR_VERSION != check_major_version) ||
+ (CHECK_MINOR_VERSION != check_minor_version) ||
+ (CHECK_MICRO_VERSION != check_micro_version))
+ {
+ printf("\n*** The check header file (version %d.%d.%d) does not match\n",
+ CHECK_MAJOR_VERSION, CHECK_MINOR_VERSION, CHECK_MICRO_VERSION);
+ printf("*** the check library (version %d.%d.%d).\n",
+ check_major_version, check_minor_version, check_micro_version);
+ return 1;
+ }
+
+ if ((check_major_version > major) ||
+ ((check_major_version == major) && (check_minor_version > minor)) ||
+ ((check_major_version == major) && (check_minor_version == minor) && (check_micro_version >= micro)))
+ {
+ return 0;
+ }
+ else
+ {
+ printf("\n*** An old version of check (%d.%d.%d) was found.\n",
+ check_major_version, check_minor_version, check_micro_version);
+ printf("*** You need a version of check being at least %d.%d.%d.\n", major, minor, micro);
+ printf("***\n");
+ printf("*** If you have already installed a sufficiently new version, this error\n");
+ printf("*** probably means that the wrong copy of the check library and header\n");
+ printf("*** file is being found. Rerun configure with the --with-check=PATH option\n");
+ printf("*** to specify the prefix where the correct version was installed.\n");
+ }
+
+ return 1;
+}
+],, no_check=yes, [echo $ac_n "cross compiling; assumed OK... $ac_c"])
+
+ CFLAGS="$ac_save_CFLAGS"
+ LIBS="$ac_save_LIBS"
+
+ if test "x$no_check" = x ; then
+ AC_MSG_RESULT(yes)
+ ifelse([$2], , :, [$2])
+ else
+ AC_MSG_RESULT(no)
+ if test -f conf.check-test ; then
+ :
+ else
+ echo "*** Could not run check test program, checking why..."
+ CFLAGS="$CFLAGS $CHECK_CFLAGS"
+ LIBS="$CHECK_LIBS $LIBS"
+ AC_TRY_LINK([
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <check.h>
+], , [ echo "*** The test program compiled, but did not run. This usually means"
+ echo "*** that the run-time linker is not finding check. You'll need to set your"
+ echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+ echo "*** to the installed location Also, make sure you have run ldconfig if that"
+ echo "*** is required on your system"
+ echo "***"
+ echo "*** If you have an old version installed, it is best to remove it, although"
+ echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
+ [ echo "*** The test program failed to compile or link. See the file config.log for"
+ echo "*** the exact error that occured." ])
+
+ CFLAGS="$ac_save_CFLAGS"
+ LIBS="$ac_save_LIBS"
+ fi
+
+ CHECK_CFLAGS=""
+ CHECK_LIBS=""
+
+ rm -f conf.check-test
+ ifelse([$3], , AC_MSG_ERROR([check not found]), [$3])
+ fi
+
+ AC_SUBST(CHECK_CFLAGS)
+ AC_SUBST(CHECK_LIBS)
+
+ rm -f conf.check-test
+
+ fi
+])
diff --git a/recipes/libmatchbox/files/configure_fixes.patch b/recipes/libmatchbox/files/configure_fixes.patch
new file mode 100644
index 0000000000..083d32a04f
--- /dev/null
+++ b/recipes/libmatchbox/files/configure_fixes.patch
@@ -0,0 +1,79 @@
+---
+ configure.ac | 15 +++++++--------
+ libmb.pc.in | 2 +-
+ 2 files changed, 8 insertions(+), 9 deletions(-)
+
+Index: libmatchbox-1.9/configure.ac
+===================================================================
+--- libmatchbox-1.9.orig/configure.ac 2007-11-11 22:26:43.000000000 +0000
++++ libmatchbox-1.9/configure.ac 2007-11-11 22:52:09.000000000 +0000
+@@ -84,6 +84,7 @@ if test $have_libx11pc = yes; then
+ xft_pkg=xft
+ SUPPORTS_XFT=1
+ AC_DEFINE(USE_XFT, [1], [Use Xft])
++ XFT_REQUIRED="xft"
+ fi
+ # XXX : xau is missing from x11.pc - workaround is too add here
+ PKG_CHECK_MODULES(XLIBS, x11 xext $xft_pkg)
+@@ -108,6 +109,7 @@ if test x$enable_xft != xno; then
+ AC_DEFINE(USE_XFT, [1], [Use Xft])
+ SUPPORTS_XFT=1
+ AC_MSG_RESULT(yes)
++ XFT_REQUIRED="xft"
+ else
+
+ AC_PATH_PROG(XFT_CONFIG, xft-config, no)
+@@ -122,21 +124,17 @@ if test x$enable_xft != xno; then
+ AC_DEFINE(USE_XFT, [1], [Use Xft])
+ SUPPORTS_XFT=1
+ AC_MSG_RESULT(yes)
++ MB_EXTRA_CFLAGS="$MB_EXTRA_CFLAGS $XFT_CFLAGS"
++ MB_EXTRA_LIBS="$MB_EXTRA_LIBS $XFT_LIBS"
+ fi
+ fi
+ fi
+
+ XLIBS_CFLAGS="$XLIBS_CLAGS $XFT_CFLAGS"
+-XLIBS_LIBS="$X_LIBS $XFT_LIBS -lX11 -lXext"
+-
+-MB_EXTRA_LIBS="$MB_EXTRA_LIBS $XLIBS_LIBS"
++XLIBS_LIBS="$XLIBS_LIBS $XFT_LIBS -lX11 -lXext"
+
+ fi
+
+-# do this here for freetype include
+-MB_EXTRA_CFLAGS="$MB_EXTRA_CFLAGS $XLIBS_CFLAGS"
+-
+-
+ dnl ------ Check for Pango ---------------------------------------------------
+
+ if test x$enable_pango != xno; then
+@@ -172,7 +170,7 @@ if test x$enable_png != xno; then
+ AC_DEFINE(USE_PNG, [1], [Use Png])
+ SUPPORTS_PNG=1
+ PNG_LIBS="-lpng -lz"
+- MB_EXTRA_LIBS="$MB_EXTRA_LIBS $XLIBS_LIBS $PNG_LIBS"
++ MB_EXTRA_LIBS="$MB_EXTRA_LIBS $PNG_LIBS"
+ else
+ AC_MSG_WARN([*** Cannot find PNG, disabling support])
+ enable_png=no
+@@ -340,6 +338,7 @@ AC_SUBST(MB_EXTRA_CFLAGS)
+ AC_SUBST(XLIBS_REQUIRED)
+ AC_SUBST(PANGO_REQUIRED)
+ AC_SUBST(PNG_REQUIRED)
++AC_SUBST(XFT_REQUIRED)
+
+ dnl ------ Below used for mbconfig.h ----------------------------------------
+
+Index: libmatchbox-1.9/libmb.pc.in
+===================================================================
+--- libmatchbox-1.9.orig/libmb.pc.in 2007-11-11 22:30:47.000000000 +0000
++++ libmatchbox-1.9/libmb.pc.in 2007-11-11 22:31:01.000000000 +0000
+@@ -7,6 +7,6 @@ Name: libmb
+ Description: Utility Library used by Matchbox utilities.
+ Version: @VERSION@
+
+-Requires: @XLIBS_REQUIRED@ @PANGO_REQUIRED@ @PNG_REQUIRED@
++Requires: @XLIBS_REQUIRED@ @PANGO_REQUIRED@ @PNG_REQUIRED@ @XFT_REQUIRED@
+ Libs: -L${libdir} -lmb @MB_EXTRA_LIBS@
+ Cflags: -I${includedir} @MB_EXTRA_CFLAGS@
diff --git a/recipes/libmatchbox/files/fix-configure-for-1.9.patch b/recipes/libmatchbox/files/fix-configure-for-1.9.patch
new file mode 100644
index 0000000000..990b738e66
--- /dev/null
+++ b/recipes/libmatchbox/files/fix-configure-for-1.9.patch
@@ -0,0 +1,14 @@
+diff -urNd ../libmatchbox-1.6-r1/libmatchbox-1.6/configure.ac libmatchbox-1.6/configure.ac
+--- ../libmatchbox-1.6-r1/libmatchbox-1.6/configure.ac 2005-01-11 21:47:39 +00:00
++++ libmatchbox-1.6/configure.ac 2005-03-14 03:06:25 +00:00
+@@ -2,9 +2,9 @@
+ AC_INIT([libmatchbox], 1.6, [mallum@handhelds.org])
+ AC_CONFIG_SRCDIR([libmb/mbtray.c])
+
++AC_CONFIG_AUX_DIR(.)
+ AM_INIT_AUTOMAKE()
+ AM_CONFIG_HEADER([config.h])
+-AC_CONFIG_AUX_DIR(.)
+
+ # Checks for programs.
+ AC_GNU_SOURCE
diff --git a/recipes/libmatchbox/files/reset-sigchld.patch b/recipes/libmatchbox/files/reset-sigchld.patch
new file mode 100644
index 0000000000..5792385d27
--- /dev/null
+++ b/recipes/libmatchbox/files/reset-sigchld.patch
@@ -0,0 +1,15 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+--- libmatchbox-1.9/libmb/mbutil.c~reset-sigchld
++++ libmatchbox-1.9/libmb/mbutil.c
+@@ -92,6 +92,7 @@
+ }
+
+ argv[nargs] = NULL;
++ signal(SIGCHLD, SIG_DFL);
+ rc = execvp (argv[0], argv);
+
+ for (i = 0; i < nargs; i++)
diff --git a/recipes/libmatchbox/files/svn-autofu-xsettings.patch b/recipes/libmatchbox/files/svn-autofu-xsettings.patch
new file mode 100644
index 0000000000..a5df4301ff
--- /dev/null
+++ b/recipes/libmatchbox/files/svn-autofu-xsettings.patch
@@ -0,0 +1,132 @@
+diff -urpN libmatchbox-1.7~orig/configure.ac libmatchbox-1.7/configure.ac
+--- libmatchbox-1.7~orig/configure.ac 2005-04-08 08:53:20.000000000 -0500
++++ libmatchbox-1.7/configure.ac 2006-02-23 00:08:20.000000000 -0600
+@@ -87,9 +87,13 @@ if test $have_libx11pc = yes; then
+ fi
+ # XXX : xau is missing from x11.pc - workaround is too add here
+ PKG_CHECK_MODULES(XLIBS, x11 xext $xft_pkg)
++ XLIBS_REQUIRED="x11 xext"
+ else
+
+ AC_PATH_XTRA
++if test x"$no_x" = x"yes"; then
++ AC_MSG_ERROR([*** Required X11 Headers and libraries not found.***])
++fi
+
+ XFT_LIBS=
+ XFT_CFLAGS=
+@@ -125,8 +129,12 @@ fi
+ XLIBS_CFLAGS="$XLIBS_CLAGS $XFT_CFLAGS"
+ XLIBS_LIBS="$X_LIBS $XFT_LIBS -lX11 -lXext"
+
++MB_EXTRA_LIBS="$MB_EXTRA_LIBS $XLIBS_LIBS"
++
+ fi
+
++# do this here for freetype include
++MB_EXTRA_CFLAGS="$MB_EXTRA_CFLAGS $XLIBS_CFLAGS"
+
+ dnl ------ Check for Pango ---------------------------------------------------
+
+@@ -135,6 +143,7 @@ if test x$enable_pango != xno; then
+ if test x$have_pango=xyes; then
+ AC_DEFINE(USE_PANGO, [1], [Use Pango])
+ SUPPORTS_PANGO=1
++ PANGO_REQUIRED="pango pangoxft"
+ else
+ AC_MSG_WARN([*** Cannot find pango, disabling support])
+ enable_pango=no
+@@ -152,6 +161,7 @@ if test x$enable_png != xno; then
+ PNG_CFLAGS=`$PKG_CONFIG --cflags libpng12`
+ AC_DEFINE(USE_PNG, [1], [Use Png])
+ SUPPORTS_PNG=1
++ PNG_REQUIRED="libpng12"
+ else
+ AC_MSG_RESULT(no)
+ # AC_CHECK_HEADERS(png.h, [ have_png_h="yes" ], [ have_png_h="no" ] )
+@@ -161,6 +171,7 @@ if test x$enable_png != xno; then
+ AC_DEFINE(USE_PNG, [1], [Use Png])
+ SUPPORTS_PNG=1
+ PNG_LIBS="-lpng -lz"
++ MB_EXTRA_LIBS="$MB_EXTRA_LIBS $XLIBS_LIBS $PNG_LIBS"
+ else
+ AC_MSG_WARN([*** Cannot find PNG, disabling support])
+ enable_png=no
+@@ -179,6 +190,7 @@ if test x$enable_jpeg != xno; then
+ AC_DEFINE(USE_JPG, [1], [Use JPEG])
+ SUPPORTS_JPEG=1
+ JPEG_LIBS="-ljpeg"
++ MB_EXTRA_LIBS="$MB_EXTRA_LIBS -ljpeg"
+ else
+ AC_MSG_WARN([*** Cannot find libjpeg, disabling support])
+ enable_jpeg=no
+@@ -231,6 +243,9 @@ if test x$enable_xsettings != xno; then
+ CPPFLAGS="$saved_CPPFLAGS"
+ LIBS="$saved_LIBS"
+
++ MB_EXTRA_LIBS="$MB_EXTRA_LIBS $XSET_LIBS"
++ MB_EXTRA_CFLAGS="$MB_EXTRA_CFLAGS $XSET_CFLAGS"
++
+ AC_DEFINE(USE_XSETTINGS, [1], [Use XSettings Client])
+
+ AC_MSG_RESULT([yes])
+@@ -319,6 +334,12 @@ AC_SUBST(GCC_WARNINGS)
+ AC_SUBST(XSET_LIBS)
+ AC_SUBST(XSET_CFLAGS)
+
++AC_SUBST(MB_EXTRA_LIBS)
++AC_SUBST(MB_EXTRA_CFLAGS)
++AC_SUBST(XLIBS_REQUIRED)
++AC_SUBST(PANGO_REQUIRED)
++AC_SUBST(PNG_REQUIRED)
++
+ dnl ------ Below used for mbconfig.h ----------------------------------------
+
+ AC_SUBST(SUPPORTS_PNG)
+diff -urpN libmatchbox-1.7~orig/libmb/Makefile.am libmatchbox-1.7/libmb/Makefile.am
+--- libmatchbox-1.7~orig/libmb/Makefile.am 2005-04-08 08:53:11.000000000 -0500
++++ libmatchbox-1.7/libmb/Makefile.am 2006-02-23 00:01:54.000000000 -0600
+@@ -18,11 +18,11 @@ source_c = mbmenu.c \
+
+ DATADIR=$(datadir)
+
+-AM_CFLAGS = @GCC_WARNINGS@ @XLIBS_CFLAGS@ @PANGO_CFLAGS@ @PNG_CFLAGS@ -DDATADIR=\"$(datadir)\"
++AM_CFLAGS = @GCC_WARNINGS@ @XLIBS_CFLAGS@ @PANGO_CFLAGS@ @PNG_CFLAGS@ @XSET_LIBS@ -DDATADIR=\"$(datadir)\"
+
+ lib_LTLIBRARIES = libmb.la
+ libmb_la_SOURCES = $(source_c) $(source_h)
+-libmb_la_LIBADD = @XLIBS_LIBS@ @PANGO_LIBS@ @JPEG_LIBS@ @PNG_LIBS@
++libmb_la_LIBADD = @XLIBS_LIBS@ @PANGO_LIBS@ @JPEG_LIBS@ @PNG_LIBS@ @XSET_CFLAGS@
+
+ # http://sources.redhat.com/autobook/autobook/autobook_91.html#SEC91
+ # current : revision : age
+diff -urpN libmatchbox-1.7~orig/libmb/mbtray.c libmatchbox-1.7/libmb/mbtray.c
+--- libmatchbox-1.7~orig/libmb/mbtray.c 2006-02-23 00:01:07.000000000 -0600
++++ libmatchbox-1.7/libmb/mbtray.c 2006-02-23 00:09:45.000000000 -0600
+@@ -26,7 +26,13 @@
+
+ */
+
++#ifdef HAVE_CONFIG_H
++#include "config.h"
++#endif
++
++#ifndef _GNU_SOURCE
+ #define _GNU_SOURCE
++#endif
+
+ #include "mbtray.h"
+
+diff -urpN libmatchbox-1.7~orig/libmb.pc.in libmatchbox-1.7/libmb.pc.in
+--- libmatchbox-1.7~orig/libmb.pc.in 2005-03-20 11:43:26.000000000 -0600
++++ libmatchbox-1.7/libmb.pc.in 2006-02-23 00:11:18.000000000 -0600
+@@ -6,5 +6,7 @@ includedir=@includedir@
+ Name: libmb
+ Description: Utility Library used by Matchbox utilities.
+ Version: @VERSION@
+-Libs: -L${libdir} -lmb @XLIBS_LIBS@ @PANGO_LIBS@ @JPEG_LIBS@ @PNG_LIBS@ @XSET_LIBS@
+-Cflags: -I${includedir} @XLIBS_CFLAGS@ @PANGO_CFLAGS@ @PNG_CFLAGS@ @XSET_CFLAGS@
++
++Requires: @XLIBS_REQUIRED@ @PANGO_REQUIRED@ @PNG_REQUIRED@
++Libs: -L${libdir} -lmb @MB_EXTRA_LIBS@
++Cflags: -I${includedir} @MB_EXTRA_CFLAGS@
diff --git a/recipes/libmatchbox/files/svn-code-misc-xsettings.patch b/recipes/libmatchbox/files/svn-code-misc-xsettings.patch
new file mode 100644
index 0000000000..52b1507505
--- /dev/null
+++ b/recipes/libmatchbox/files/svn-code-misc-xsettings.patch
@@ -0,0 +1,101 @@
+diff -uprN libmatchbox-1.7~orig/libmb/mbexp.c libmatchbox-1.7/libmb/mbexp.c
+--- libmatchbox-1.7~orig/libmb/mbexp.c 2006-02-23 00:33:19.000000000 -0600
++++ libmatchbox-1.7/libmb/mbexp.c 2006-02-23 00:40:06.000000000 -0600
+@@ -406,6 +406,10 @@ mb_font_new(Display *dpy,
+ #endif
+
+ font = malloc(sizeof(MBFont));
++
++ if (font == NULL)
++ return NULL;
++
+ memset(font, 0, sizeof(MBFont));
+
+ if (family != NULL)
+@@ -425,9 +429,12 @@ mb_font_new(Display *dpy,
+ font->pgo_fontmap = pango_xft_get_font_map (font->dpy, DefaultScreen(dpy));
+ font->fontdes = pango_font_description_new ();
+
+- /* -- Needed ?
+- pango_context_set_language (w->pgo, pango_language_from_string ("ar_AE"));
+- */
++ /* If Pango is mis-setup the above will fail */
++ if (font->pgo_context == NULL || font->pgo_fontmap == NULL || font->fontdes == NULL)
++ {
++ free(font);
++ return NULL;
++ }
+
+ #elif defined (USE_XFT)
+
+@@ -581,8 +588,11 @@ MBFont*
+ mb_font_new_from_string(Display *dpy, char *spec)
+ {
+ MBFont *font = mb_font_new(dpy, NULL);
+- mb_font_set_from_string(font, spec);
+- return font;
++
++ if (font)
++ return mb_font_set_from_string(font, spec);
++
++ return NULL;
+ }
+
+ MBFont*
+@@ -1091,7 +1101,13 @@ mb_font_render_simple (MBFont *
+ if (!len) { free(str); return 0; }
+
+ if ((opts & MB_FONT_RENDER_OPTS_CLIP_TRAIL) && len > 3)
++ {
++ /* Avoid having a space before the elipsis */
++ while (len-1 >= 0 && str[len-1] == ' ')
++ len--;
++
+ want_dots = True;
++ }
+ }
+ else
+ {
+diff -uprN libmatchbox-1.7~orig/libmb/mbmenu.c libmatchbox-1.7/libmb/mbmenu.c
+--- libmatchbox-1.7~orig/libmb/mbmenu.c 2006-02-23 00:33:19.000000000 -0600
++++ libmatchbox-1.7/libmb/mbmenu.c 2006-02-23 00:42:23.000000000 -0600
+@@ -19,6 +19,10 @@
+
+ #define _GNU_SOURCE
+
++#ifdef HAVE_CONFIG_H
++#include "config.h"
++#endif
++
+ #include "mbmenu.h"
+
+ #define MBMAX(x,y) ((x>y)?(x):(y))
+@@ -664,7 +668,7 @@ mb_menu_check_scroll_button(MBMenu *mb,M
+ return WANT_SCROLL_DOWN;
+ }
+
+- /*
++#if 0
+ for(tmpi = m->too_big_start_item;
+ tmpi != NULL;
+ tmpi = tmpi->next_item)
+@@ -679,7 +683,7 @@ mb_menu_check_scroll_button(MBMenu *mb,M
+ MENUDBG("%s() retruning want scroll up\n", __func__);
+ return WANT_SCROLL_UP;
+ }
+- */
++#endif /* #if 0 */
+
+ if (m->too_big_end_item
+ && y_pos > (m->too_big_end_item->y+m->too_big_end_item->h))
+diff -uprN libmatchbox-1.7~orig/libmb/mbpixbuf.c libmatchbox-1.7/libmb/mbpixbuf.c
+--- libmatchbox-1.7~orig/libmb/mbpixbuf.c 2006-02-23 00:33:19.000000000 -0600
++++ libmatchbox-1.7/libmb/mbpixbuf.c 2006-02-23 00:43:02.000000000 -0600
+@@ -907,6 +907,7 @@ mb_pixbuf_new_extended(Display *dpy,
+ fprintf(stderr, "mbpixbuf: unable to use XShm. DISPLAY remote?\n");
+ pb->have_shm = False;
+ }
++ else XShmDetach(pb->dpy, &shminfo);
+
+ shmdt(shminfo.shmaddr);
+ shmctl(shminfo.shmid, IPC_RMID, 0);
diff --git a/recipes/libmatchbox/files/svn-explicit-types.patch b/recipes/libmatchbox/files/svn-explicit-types.patch
new file mode 100644
index 0000000000..3ec1295a6b
--- /dev/null
+++ b/recipes/libmatchbox/files/svn-explicit-types.patch
@@ -0,0 +1,363 @@
+diff -bur libmatchbox-1.7~orig/libmb/hash.c libmatchbox-1.7/libmb/hash.c
+--- libmatchbox-1.7~orig/libmb/hash.c 2005-03-20 11:43:25.000000000 -0600
++++ libmatchbox-1.7/libmb/hash.c 2006-02-19 14:40:43.000000000 -0600
+@@ -68,7 +68,7 @@
+ } else {
+ free((void *) np->value);
+ }
+- if ((np->value = strdup(val)) == NULL)
++ if ((np->value = (unsigned char*)strdup(val)) == NULL)
+ return NULL;
+ return np;
+ }
+diff -bur libmatchbox-1.7~orig/libmb/mbdotdesktop.c libmatchbox-1.7/libmb/mbdotdesktop.c
+--- libmatchbox-1.7~orig/libmb/mbdotdesktop.c 2005-03-28 16:56:35.000000000 -0600
++++ libmatchbox-1.7/libmb/mbdotdesktop.c 2006-02-19 14:44:05.000000000 -0600
+@@ -200,7 +200,7 @@
+ /* Source iterator, destination iterator */
+ char *s, *d;
+
+- s = source = mb_dotdesktop_get (dd, "Exec");
++ s = source = (char*)mb_dotdesktop_get (dd, "Exec");
+ if (source == NULL)
+ return NULL;
+
+@@ -348,7 +348,7 @@
+ {
+ theme_name_cur = NULL;
+ strncpy(theme_name_cur,
+- mb_dotdesktop_get(dd, "Inherits"), 512);
++ (char*)mb_dotdesktop_get(dd, "Inherits"), 512);
+ i = 2;
+ }
+ mb_dotdesktop_free(dd);
+@@ -450,13 +450,13 @@
+ }
+ memset(entry_cur, 0, sizeof(MBDotDesktopFolderEntry));
+
+- entry_cur->name = strdup(mb_dotdesktop_get(dd, "Name"));
+- entry_cur->match = strdup(mb_dotdesktop_get(dd, "Match"));
++ entry_cur->name = (unsigned char*)strdup((char*)mb_dotdesktop_get(dd, "Name"));
++ entry_cur->match = (unsigned char*)strdup((char*)mb_dotdesktop_get(dd, "Match"));
+
+ if (mb_dotdesktop_get(dd, "Icon"))
+ {
+ entry_cur->icon
+- = strdup(mb_dotdesktop_get(dd, "Icon"));
++ = (unsigned char*)strdup((char*)mb_dotdesktop_get(dd, "Icon"));
+ }
+
+ folders->n_entries++;
+diff -bur libmatchbox-1.7~orig/libmb/mbexp.c libmatchbox-1.7/libmb/mbexp.c
+--- libmatchbox-1.7~orig/libmb/mbexp.c 2005-03-20 11:43:25.000000000 -0600
++++ libmatchbox-1.7/libmb/mbexp.c 2006-02-19 14:50:42.000000000 -0600
+@@ -894,7 +894,7 @@
+ int encoding,
+ int opts)
+ {
+- int len = strlen(txt);
++ int len = strlen((char*)txt);
+
+ /* we cant clip single char string */
+ if (len < 2) return 0;
+@@ -907,7 +907,7 @@
+ memset(str, 0, len+5);
+
+ /* len += 2; */
+- strcpy(str, txt);
++ strcpy((char*)str, (char*)txt);
+
+ do {
+ /* go back a glyth */
+@@ -1066,12 +1066,12 @@
+ if (!_mb_font_is_font_object_fresh (font))
+ _mb_font_load(font);
+
+- orig_len = len = strlen(text);
++ orig_len = len = strlen((char*)text);
+
+ str = malloc(len+3);
+ memset(str, 0, len+3);
+
+- strcpy(str, text);
++ strcpy((char*)str, (char*)text);
+
+ render_w = mb_font_get_txt_width(font, str, len, encoding);
+
+@@ -1147,12 +1147,12 @@
+ if (!_mb_font_is_font_object_fresh (font))
+ _mb_font_load(font);
+
+- orig_len = len = strlen(text);
++ orig_len = len = strlen((char*)text);
+
+ str = malloc(len+3);
+ memset(str, 0, len+3);
+
+- strcpy(str, text);
++ strcpy((char*)str, (char*)text);
+
+ render_w = mb_font_get_txt_width(font, str, len, encoding);
+
+@@ -1257,7 +1257,7 @@
+ {
+ if (layout->txt) free(layout->txt);
+
+- layout->txt = strdup(text);
++ layout->txt = (unsigned char*)strdup((char*)text);
+ layout->txt_encoding = encoding;
+ }
+
+@@ -1304,7 +1304,7 @@
+ MBFontRenderOpts opts,
+ Bool do_render)
+ {
+- unsigned char *orig_p, *p = strdup(layout->txt);
++ unsigned char *orig_p, *p = (unsigned char*)strdup((char*)layout->txt);
+ unsigned char *q = p;
+ unsigned char *backtrack = NULL;
+ int v_offset = 0;
+@@ -1326,7 +1326,7 @@
+
+ /* XXX q should be current_line_start */
+
+- cur_width = mb_font_get_txt_width(layout->font, q, strlen(q),
++ cur_width = mb_font_get_txt_width(layout->font, q, strlen((char*)q),
+ layout->txt_encoding) ;
+
+ if (cur_width > layout->width )
+@@ -1405,7 +1405,7 @@
+
+ if (layout->_have_autocalc_size) /* Easy case */
+ {
+- unsigned char *str = strdup(layout->txt), *start = NULL, *orig = NULL;
++ char *str = strdup((char*)layout->txt), *start = NULL, *orig = NULL;
+
+ orig = str;
+
+@@ -1426,7 +1426,7 @@
+ x,
+ y,
+ layout->width,
+- start,
++ (unsigned char*)start,
+ layout->txt_encoding,
+ 0 );
+
+diff -bur libmatchbox-1.7~orig/libmb/mbexp.h libmatchbox-1.7/libmb/mbexp.h
+--- libmatchbox-1.7~orig/libmb/mbexp.h 2005-03-20 11:43:25.000000000 -0600
++++ libmatchbox-1.7/libmb/mbexp.h 2006-02-19 14:51:20.000000000 -0600
+@@ -92,7 +92,7 @@
+ typedef struct MBFont
+ {
+ Display *dpy;
+- unsigned char *family;
++ char *family;
+ int weight;
+ int slant;
+ int pt_size;
+diff -bur libmatchbox-1.7~orig/libmb/mbmenu.c libmatchbox-1.7/libmb/mbmenu.c
+--- libmatchbox-1.7~orig/libmb/mbmenu.c 2005-03-20 11:43:25.000000000 -0600
++++ libmatchbox-1.7/libmb/mbmenu.c 2006-02-19 14:53:33.000000000 -0600
+@@ -726,25 +726,25 @@
+ if (mb_dotdesktop_get(theme, "MenuBgColor"))
+ {
+ mb_menu_set_col(mb, MBMENU_SET_BG_COL,
+- mb_dotdesktop_get(theme, "MenuBgColor"));
++ (char*)mb_dotdesktop_get(theme, "MenuBgColor"));
+ }
+
+ if (mb_dotdesktop_get(theme, "MenuFont"))
+ {
+ mb_menu_set_font (mb,
+- mb_dotdesktop_get(theme, "MenuFont"));
++ (char*)mb_dotdesktop_get(theme, "MenuFont"));
+ }
+
+ if (mb_dotdesktop_get(theme, "MenuFgColor"))
+ {
+ mb_menu_set_col(mb, MBMENU_SET_FG_COL,
+- mb_dotdesktop_get(theme, "MenuFgColor"));
++ (char*)mb_dotdesktop_get(theme, "MenuFgColor"));
+ }
+
+ if (mb_dotdesktop_get(theme, "MenuHlColor"))
+ {
+ mb_menu_set_col(mb, MBMENU_SET_HL_COL,
+- mb_dotdesktop_get(theme, "MenuHlColor"));
++ (char*)mb_dotdesktop_get(theme, "MenuHlColor"));
+ mb->have_highlight_col = True;
+ }
+ else mb->have_highlight_col = False;
+@@ -752,7 +752,7 @@
+ if (mb_dotdesktop_get(theme, "MenuBdColor"))
+ {
+ mb_menu_set_col(mb, MBMENU_SET_BD_COL,
+- mb_dotdesktop_get(theme, "MenuBdColor"));
++ (char*)mb_dotdesktop_get(theme, "MenuBdColor"));
+ }
+
+ /* xxx currently broke xxx
+diff -bur libmatchbox-1.7~orig/libmb/mbpixbuf.c libmatchbox-1.7/libmb/mbpixbuf.c
+--- libmatchbox-1.7~orig/libmb/mbpixbuf.c 2005-03-30 06:21:26.000000000 -0600
++++ libmatchbox-1.7/libmb/mbpixbuf.c 2006-02-19 14:55:39.000000000 -0600
+@@ -418,7 +418,7 @@
+ col[0] = 0;
+ s[0] = 0;
+ len = strlen(line);
+- strncpy(cmap[j].str, line, cpp);
++ strncpy((char*)cmap[j].str, line, cpp);
+ cmap[j].str[cpp] = 0;
+ cmap[j].r = -1;
+ cmap[j].transp = 0;
+@@ -537,7 +537,7 @@
+ i--;
+ for (j = 0; j < ncolors; j++)
+ {
+- if (!strcmp(col, cmap[j].str))
++ if (!strcmp(col, (char*)cmap[j].str))
+ {
+ if (transp && cmap[j].transp)
+ {
+@@ -1086,7 +1086,8 @@
+ int num_of_cols = 1 << pb->depth;
+
+ Window chld;
+- unsigned int rx, rw, rh, rb, rdepth;
++ int rx;
++ unsigned int rw, rh, rb, rdepth;
+
+ XShmSegmentInfo shminfo;
+
+diff -bur libmatchbox-1.7~orig/libmb/mbtray.c libmatchbox-1.7/libmb/mbtray.c
+--- libmatchbox-1.7~orig/libmb/mbtray.c 2005-03-20 11:43:25.000000000 -0600
++++ libmatchbox-1.7/libmb/mbtray.c 2006-02-19 14:59:20.000000000 -0600
+@@ -204,7 +204,7 @@
+ {
+ XEvent xevent;
+ Atom timestamp_atom = XInternAtom(dpy, "_MB_DOCK_TIMESTAMP", False);
+- char c = 'a';
++ unsigned char c = 'a';
+
+ XChangeProperty (dpy, RootWindow(dpy, DefaultScreen(dpy)),
+ timestamp_atom, timestamp_atom,
+@@ -615,7 +615,7 @@
+
+ mb->tray_id = 0;
+
+- mb->app_name = app_name ? strdup(app_name) : strdup("unnamed");
++ mb->app_name = (unsigned char*)(app_name ? strdup((char*)app_name) : strdup("unnamed"));
+
+ mb->have_cached_bg = False;
+ mb->cached_bg = NULL;
+@@ -638,7 +638,7 @@
+ unsigned char *name)
+ {
+ if (mb->app_name) free(mb->app_name);
+- mb->app_name = strdup(name);
++ mb->app_name = (unsigned char*)strdup((char*)name);
+ }
+
+ void
+@@ -649,7 +649,7 @@
+
+ if (mb->context_info) free(mb->context_info);
+
+- mb->context_info = strdup(info);
++ mb->context_info = (unsigned char*)strdup((char*)info);
+
+ if (mb->win) _set_win_context_hint(mb);
+
+@@ -1055,7 +1055,7 @@
+ mb->atoms[ATOM_NET_WM_NAME],
+ mb->atoms[ATOM_UTF8_STRING],
+ 8,
+- PropModeReplace, mb->app_name, strlen(mb->app_name));
++ PropModeReplace, mb->app_name, strlen((char*)mb->app_name));
+ }
+
+ static void
+@@ -1068,7 +1068,7 @@
+ mb->atoms[ATOM_UTF8_STRING],
+ 8,
+ PropModeReplace,
+- mb->context_info, strlen(mb->context_info));
++ mb->context_info, strlen((char*)mb->context_info));
+ }
+ }
+
+@@ -1170,7 +1170,7 @@
+
+ TRAYDBG("%s() set w: %i, h: %i\n", __func__, mb->w, mb->h);
+
+- XSetStandardProperties(mb->dpy, mb->win, mb->app_name,
++ XSetStandardProperties(mb->dpy, mb->win, (char*)mb->app_name,
+ NULL, 0, NULL, 0, &size_hints);
+
+ _set_win_utf8_name(mb);
+@@ -1186,7 +1186,7 @@
+ mb_tray_app_tray_send_message(MBTrayApp *mb, unsigned char* msg, int timeout)
+ {
+ unsigned char buf[20];
+- int msg_len = strlen(msg);
++ int msg_len = strlen((char*)msg);
+ int id = 12345; /* TODO id should unique */
+ int bytes_sent = 0;
+
+diff -bur libmatchbox-1.7~orig/libmb/mbutil.c libmatchbox-1.7/libmb/mbutil.c
+--- libmatchbox-1.7~orig/libmb/mbutil.c 2005-03-28 17:08:38.000000000 -0600
++++ libmatchbox-1.7/libmb/mbutil.c 2006-02-19 15:02:19.000000000 -0600
+@@ -111,9 +111,8 @@
+
+ Atom type;
+ int format;
+- long bytes_after;
+ unsigned char *data = NULL;
+- long n_items;
++ unsigned long n_items, bytes_after;
+ int result;
+
+ unsigned char *p, *key = NULL, *value = NULL;
+@@ -153,9 +152,9 @@
+
+ *p = '\0';
+
+- if (!strcmp(key, bin_name))
++ if (!strcmp((char*)key, (char*)bin_name))
+ {
+- win_found = atoi(value); /* XXX should check window ID
++ win_found = atoi((char*)value); /* XXX should check window ID
+ actually exists */
+ XFree (data);
+ return ( (win_found > 0) ? win_found : None );
+@@ -175,9 +174,8 @@
+
+ Atom type;
+ int format;
+- long bytes_after;
+ unsigned char *data = NULL;
+- long n_items;
++ unsigned long n_items, bytes_after;
+ int result;
+
+ result = XGetWindowProperty (dpy, RootWindow(dpy, DefaultScreen(dpy)),
+@@ -195,7 +193,7 @@
+
+
+
+- if (strstr(data, bin_name) != NULL)
++ if (strstr((char*)data, (char*)bin_name) != NULL)
+ {
+ XFree(data);
+ return True;
+@@ -282,9 +280,8 @@
+
+ Atom type;
+ int format;
+- long bytes_after;
+ Pixmap *data = NULL;
+- long n_items;
++ unsigned long n_items, bytes_after;
+ int result;
+
+ result = XGetWindowProperty (dpy, RootWindow(dpy, DefaultScreen(dpy)),
diff --git a/recipes/libmatchbox/libmatchbox.inc b/recipes/libmatchbox/libmatchbox.inc
new file mode 100644
index 0000000000..71682b336a
--- /dev/null
+++ b/recipes/libmatchbox/libmatchbox.inc
@@ -0,0 +1,23 @@
+SECTION = "x11/libs"
+DESCRIPTION = "Matchbox window manager core library"
+LICENSE = "GPL"
+DEPENDS = "virtual/libx11 libxext expat libxft jpeg libpng zlib libxsettings-client"
+PR = "r2"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--enable-jpeg --enable-expat --enable-xsettings"
+
+S = "${WORKDIR}/libmatchbox-${PV}"
+
+headers = "hash.h mbconfig.h mbdotdesktop.h mbexp.h \
+ mb.h mbmenu.h mbpixbuf.h mbtray.h mbutil.h"
+
+do_stage () {
+ install -d ${STAGING_INCDIR}/libmb
+ for h in ${headers}; do
+ install -m 0644 ${S}/libmb/$h ${STAGING_INCDIR}/libmb/
+ done
+
+ oe_libinstall -a -so -C libmb libmb ${STAGING_LIBDIR}
+}
diff --git a/recipes/libmatchbox/libmatchbox_1.9.bb b/recipes/libmatchbox/libmatchbox_1.9.bb
new file mode 100644
index 0000000000..b462dc5aca
--- /dev/null
+++ b/recipes/libmatchbox/libmatchbox_1.9.bb
@@ -0,0 +1,14 @@
+require libmatchbox.inc
+PR = "r6"
+
+SRC_URI = "\
+ http://projects.o-hand.com/matchbox/sources/${PN}/${PV}/${PN}-${PV}.tar.gz \
+ file://16bppfixes.patch;patch=1 \
+ file://configure_fixes.patch;patch=1 \
+ file://reset-sigchld.patch;patch=1 \
+ file://check.m4\
+"
+
+do_configure_prepend () {
+ cp ${WORKDIR}/check.m4 ${S}/
+}