Этот коммит содержится в:
T
2024-09-09 08:52:07 +00:00
Коммит f9cc65cfda
65988 изменённых файлов: 26357421 добавлений и 0 удалений

Просмотреть файл

@@ -0,0 +1,260 @@
Upstream-Status: Pending
--- 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);
+ }
}
}
}

Просмотреть файл

@@ -0,0 +1,38 @@
Upstream-Status: Accepted
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);
}
}

Просмотреть файл

@@ -0,0 +1,21 @@
#
# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
#
Upstream-Status: Inappropriate [configuration]
--- 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

Просмотреть файл

@@ -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
])

Просмотреть файл

@@ -0,0 +1,81 @@
---
configure.ac | 15 +++++++--------
libmb.pc.in | 2 +-
2 files changed, 8 insertions(+), 9 deletions(-)
Upstream-Status: Inappropriate [configuration]
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@

Просмотреть файл

@@ -0,0 +1,16 @@
Upstream-Status: Inappropriate [configuration]
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

Просмотреть файл

@@ -0,0 +1,23 @@
matchbox environment start fail on x86-64 target, while ok on x86 target. Root
cause is libmatchbox use "0"(int) as termination indicator when calling
XftFontOpen, which in turn called FcPatternVapBuild(in fontconfig). It try to
get the "0" as char* and fetch wrong value, as int and char* has different size
on x86-64. This patch forces a NULL pointer as terminator to fix it.
Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
Upstream-Status: Accepted
Index: libmatchbox-1.9/libmb/mbexp.c
===================================================================
--- libmatchbox-1.9.orig/libmb/mbexp.c 2010-08-28 06:33:25.000000000 +0800
+++ libmatchbox-1.9/libmb/mbexp.c 2010-08-28 06:30:05.000000000 +0800
@@ -348,7 +348,7 @@
XFT_SIZE, XftTypeDouble , (double)font->pt_size,
XFT_WEIGHT, XftTypeInteger, weight,
XFT_SLANT, XftTypeInteger , slant,
- 0);
+ NULL);
if (font->font != NULL ) result = 2;