aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/obsolete/libmatchbox
diff options
context:
space:
mode:
authorFrans Meulenbroeks <fransmeulenbroeks@gmail.com>2010-09-25 19:28:42 +0200
committerFrans Meulenbroeks <fransmeulenbroeks@gmail.com>2010-09-25 19:40:45 +0200
commit1b18663c47f31e968b43e0e671d762ce79c0c7c8 (patch)
treef38c2dc672ce6cb20528d4375d53d0d03f27ca7e /recipes/obsolete/libmatchbox
parenta58ba9c0e41edcb7e5b4b6d91db331513c7e9762 (diff)
downloadopenembedded-1b18663c47f31e968b43e0e671d762ce79c0c7c8.tar.gz
libmatchbox : moved unused files to obsolete dir
Signed-off-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com>
Diffstat (limited to 'recipes/obsolete/libmatchbox')
-rw-r--r--recipes/obsolete/libmatchbox/files/16bppfixes-2.patch258
-rw-r--r--recipes/obsolete/libmatchbox/files/autofoo.patch19
-rw-r--r--recipes/obsolete/libmatchbox/files/fix-configure-for-1.9.patch14
-rw-r--r--recipes/obsolete/libmatchbox/files/svn-autofu-xsettings.patch132
-rw-r--r--recipes/obsolete/libmatchbox/files/svn-code-misc-xsettings.patch101
-rw-r--r--recipes/obsolete/libmatchbox/files/svn-explicit-types.patch363
6 files changed, 887 insertions, 0 deletions
diff --git a/recipes/obsolete/libmatchbox/files/16bppfixes-2.patch b/recipes/obsolete/libmatchbox/files/16bppfixes-2.patch
new file mode 100644
index 0000000000..ab9cdc74a5
--- /dev/null
+++ b/recipes/obsolete/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/obsolete/libmatchbox/files/autofoo.patch b/recipes/obsolete/libmatchbox/files/autofoo.patch
new file mode 100644
index 0000000000..ad3be578e4
--- /dev/null
+++ b/recipes/obsolete/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/obsolete/libmatchbox/files/fix-configure-for-1.9.patch b/recipes/obsolete/libmatchbox/files/fix-configure-for-1.9.patch
new file mode 100644
index 0000000000..990b738e66
--- /dev/null
+++ b/recipes/obsolete/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/obsolete/libmatchbox/files/svn-autofu-xsettings.patch b/recipes/obsolete/libmatchbox/files/svn-autofu-xsettings.patch
new file mode 100644
index 0000000000..a5df4301ff
--- /dev/null
+++ b/recipes/obsolete/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/obsolete/libmatchbox/files/svn-code-misc-xsettings.patch b/recipes/obsolete/libmatchbox/files/svn-code-misc-xsettings.patch
new file mode 100644
index 0000000000..52b1507505
--- /dev/null
+++ b/recipes/obsolete/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/obsolete/libmatchbox/files/svn-explicit-types.patch b/recipes/obsolete/libmatchbox/files/svn-explicit-types.patch
new file mode 100644
index 0000000000..3ec1295a6b
--- /dev/null
+++ b/recipes/obsolete/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)),