aboutsummaryrefslogtreecommitdiffstats
path: root/packages/obsolete
diff options
context:
space:
mode:
authorKoen Kooi <koen@openembedded.org>2007-01-14 19:49:17 +0000
committerKoen Kooi <koen@openembedded.org>2007-01-14 19:49:17 +0000
commit09a309304ed0ca5fda7c2e7df5b48536812c8e2d (patch)
tree6a703fc3ccd5cf2725fa0b10b779c8867d020d74 /packages/obsolete
parentc841192bd7b5665bce645a62e8172669de74a016 (diff)
downloadopenembedded-09a309304ed0ca5fda7c2e7df5b48536812c8e2d.tar.gz
libsql-qpe: move it to packages/obsolete.
The main reason for this is the thread on the mailinglist, the secondary reason is the the opie people decided to b0rk their patches so they don't apply anymore.
Diffstat (limited to 'packages/obsolete')
-rw-r--r--packages/obsolete/libsdl/.mtn2git_empty0
-rw-r--r--packages/obsolete/libsdl/libsdl-qpe-1.2.7/.mtn2git_empty0
-rw-r--r--packages/obsolete/libsdl/libsdl-qpe-1.2.7/SDL-Akita.patch37
-rw-r--r--packages/obsolete/libsdl/libsdl-qpe-1.2.7/acinclude.m4189
-rw-r--r--packages/obsolete/libsdl/libsdl-qpe-1.2.7/agawa-piro-mickey.patch2065
-rw-r--r--packages/obsolete/libsdl/libsdl-qpe-1.2.7/fixlibs.patch25
-rw-r--r--packages/obsolete/libsdl/libsdl-qpe-1.2.7/gcc34.patch176
-rw-r--r--packages/obsolete/libsdl/libsdl-qpe-1.2.7/ipaq.patch143
-rw-r--r--packages/obsolete/libsdl/libsdl-qpe-1.2.7/kill-stdc++.patch408
-rw-r--r--packages/obsolete/libsdl/libsdl-qpe-1.2.7/mouse.patch47
-rw-r--r--packages/obsolete/libsdl/libsdl-qpe-1.2.7/pygame.patch196
-rw-r--r--packages/obsolete/libsdl/libsdl-qpe_1.2.7.bb57
12 files changed, 3343 insertions, 0 deletions
diff --git a/packages/obsolete/libsdl/.mtn2git_empty b/packages/obsolete/libsdl/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/obsolete/libsdl/.mtn2git_empty
diff --git a/packages/obsolete/libsdl/libsdl-qpe-1.2.7/.mtn2git_empty b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/.mtn2git_empty
diff --git a/packages/obsolete/libsdl/libsdl-qpe-1.2.7/SDL-Akita.patch b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/SDL-Akita.patch
new file mode 100644
index 0000000000..b47a127398
--- /dev/null
+++ b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/SDL-Akita.patch
@@ -0,0 +1,37 @@
+--- SDL-1.2.7/src/video/qtopia/SDL_sysvideo.cc.orig 2005-07-23 14:31:20.060123510 +0200
++++ SDL-1.2.7/src/video/qtopia/SDL_sysvideo.cc 2005-07-23 14:38:49.000000000 +0200
+@@ -109,6 +109,7 @@
+ MACHINE_SHARP_SLC760,
+ MACHINE_SHARP_SLC860,
+ MACHINE_SHARP_SL6000,
++ MACHINE_SHARP_SLC1000,
+ MACHINE_IPAQ,
+ MACHINE_MAX
+ } machine_t;
+@@ -123,6 +124,7 @@
+ { "Sharp", "SL-C760", 0 },
+ { "Sharp", "SL-C860", 0 },
+ { "Sharp", "SL-6000", 0 },
++ { "Sharp", "SL-C1000", 0 },
+ { "HP", "HP IPAQ", 0 },
+ };
+
+@@ -428,6 +430,8 @@
+ machine = MACHINE_SHARP_SLC760;
+ else if (strstr(buf, "SHARP Boxer") != NULL)
+ machine = MACHINE_SHARP_SLC860;
++ else if (strstr(buf, "SHARP Akita") != NULL)
++ machine = MACHINE_SHARP_SLC1000;
+ else if ( ODevice::inst ( )-> series ( ) == Model_iPAQ )
+ machine = MACHINE_IPAQ;
+ else
+@@ -523,7 +527,8 @@
+ machine == MACHINE_SHARP_SLC750 ||
+ machine == MACHINE_SHARP_SLC760 ||
+ machine == MACHINE_SHARP_SLC860 || // ¾Ü¤·¤¤¤³¤È¤ï¤«¤é¤ó¤±¤É¤È¤ê¤¢¤¨¤º
+- machine == MACHINE_SHARP_SL6000 ) { // ¾Ü¤·¤¤¤³¤È¤ï¤«¤é¤ó¤±¤É¤È¤ê¤¢¤¨¤º
++ machine == MACHINE_SHARP_SL6000 ||
++ machine == MACHINE_SHARP_SLC1000 ) { // ¾Ü¤·¤¤¤³¤È¤ï¤«¤é¤ó¤±¤É¤È¤ê¤¢¤¨¤º
+ is_VGA_machine = true;
+ }else {
+ is_VGA_machine = false;
diff --git a/packages/obsolete/libsdl/libsdl-qpe-1.2.7/acinclude.m4 b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/acinclude.m4
new file mode 100644
index 0000000000..ca2df9d5e5
--- /dev/null
+++ b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/acinclude.m4
@@ -0,0 +1,189 @@
+# Local macros for the SDL configure.in script
+
+dnl Function to link an architecture specific file
+dnl LINK_ARCH_SRC(source_dir, arch, source_file)
+AC_DEFUN([COPY_ARCH_SRC],
+[
+ old="$srcdir/$1/$2/$3"
+ new="$1/$3"
+ if test ! -d $1; then
+ echo "Creating directory $1"
+ mkdir -p $1
+ fi
+ echo "Copying $old -> $new"
+ cat >$new <<__EOF__
+/* WARNING: This file was automatically generated!
+ * Original: $old
+ */
+__EOF__
+ cat >>$new <$old
+])
+
+#
+# --- esd.m4 ---
+#
+# Configure paths for ESD
+# Manish Singh 98-9-30
+# stolen back from Frank Belew
+# stolen from Manish Singh
+# Shamelessly stolen from Owen Taylor
+
+dnl AM_PATH_ESD([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
+dnl Test for ESD, and define ESD_CFLAGS and ESD_LIBS
+dnl
+AC_DEFUN([AM_PATH_ESD],
+[dnl
+dnl Get the cflags and libraries from the esd-config script
+dnl
+AC_ARG_WITH(esd-prefix,[ --with-esd-prefix=PFX Prefix where ESD is installed (optional)],
+ esd_prefix="$withval", esd_prefix="")
+AC_ARG_WITH(esd-exec-prefix,[ --with-esd-exec-prefix=PFX Exec prefix where ESD is installed (optional)],
+ esd_exec_prefix="$withval", esd_exec_prefix="")
+AC_ARG_ENABLE(esdtest, [ --disable-esdtest Do not try to compile and run a test ESD program],
+ , enable_esdtest=yes)
+
+ if test x$esd_exec_prefix != x ; then
+ esd_args="$esd_args --exec-prefix=$esd_exec_prefix"
+ if test x${ESD_CONFIG+set} != xset ; then
+ ESD_CONFIG=$esd_exec_prefix/bin/esd-config
+ fi
+ fi
+ if test x$esd_prefix != x ; then
+ esd_args="$esd_args --prefix=$esd_prefix"
+ if test x${ESD_CONFIG+set} != xset ; then
+ ESD_CONFIG=$esd_prefix/bin/esd-config
+ fi
+ fi
+
+ AC_PATH_PROG(ESD_CONFIG, esd-config, no)
+ min_esd_version=ifelse([$1], ,0.2.7,$1)
+ AC_MSG_CHECKING(for ESD - version >= $min_esd_version)
+ no_esd=""
+ if test "$ESD_CONFIG" = "no" ; then
+ no_esd=yes
+ else
+ ESD_CFLAGS=`$ESD_CONFIG $esdconf_args --cflags`
+ ESD_LIBS=`$ESD_CONFIG $esdconf_args --libs`
+
+ esd_major_version=`$ESD_CONFIG $esd_args --version | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+ esd_minor_version=`$ESD_CONFIG $esd_args --version | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+ esd_micro_version=`$ESD_CONFIG $esd_config_args --version | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+ if test "x$enable_esdtest" = "xyes" ; then
+ ac_save_CFLAGS="$CFLAGS"
+ ac_save_LIBS="$LIBS"
+ CFLAGS="$CFLAGS $ESD_CFLAGS"
+ LIBS="$LIBS $ESD_LIBS"
+dnl
+dnl Now check if the installed ESD is sufficiently new. (Also sanity
+dnl checks the results of esd-config to some extent
+dnl
+ rm -f conf.esdtest
+ AC_TRY_RUN([
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <esd.h>
+
+char*
+my_strdup (char *str)
+{
+ char *new_str;
+
+ if (str)
+ {
+ new_str = malloc ((strlen (str) + 1) * sizeof(char));
+ strcpy (new_str, str);
+ }
+ else
+ new_str = NULL;
+
+ return new_str;
+}
+
+int main ()
+{
+ int major, minor, micro;
+ char *tmp_version;
+
+ system ("touch conf.esdtest");
+
+ /* HP/UX 9 (%@#!) writes to sscanf strings */
+ tmp_version = my_strdup("$min_esd_version");
+ if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
+ printf("%s, bad version string\n", "$min_esd_version");
+ exit(1);
+ }
+
+ if (($esd_major_version > major) ||
+ (($esd_major_version == major) && ($esd_minor_version > minor)) ||
+ (($esd_major_version == major) && ($esd_minor_version == minor) && ($esd_micro_version >= micro)))
+ {
+ return 0;
+ }
+ else
+ {
+ printf("\n*** 'esd-config --version' returned %d.%d.%d, but the minimum version\n", $esd_major_version, $esd_minor_version, $esd_micro_version);
+ printf("*** of ESD required is %d.%d.%d. If esd-config is correct, then it is\n", major, minor, micro);
+ printf("*** best to upgrade to the required version.\n");
+ printf("*** If esd-config was wrong, set the environment variable ESD_CONFIG\n");
+ printf("*** to point to the correct copy of esd-config, and remove the file\n");
+ printf("*** config.cache before re-running configure\n");
+ return 1;
+ }
+}
+
+],, no_esd=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+ CFLAGS="$ac_save_CFLAGS"
+ LIBS="$ac_save_LIBS"
+ fi
+ fi
+ if test "x$no_esd" = x ; then
+ AC_MSG_RESULT(yes)
+ ifelse([$2], , :, [$2])
+ else
+ AC_MSG_RESULT(no)
+ if test "$ESD_CONFIG" = "no" ; then
+ echo "*** The esd-config script installed by ESD could not be found"
+ echo "*** If ESD was installed in PREFIX, make sure PREFIX/bin is in"
+ echo "*** your path, or set the ESD_CONFIG environment variable to the"
+ echo "*** full path to esd-config."
+ else
+ if test -f conf.esdtest ; then
+ :
+ else
+ echo "*** Could not run ESD test program, checking why..."
+ CFLAGS="$CFLAGS $ESD_CFLAGS"
+ LIBS="$LIBS $ESD_LIBS"
+ AC_TRY_LINK([
+#include <stdio.h>
+#include <esd.h>
+], [ return 0; ],
+ [ echo "*** The test program compiled, but did not run. This usually means"
+ echo "*** that the run-time linker is not finding ESD or finding the wrong"
+ echo "*** version of ESD. If it is not finding ESD, 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 the"
+ echo "*** exact error that occured. This usually means ESD was incorrectly installed"
+ echo "*** or that you have moved ESD since it was installed. In the latter case, you"
+ echo "*** may want to edit the esd-config script: $ESD_CONFIG" ])
+ CFLAGS="$ac_save_CFLAGS"
+ LIBS="$ac_save_LIBS"
+ fi
+ fi
+ ESD_CFLAGS=""
+ ESD_LIBS=""
+ ifelse([$3], , :, [$3])
+ fi
+ AC_SUBST(ESD_CFLAGS)
+ AC_SUBST(ESD_LIBS)
+ rm -f conf.esdtest
+])
+
diff --git a/packages/obsolete/libsdl/libsdl-qpe-1.2.7/agawa-piro-mickey.patch b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/agawa-piro-mickey.patch
new file mode 100644
index 0000000000..7f3622ea4c
--- /dev/null
+++ b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/agawa-piro-mickey.patch
@@ -0,0 +1,2065 @@
+
+#
+# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
+#
+
+Index: SDL-1.2.7/src/video/qtopia/SDL_QWin.cc
+===================================================================
+--- SDL-1.2.7.orig/src/video/qtopia/SDL_QWin.cc 2005-03-02 22:24:43.457491622 +0100
++++ SDL-1.2.7/src/video/qtopia/SDL_QWin.cc 2005-03-02 22:24:46.867009932 +0100
+@@ -1,3 +1,4 @@
++
+ /*
+ SDL - Simple DirectMedia Layer
+ Copyright (C) 1997-2004 Sam Lantinga
+@@ -27,15 +28,24 @@
+
+ #include "SDL_QWin.h"
+ #include <qapplication.h>
++#include <qpe/qpeapplication.h>
+ #include <qdirectpainter_qws.h>
+
++extern int fb_hwrot;
++extern int fb_direct;
++extern bool is_VGA_machine;
++static int mouse_button_mode=1;
++
+ screenRotationT screenRotation = SDL_QT_NO_ROTATION;
+
+ SDL_QWin::SDL_QWin(const QSize& size)
+ : QWidget(0, "SDL_main"), my_painter(0), my_image(0),
+ my_inhibit_resize(false), my_mouse_pos(-1,-1), my_flags(0),
+- my_has_fullscreen(false), my_locked(0)
++ my_has_fullscreen(false), my_locked(0),
++ rotation_(0), qteRotation_(0), keyRotation_(0), qteKeyRotation_(0),
++ isSLA300InputFix_(0)
+ {
++ for (int i = 0; i < 5; i++) curAxis_[i] = 0;
+ setBackgroundMode(NoBackground);
+ }
+
+@@ -84,6 +94,7 @@
+ }
+
+ void SDL_QWin::setMousePos(const QPoint &pos) {
++#if 0
+ if(my_image->width() == height()) {
+ if (screenRotation == SDL_QT_ROTATION_90)
+ my_mouse_pos = QPoint(height()-pos.y(), pos.x());
+@@ -92,6 +103,66 @@
+ } else {
+ my_mouse_pos = pos;
+ }
++#else
++ QPoint realPos;
++
++ if (is_VGA_machine) {
++ realPos = pos;
++ my_mouse_pos = realPos;
++ }else {
++ switch (qteRotation_) {
++ case 0:
++ realPos = pos;
++ break;
++ case 1:
++ realPos.setX(pos.y());
++ realPos.setY(fbSize_.height() - 1 - pos.x());
++ break;
++ case 2:
++ realPos.setX(fbSize_.width() - 1 - pos.x());
++ realPos.setY(fbSize_.height() - 1 - pos.y());
++ break;
++ case 3:
++ realPos.setX(fbSize_.width() - 1 - pos.y());
++ realPos.setY(pos.x());
++ break;
++ };
++
++ // fprintf(stderr, "setMousePos: realPos(%d, %d)\n", realPos.x(), realPos.y());
++
++ int borderWidth = (fbSize_.width() - my_image->width()) >> 1;
++ int borderHeight = (fbSize_.height() - my_image->height()) >> 1;
++ if ( rotation_ & 1 ){
++ borderWidth = (fbSize_.height() - my_image->width()) >> 1;
++ borderHeight = (fbSize_.width() - my_image->height()) >> 1;
++ }
++ realPos.setX(realPos.x() - borderWidth);
++ realPos.setY(realPos.y() - borderHeight);
++
++ fprintf(stderr, "setMousePos: realPos2(%d, %d)\n", realPos.x(), realPos.y());
++
++ switch (rotation_) {
++ case 0:
++ my_mouse_pos = realPos;
++ break;
++ case 1:
++ my_mouse_pos.setX(realPos.y());
++ my_mouse_pos.setY(my_image->height() - 1 - realPos.x());
++ break;
++ case 2:
++ my_mouse_pos.setX(my_image->width() - 1 - realPos.x());
++ my_mouse_pos.setY(my_image->height() - 1 - realPos.y());
++ break;
++ case 3:
++ my_mouse_pos.setX(realPos.y());//my_image->width() - 1 - realPos.y());
++ my_mouse_pos.setY(my_image->height() - realPos.x());
++ break;
++ }
++ }
++
++// fprintf(stderr, "setMousePos: mymousePos(%d, %d)\n", (short)my_mouse_pos.x(), (short)my_mouse_pos.y());
++
++#endif
+ }
+
+ void SDL_QWin::mouseMoveEvent(QMouseEvent *e) {
+@@ -113,269 +184,318 @@
+ void SDL_QWin::mousePressEvent(QMouseEvent *e) {
+ mouseMoveEvent(e);
+ Qt::ButtonState button = e->button();
+- SDL_PrivateMouseButton(SDL_PRESSED,
+- (button & Qt::LeftButton) ? 1 :
+- ((button & Qt::RightButton) ? 2 : 3),
++ SDL_PrivateMouseButton(SDL_PRESSED,mouse_button_mode,
+ my_mouse_pos.x(), my_mouse_pos.y());
+ }
+
+ void SDL_QWin::mouseReleaseEvent(QMouseEvent *e) {
+ setMousePos(e->pos());
+ Qt::ButtonState button = e->button();
+- SDL_PrivateMouseButton(SDL_RELEASED,
+- (button & Qt::LeftButton) ? 1 :
+- ((button & Qt::RightButton) ? 2 : 3),
++ SDL_PrivateMouseButton(SDL_RELEASED,mouse_button_mode,
+ my_mouse_pos.x(), my_mouse_pos.y());
+ my_mouse_pos = QPoint(-1, -1);
+ }
+
+-static inline void
+-gs_fastRotateBlit_3 ( unsigned short *fb,
+- unsigned short *bits,
+- const QRect& rect )
++#ifndef __i386__
++
++static void
++blitRotate3(Uint16 *dstBits, const QSize& dstSize,
++ const Uint16 *srcBits, const QSize& srcSize,
++ const QRect& srcBlitRect);
++
++static void
++blitRotate0(Uint16 *dstBits, const QSize& dstSize,
++ const Uint16 *srcBits, const QSize& srcSize,
++ const QRect& srcBlitRect)
+ {
+- // FIXME: this only works correctly for 240x320 displays
+- int startx, starty;
+- int width, height;
+-
+- startx = rect.left() >> 1;
+- starty = rect.top() >> 1;
+- width = ((rect.right() - rect.left()) >> 1) + 2;
+- height = ((rect.bottom() - rect.top()) >> 1) + 2;
+-
+- if((startx+width) > 120) {
+- width = 120 - startx; // avoid horizontal overflow
+- }
+- if((starty+height) > 160) {
+- height = 160 - starty; // avoid vertical overflow
+- }
+-
+- ulong *sp1, *sp2, *dp1, *dp2;
+- ulong stop, sbot, dtop, dbot;
+-
+- sp1 = (ulong*)bits + startx + starty*240;
+- sp2 = sp1 + 120;
+- dp1 = (ulong *)fb + (159 - starty) + startx*320;
+- dp2 = dp1 + 160;
+- int rowadd = (-320*width) - 1;
+- int rowadd2 = 240 - width;
+- // transfer in cells of 2x2 pixels in words
+- for (int y=0; y<height; y++) {
+- for (int x=0; x<width; x++) {
+- // read source pixels
+- stop = *sp1;
+- sbot = *sp2;
+- // rotate pixels
+- dtop = (sbot & 0xffff) + ((stop & 0xffff)<<16);
+- dbot = ((sbot & 0xffff0000)>>16) + (stop & 0xffff0000);
+- // write to framebuffer
+- *dp1 = dtop;
+- *dp2 = dbot;
+- // update source ptrs
+- sp1++; sp2++;
+- // update dest ptrs - 2 pix at a time
+- dp1 += 320;
+- dp2 += 320;
+- }
+- // adjust src ptrs - skip a row as we work in pairs
+- sp1 += rowadd2;
+- sp2 += rowadd2;
+- // adjust dest ptrs for rotation
+- dp1 += rowadd;
+- dp2 += rowadd;
++ srcBits += srcBlitRect.left() + srcBlitRect.top() * srcSize.width();
++ dstBits += ((dstSize.width() - srcSize.width()) >> 1)
++ + (((dstSize.height() - srcSize.height()) >> 1) * dstSize.width());
++ dstBits += srcBlitRect.left() + srcBlitRect.top() * dstSize.width();
++ int w = srcBlitRect.width() << 1;
++ int h = srcBlitRect.height();
++
++ while (h--) {
++ memcpy(dstBits, srcBits, w);
++ dstBits += dstSize.width();
++ srcBits += srcSize.width();
+ }
+ }
+
+-static inline void
+-gs_fastRotateBlit_1 ( unsigned short *fb,
+- unsigned short *bits,
+- const QRect& rect ) {
+- // FIXME: this only works correctly for 240x320 displays
+- int startx, starty;
+- int width, height;
+-
+- startx = rect.left() >> 1;
+- starty = rect.top() >> 1;
+- width = ((rect.right() - rect.left()) >> 1) + 2;
+- height = ((rect.bottom() - rect.top()) >> 1) + 2;
+-
+- if((startx+width) > 120) {
+- width = 120 - startx; // avoid horizontal overflow
+- }
+- if((starty+height) > 160) {
+- height = 160 - starty; // avoid vertical overflow
+- }
+-
+- ulong *sp1, *sp2, *dp1, *dp2;
+- ulong stop, sbot, dtop, dbot;
+- fb += 320*239; // Move "fb" to top left corner
+- sp1 = (ulong*)bits + startx + starty*240;
+- sp2 = sp1 + 120;
+- dp1 = (ulong*)fb - startx * 320 - starty;
+- dp2 = dp1 - 160;
+- int rowadd = (320*width) + 1;
+- int rowadd2 = 240 - width;
+- // transfer in cells of 2x2 pixels in words
+- for (int y=0; y<height; y++) {
+- for (int x=0; x<width; x++) {
+- // read
+- stop = *sp1;
+- sbot = *sp2;
+- // rotate
+- dtop = (stop & 0xffff) + ((sbot & 0xffff)<<16);
+- dbot = ((stop & 0xffff0000)>>16) + (sbot & 0xffff0000);
+- // write
+- *dp1 = dtop;
+- *dp2 = dbot;
+- // update source ptrs
+- sp1++; sp2++;
+- // update dest ptrs - 2 pix at a time
+- dp1 -= 320;
+- dp2 -= 320;
+- }
+- // adjust src ptrs - skip a row as we work in pairs
+- sp1 += rowadd2;
+- sp2 += rowadd2;
+- // adjust dest ptrs for rotation
+- dp1 += rowadd;
+- dp2 += rowadd;
+- }
++static void
++blitRotate1(Uint16 *dstBits, const QSize& dstSize,
++ const Uint16 *srcBits, const QSize& srcSize,
++ const QRect& srcBlitRect)
++{
++// fprintf(stdout, "SDL_QT_ROTATION (1) is not implemented.\n");
++ blitRotate3(dstBits, dstSize, srcBits, srcSize, srcBlitRect);
+ }
+
+-// desktop, SL-A300 etc
+-bool SDL_QWin::repaintRotation0(const QRect& rect) {
+- if(my_image->width() == width()) {
+- uchar *fb = (uchar*)my_painter->frameBuffer();
+- uchar *buf = (uchar*)my_image->bits();
+- if(rect == my_image->rect()) {
+- memcpy(fb, buf, width()*height()*2);
+- } else {
+- int h = rect.height();
+- int wd = rect.width()<<1;
+- int fblineadd = my_painter->lineStep();
+- int buflineadd = my_image->bytesPerLine();
+- fb += (rect.left()<<1) + rect.top() * my_painter->lineStep();
+- buf += (rect.left()<<1) + rect.top() * my_image->bytesPerLine();
+- while(h--) {
+- memcpy(fb, buf, wd);
+- fb += fblineadd;
+- buf += buflineadd;
+- }
++static void
++blitRotate2(Uint16 *dstBits, const QSize& dstSize,
++ const Uint16 *srcBits, const QSize& srcSize,
++ QRect srcBlitRect)
++{
++// if (srcBlitRect.left() & 1)
++// srcBlitRect.setLeft(srcBlitRect.left() - 1);
++// if (srcBlitRect.right() & 1)
++// srcBlitRect.setRight(srcBlitRect.right() - 1);
++
++ int dstBorderLeftRight = (dstSize.width() - srcSize.width()) >>1;
++ int dstBorderTopBottom = (dstSize.height() - srcSize.height()) >>1;
++ int dstStartOffsetX = dstSize.width() - dstBorderLeftRight - 2;
++ int dstStartOffsetY = dstSize.height() - dstBorderTopBottom - 1;
++ int left = srcBlitRect.left() & ~(int)1; // to be 32bit aligned
++ srcBits += left + srcBlitRect.top() * srcSize.width();
++ dstBits += dstStartOffsetY * dstSize.width() + dstStartOffsetX;
++ dstBits -= left;
++ dstBits -= srcBlitRect.top() * dstSize.width();
++
++ Uint32 *pSrc = (Uint32 *)srcBits;
++ Uint32 *pDst = (Uint32 *)dstBits;
++
++ int width = srcBlitRect.width(), width2 = srcBlitRect.width(), w;
++ if ( srcBlitRect.left() & 1 ){
++ width--; width2++;
++ }
++ if ( (srcBlitRect.left()+srcBlitRect.width()) & 1 ){
++ width--; width2++;
++ }
++ width >>= 1;
++ int height = srcBlitRect.height();
++ int srcYAdd = srcSize.width() - width2;
++ int dstYSub = dstSize.width() - width2;
++
++ while (height--) {
++ w = width;
++ if (srcBlitRect.left() & 1){
++ *((Uint16 *)pDst) = *(((Uint16 *)pSrc) + 1);
++ pDst--; pSrc++;
+ }
+- } else {
+- return false; // FIXME: Landscape
++ while (w--) {
++ *pDst-- = (*pSrc << 16) | (*pSrc >> 16);
++ ++pSrc;
++ }
++ if ((srcBlitRect.left()+srcBlitRect.width()) & 1){
++ *(((Uint16 *)pDst) + 1) = *((Uint16 *)pSrc);
++ pDst--; pSrc++;
++ }
++ pSrc += srcYAdd;
++ pDst -= dstYSub;
+ }
+-#ifdef __i386__
+- my_painter->fillRect( rect, QBrush( Qt::NoBrush ) );
+-#endif
+- return true;
+ }
+
+-
+-// Sharp Zaurus SL-5500 etc
+-bool SDL_QWin::repaintRotation3(const QRect& rect) {
+- if(my_image->width() == width()) {
+- ushort *fb = (ushort*)my_painter->frameBuffer();
+- ushort *buf = (ushort*)my_image->bits();
+- gs_fastRotateBlit_3(fb, buf, rect);
++#define BLIT_ROTATE_3_MOV32
++
++static void
++blitRotate3(Uint16 *dstBits, const QSize& dstSize,
++ const Uint16 *srcBits, const QSize& srcSize,
++ const QRect& srcBlitRect)
++{
++ if (srcBlitRect.width() != dstSize.height() ||
++ srcBlitRect.height() != dstSize.width()) {
++ // partial update
++ const Uint16 *pSrc = srcBits +
++ (srcBlitRect.left() + srcBlitRect.top() * srcSize.width());
++
++ int dstBorderLeftRight = (dstSize.width() - srcSize.height()) >>1;
++ int dstBorderTopBottom = (dstSize.height() - srcSize.width()) >>1;
++ int dstStartOffsetX = dstSize.width() - dstBorderLeftRight - 1;
++ int dstStartOffsetY = dstBorderTopBottom;
++ Uint16 *pDst = dstBits +
++ (dstStartOffsetY * dstSize.width() + dstStartOffsetX);
++ pDst += srcBlitRect.left() * dstSize.width();
++ pDst -= srcBlitRect.top();
++
++ int width = srcBlitRect.width(), height = srcBlitRect.height(), w;
++ int srcYAdd = srcSize.width() - srcBlitRect.width();
++ int dstXAdd = dstSize.width();
++ int dstYSub = (dstSize.width() * srcBlitRect.width()) + 1;
++
++#if 0
++ fprintf(stderr, "---- Blit begin\n");
++ fprintf(stderr, "srcSize.width: %d srcSize.height:%d\n",
++ srcSize.width(), srcSize.height());
++ fprintf(stderr, "srcBlitRect.left:%d srcBlitRect.right:%d srcBlitRect.top:%d srcBlitRect.bottom:%d srcBlitRect.width:%d srcBlitRect.height:%d\n",
++ srcBlitRect.left(), srcBlitRect.right(), srcBlitRect.top(), srcBlitRect.bottom(), srcBlitRect.width(), srcBlitRect.height());
++
++ fprintf(stderr, "dstSize.width: %d dstSize.height:%d\n",
++ dstSize.width(), dstSize.height());
++ fprintf(stderr, "dstBorderLeftRight:%d dstBorderTopBottom:%d dstStartOffsetX:%d dstStartOffsetY:%d\n",
++ dstBorderLeftRight, dstBorderTopBottom, dstStartOffsetX, dstStartOffsetY);
++ fprintf(stderr, "srcYAdd:%d dstXAdd:%d dstYSub:%d\n", srcYAdd, dstXAdd, dstYSub);
++#endif
++
++ while (height--) {
++ w = width;
++ while (w--) {
++ *pDst = *pSrc ++;
++ pDst += dstXAdd;
++ }
++ pSrc += srcYAdd;
++ pDst -= dstYSub;
++ }
++ // fprintf(stderr, "---- Blit end\n");
+ } else {
+- // landscape mode
+- if (screenRotation == SDL_QT_ROTATION_90) {
+- uchar *fb = (uchar*)my_painter->frameBuffer();
+- uchar *buf = (uchar*)my_image->bits();
+- if(rect == my_image->rect()) {
+- memcpy(fb, buf, width()*height()*2);
+- } else {
+- int h = rect.height();
+- int wd = rect.width()<<1;
+- int fblineadd = my_painter->lineStep();
+- int buflineadd = my_image->bytesPerLine();
+- fb += (rect.left()<<1) + rect.top() * my_painter->lineStep();
+- buf += (rect.left()<<1) + rect.top() * my_image->bytesPerLine();
+- while(h--) {
+- memcpy(fb, buf, wd);
+- fb += fblineadd;
+- buf += buflineadd;
+- }
++ // full update
++#if !defined(BLIT_ROTATE_3_MOV32)
++ const Uint16 *src = srcBits;
++ Uint16 *dst = dstBits + (dstSize.width() - 1);
++ int w = srcBlitRect.width();
++ int h = srcBlitRect.height();
++ int i, dstSub = dstSize.width() * w + 1;
++ int dstAdd = dstSize.width();
++
++ while (h--) {
++ i = w;
++ while (i--) {
++ *dst = *src ++;
++ dst += dstAdd;
+ }
+- } else if (screenRotation == SDL_QT_ROTATION_270) {
+- int h = rect.height();
+- int wd = rect.width();
+- int fblineadd = my_painter->lineStep() - (rect.width() << 1);
+- int buflineadd = my_image->bytesPerLine() - (rect.width() << 1);
+- int w;
+-
+- uchar *fb = (uchar*)my_painter->frameBuffer();
+- uchar *buf = (uchar*)my_image->bits();
+-
+- fb += ((my_painter->width() - (rect.top() + rect.height())) *
+- my_painter->lineStep()) + ((my_painter->height() - ((rect.left() +
+- rect.width()))) << 1);
+-
+- buf += my_image->bytesPerLine() * (rect.top() + rect.height()) -
+- (((my_image->width() - (rect.left() + rect.width())) << 1) + 2);
+-
+- while(h--) {
+- w = wd;
+- while(w--) *((unsigned short*)fb)++ = *((unsigned short*)buf)--;
+- fb += fblineadd;
+- buf -= buflineadd;
++ dst -= dstSub;
++ }
++#else // BLIT_ROTATE_3_MOV32
++ Uint32 *src1 = (Uint32 *)(srcBits);
++ Uint32 *src2 = (Uint32 *)(srcBits + srcSize.width());
++ Uint32 *dst1 = (Uint32 *)(dstBits + (dstSize.width() - 2));
++ Uint32 *dst2 = (Uint32 *)(dstBits + (dstSize.width() + dstSize.width() - 2));
++ int w = srcBlitRect.width() >> 3;
++ int h = srcBlitRect.height() >> 1;
++ int i, dstSub = ((dstSize.width() * srcBlitRect.width()) >> 1) + 1;
++ int dstAdd = dstSize.width();
++
++ Uint32 a, b;
++ while (h--) {
++ i = w;
++ while (i--) {
++ a = *src1 ++;
++ b = *src2 ++;
++ *dst1 = (a << 16) | (b & 0xFFFF);
++ *dst2 = (a & 0xFFFF0000) | (b >> 16);
++ dst1 += dstAdd;
++ dst2 += dstAdd;
++
++ a = *src1 ++;
++ b = *src2 ++;
++ *dst1 = (a << 16) | (b & 0xFFFF);
++ *dst2 = (a & 0xFFFF0000) | (b >> 16);
++ dst1 += dstAdd;
++ dst2 += dstAdd;
++
++ a = *src1 ++;
++ b = *src2 ++;
++ *dst1 = (a << 16) | (b & 0xFFFF);
++ *dst2 = (a & 0xFFFF0000) | (b >> 16);
++ dst1 += dstAdd;
++ dst2 += dstAdd;
++
++ a = *src1 ++;
++ b = *src2 ++;
++ *dst1 = (a << 16) | (b & 0xFFFF);
++ *dst2 = (a & 0xFFFF0000) | (b >> 16);
++ dst1 += dstAdd;
++ dst2 += dstAdd;
+ }
++ src1 += srcSize.width() >> 1;
++ src2 += srcSize.width() >> 1;
++ dst1 -= dstSub;
++ dst2 -= dstSub;
+ }
++#endif // BLIT_ROTATE_3_MOV32
+ }
+- return true;
+ }
+
+-// ipaq 3800...
+-bool SDL_QWin::repaintRotation1(const QRect& rect) {
+- if(my_image->width() == width()) {
+- ushort *fb = (ushort*)my_painter->frameBuffer();
+- ushort *buf = (ushort*)my_image->bits();
+- gs_fastRotateBlit_1(fb, buf, rect);
+- } else {
+- return false; // FIXME: landscape mode
+- }
+- return true;
+-}
++#endif // __i386__
+
+ void SDL_QWin::repaintRect(const QRect& rect) {
+ if(!my_painter || !rect.width() || !rect.height()) {
+ return;
+ }
+-
+- if(QPixmap::defaultDepth() == 16) {
+- switch(my_painter->transformOrientation()) {
+- case 3:
+- if(repaintRotation3(rect)) { return; }
++#ifndef __i386__
++ if (QPixmap::defaultDepth() == 16 && my_painter->numRects() >= 0) {
++ Uint16 *fb = (Uint16*)my_painter->frameBuffer();
++ Uint16 *buf = (Uint16*)my_image->bits();
++ switch (rotation_) {
++ case 0:
++ blitRotate0(fb, fbSize_,
++ buf, QSize(my_image->width(), my_image->height()),
++ rect);
+ break;
+ case 1:
+- if(repaintRotation1(rect)) { return; }
++ blitRotate1(fb, fbSize_,
++ buf, QSize(my_image->width(), my_image->height()),
++ rect);
+ break;
+- case 0:
+- if(repaintRotation0(rect)) { return; }
++ case 2:
++ blitRotate2(fb, fbSize_,
++ buf, QSize(my_image->width(), my_image->height()),
++ rect);
++ break;
++ case 3:
++ blitRotate3(fb, fbSize_,
++ buf, QSize(my_image->width(), my_image->height()),
++ rect);
+ break;
+ }
+- }
+- my_painter->drawImage(rect.topLeft(), *my_image, rect);
++ } else {
++#endif // __i386__
++ QDirectPainter pp(this);
++ pp.drawImage(rect.topLeft(), *my_image, rect);
++// pp.end();
++#ifndef __i386__
++ }
++#endif // __i386__
+ }
+
+ // This paints the current buffer to the screen, when desired.
+ void SDL_QWin::paintEvent(QPaintEvent *ev) {
+- if(my_image) {
++ if(my_image && isVisible() && isActiveWindow()) {
++ // TODO: better handling
+ lockScreen(true);
+ repaintRect(ev->rect());
+ unlockScreen();
+ }
+ }
+
++int SDL_QWin::ApplyKeyRotation(int key)
++{
++ int c;
++ int sdlScancode[] = { SDLK_LEFT, SDLK_DOWN, SDLK_RIGHT, SDLK_UP };
++
++ switch (key) {
++ case Qt::Key_Left:
++ c = 0;
++ break;
++ case Qt::Key_Down:
++ c = 1;
++ break;
++ case Qt::Key_Right:
++ c = 2;
++ break;
++ case Qt::Key_Up:
++ c = 3;
++ break;
++ default:
++ return 0;
++ }
++
++// c = (c + qteKeyRotation_) & 3;
++// return sdlScancode[(c - keyRotation_) & 3];
++ return sdlScancode[(c + qteKeyRotation_ - keyRotation_) & 3];
++}
++
+ /* Function to translate a keyboard transition and queue the key event
+ * This should probably be a table although this method isn't exactly
+ * slow.
+ */
+ void SDL_QWin::QueueKey(QKeyEvent *e, int pressed)
+-{
++{
++ if (e->isAutoRepeat())
++ return;
++
+ SDL_keysym keysym;
+ int scancode = e->key();
++
+ /* Set the keysym information */
+ if(scancode >= 'A' && scancode <= 'Z') {
+ // Qt sends uppercase, SDL wants lowercase
+@@ -396,26 +516,12 @@
+ case Qt::Key_Home: scancode = SDLK_HOME; break;
+ case Qt::Key_End: scancode = SDLK_END; break;
+ // We want the control keys to rotate with the screen
+- case Qt::Key_Left:
+- if (screenRotation == SDL_QT_ROTATION_90) scancode = SDLK_UP;
+- else if (screenRotation == SDL_QT_ROTATION_270) scancode = SDLK_DOWN;
+- else scancode = SDLK_LEFT;
+- break;
+- case Qt::Key_Up:
+- if (screenRotation == SDL_QT_ROTATION_90) scancode = SDLK_RIGHT;
+- else if (screenRotation == SDL_QT_ROTATION_270) scancode = SDLK_LEFT;
+- else scancode = SDLK_UP;
+- break;
+- case Qt::Key_Right:
+- if (screenRotation == SDL_QT_ROTATION_90) scancode = SDLK_DOWN;
+- else if (screenRotation == SDL_QT_ROTATION_270) scancode = SDLK_UP;
+- else scancode = SDLK_RIGHT;
+- break;
++ case Qt::Key_Left:
++ case Qt::Key_Up:
++ case Qt::Key_Right:
+ case Qt::Key_Down:
+- if (screenRotation == SDL_QT_ROTATION_90) scancode = SDLK_LEFT;
+- else if (screenRotation == SDL_QT_ROTATION_270) scancode = SDLK_RIGHT;
+- else scancode = SDLK_DOWN;
+- break;
++ scancode = ApplyKeyRotation(scancode);
++ break;
+ case Qt::Key_Prior: scancode = SDLK_PAGEUP; break;
+ case Qt::Key_Next: scancode = SDLK_PAGEDOWN; break;
+ case Qt::Key_Shift: scancode = SDLK_LSHIFT; break;
+@@ -434,9 +540,18 @@
+ case Qt::Key_F7: scancode = SDLK_F7; break;
+ case Qt::Key_F8: scancode = SDLK_F8; break;
+ case Qt::Key_F9: scancode = SDLK_F9; break;
+- case Qt::Key_F10: scancode = SDLK_F10; break;
+- case Qt::Key_F11: scancode = SDLK_F11; break;
+- case Qt::Key_F12: scancode = SDLK_F12; break;
++ case Qt::Key_F10:
++ scancode = SDLK_F10;
++ mouse_button_mode=1;
++ break;
++ case Qt::Key_F11:
++ scancode = SDLK_F11;
++ mouse_button_mode=3;
++ break;
++ case Qt::Key_F12:
++ scancode = SDLK_F12;
++ mouse_button_mode=2;
++ break;
+ case Qt::Key_F13: scancode = SDLK_F13; break;
+ case Qt::Key_F14: scancode = SDLK_F14; break;
+ case Qt::Key_F15: scancode = SDLK_F15; break;
+@@ -452,13 +567,14 @@
+ // david@hedbor.org
+ scancode = SDLK_RETURN;
+ break;
++
+ default:
+ scancode = SDLK_UNKNOWN;
+ break;
+ }
+- keysym.sym = static_cast<SDLKey>(scancode);
++ keysym.sym = static_cast<SDLKey>(scancode);
+ } else {
+- keysym.sym = static_cast<SDLKey>(scancode);
++ keysym.sym = static_cast<SDLKey>(scancode);
+ }
+ keysym.scancode = scancode;
+ keysym.mod = KMOD_NONE;
+@@ -478,11 +594,82 @@
+ // pressed = 1;
+ // }
+
++ if (isSLA300InputFix_ &&
++ (keysym.sym == SDLK_SPACE || (keysym.sym >= 273 && keysym.sym <= 276))) {
++ if (keysym.sym >= 273) curAxis_[keysym.sym-273] = pressed;
++ else curAxis_[4] = pressed;
++ }
++
+ /* Queue the key event */
+ if ( pressed ) {
+- SDL_PrivateKeyboard(SDL_PRESSED, &keysym);
++ /* fprintf(stderr, "press %d\n", keysym.sym); */
++ SDL_PrivateKeyboard(SDL_PRESSED, &keysym);
++ if (isSLA300InputFix_ &&
++ (keysym.sym >= 273 && keysym.sym <= 276)) {
++ if (keysym.sym == SDLK_UP) {
++ if (curAxis_[1]) {
++ keysym.sym = SDLK_DOWN;
++ keysym.scancode = Qt::Key_Down;
++ curAxis_[1] = 0;
++ /* fprintf(stderr, "force release %d\n", keysym.sym); */
++ SDL_PrivateKeyboard(SDL_RELEASED, &keysym);
++ }
++ }
++ else if (keysym.sym == SDLK_DOWN) {
++ if (curAxis_[0]) {
++ keysym.sym = SDLK_UP;
++ keysym.scancode = Qt::Key_Up;
++ curAxis_[0] = 0;
++ /* fprintf(stderr, "force release %d\n", keysym.sym); */
++ SDL_PrivateKeyboard(SDL_RELEASED, &keysym);
++ }
++ }
++ else if (keysym.sym == SDLK_RIGHT) {
++ if (curAxis_[3]) {
++ keysym.sym = SDLK_LEFT;
++ keysym.scancode = Qt::Key_Left;
++ curAxis_[3] = 0;
++ /* fprintf(stderr, "force release %d\n", keysym.sym); */
++ SDL_PrivateKeyboard(SDL_RELEASED, &keysym);
++ }
++ }
++ else if (keysym.sym == SDLK_LEFT) {
++ if (curAxis_[2]) {
++ keysym.sym = SDLK_RIGHT;
++ keysym.scancode = Qt::Key_Right;
++ curAxis_[2] = 0;
++ /* fprintf(stderr, "force release %d\n", keysym.sym); */
++ SDL_PrivateKeyboard(SDL_RELEASED, &keysym);
++ }
++ }
++ }
+ } else {
+- SDL_PrivateKeyboard(SDL_RELEASED, &keysym);
++ /* fprintf(stderr, "release %d\n", keysym.sym); */
++ SDL_PrivateKeyboard(SDL_RELEASED, &keysym);
++
++ if (isSLA300InputFix_ &&
++ (keysym.sym == SDLK_SPACE ||
++ (keysym.sym >= 273 && keysym.sym <= 276))) {
++ for (int i = 0; i < 4; i++) {
++ if (curAxis_[i]) {
++ int sym = i+273;
++ keysym.sym = static_cast<SDLKey>(sym);
++ if (sym == SDLK_UP) keysym.scancode = Qt::Key_Up;
++ else if (sym == SDLK_RIGHT) keysym.scancode = Qt::Key_Right;
++ else if (sym == SDLK_DOWN) keysym.scancode = Qt::Key_Down;
++ else if (sym == SDLK_LEFT) keysym.scancode = Qt::Key_Left;
++ curAxis_[i] = 0;
++ /* fprintf(stderr, "force release %d\n", keysym.sym); */
++ SDL_PrivateKeyboard(SDL_RELEASED, &keysym);
++ }
++ }
++ if (curAxis_[4]) {
++ keysym.scancode = keysym.sym = SDLK_SPACE;
++ curAxis_[4] = 0;
++ /* fprintf(stderr, "force release %d\n", keysym.sym); */
++ SDL_PrivateKeyboard(SDL_RELEASED, &keysym);
++ }
++ }
+ }
+ }
+
+@@ -524,7 +711,7 @@
+ my_locked--; // decrease lock refcount;
+ }
+ if(!my_locked && my_painter) {
+- my_painter->end();
++// my_painter->end();
+ delete my_painter;
+ my_painter = 0;
+ }
+Index: SDL-1.2.7/src/video/qtopia/SDL_QWin.h
+===================================================================
+--- SDL-1.2.7.orig/src/video/qtopia/SDL_QWin.h 2005-03-02 22:24:43.457491622 +0100
++++ SDL-1.2.7/src/video/qtopia/SDL_QWin.h 2005-03-02 22:24:46.868009791 +0100
+@@ -1,3 +1,4 @@
++
+ /*
+ SDL - Simple DirectMedia Layer
+ Copyright (C) 1997-2004 Sam Lantinga
+@@ -52,6 +53,7 @@
+ class SDL_QWin : public QWidget
+ {
+ void QueueKey(QKeyEvent *e, int pressed);
++ int ApplyKeyRotation(int key);
+ public:
+ SDL_QWin(const QSize& size);
+ virtual ~SDL_QWin();
+@@ -71,7 +73,7 @@
+ y = my_offset.y();
+ }
+ QImage *image(void) { return my_image; }
+-
++
+ void setWFlags(WFlags flags) {
+ QWidget::setWFlags(flags);
+ my_flags = flags;
+@@ -83,6 +85,15 @@
+ bool lockScreen(bool force=false);
+ void unlockScreen();
+ void repaintRect(const QRect& rect);
++ void setScreenRotation(int sdlr, int qter) {
++ rotation_ = sdlr; qteRotation_ = qter;
++ }
++ void setKeyRotation(int sdlr, int qter) {
++ keyRotation_ = sdlr; qteKeyRotation_ = qter;
++ }
++ void setFBSize(QSize& s) { fbSize_ = s; }
++// void setSLC700InputFix(bool isEnable) { isSLC700InputFix_ = isEnable; }
++ void setSLA300InputFix(bool isEnable) { isSLA300InputFix_ = isEnable; }
+ protected:
+ /* Handle resizing of the window */
+ virtual void resizeEvent(QResizeEvent *e);
+@@ -95,10 +106,8 @@
+ void paintEvent(QPaintEvent *ev);
+ void keyPressEvent(QKeyEvent *e) { QueueKey(e, 1); }
+ void keyReleaseEvent(QKeyEvent *e) { QueueKey(e, 0); }
++
+ private:
+- bool repaintRotation0(const QRect& rect);
+- bool repaintRotation1(const QRect& rect);
+- bool repaintRotation3(const QRect& rect);
+ void enableFullscreen();
+ QDirectPainter *my_painter;
+ QImage *my_image;
+@@ -108,6 +117,12 @@
+ WFlags my_flags;
+ WFlags my_has_fullscreen;
+ unsigned int my_locked;
++ int rotation_, qteRotation_;
++ int keyRotation_, qteKeyRotation_;
++ QSize fbSize_;
++// bool isSLC700InputFix_;
++ bool isSLA300InputFix_;
++ int curAxis_[5]; // 0: up, 1: down, 2: right, 3: left, 4: center
+ };
+
+ #endif /* _SDL_QWin_h */
+Index: SDL-1.2.7/src/video/qtopia/SDL_sysmouse.cc
+===================================================================
+--- SDL-1.2.7.orig/src/video/qtopia/SDL_sysmouse.cc 2005-03-02 22:24:43.457491622 +0100
++++ SDL-1.2.7/src/video/qtopia/SDL_sysmouse.cc 2005-03-02 22:24:46.868009791 +0100
+@@ -60,6 +60,7 @@
+ void QT_WarpWMCursor(_THIS, Uint16 x, Uint16 y)
+ {
+ SDL_Win->setMousePos(QPoint(x, y));
++ SDL_PrivateMouseMotion( 0, 0, x, y );
+ }
+
+ }; /* Extern C */
+Index: SDL-1.2.7/src/video/qtopia/SDL_sysvideo.cc
+===================================================================
+--- SDL-1.2.7.orig/src/video/qtopia/SDL_sysvideo.cc 2005-03-02 22:24:43.458491481 +0100
++++ SDL-1.2.7/src/video/qtopia/SDL_sysvideo.cc 2005-03-02 22:24:46.873009084 +0100
+@@ -1,3 +1,4 @@
++
+ /*
+ SDL - Simple DirectMedia Layer
+ Copyright (C) 1997-2004 Sam Lantinga
+@@ -29,17 +30,32 @@
+
+ #include <stdlib.h>
+ #include <string.h>
++#include <stdarg.h>
++#include <fcntl.h>
++#include <sys/ioctl.h>
+
+ #include <stdio.h>
+ #include <unistd.h>
++#include <sys/types.h>
++#include <sys/wait.h>
++#include <linux/fb.h>
++#include <sys/mman.h>
++#include <asm/page.h>
+
+ #include <qapplication.h>
+ #include <qpe/qpeapplication.h>
++#include <qpe/qcopenvelope_qws.h>
++#include <qgfx_qws.h>
++#include <qwindowsystem_qws.h>
++#include <qwidget.h>
++#include <qwidgetlist.h>
++#include <qdirectpainter_qws.h>
+
+ #include "SDL.h"
+ #include "SDL_timer.h"
+
+ #include "SDL_QWin.h"
++#include "SDL_sysvideo.h"
+
+ extern "C" {
+
+@@ -51,14 +67,67 @@
+ #include "SDL_lowvideo.h"
+
+ //#define QTOPIA_DEBUG
++#define QTOPIA_LOG
+ #define QT_HIDDEN_SIZE 32 /* starting hidden window size */
+
++#ifdef QTOPIA_LOG
++ static FILE *st_logfp = NULL;
++#endif
++ static inline void LOG(char *fmt, ...)
++ {
++#ifdef QTOPIA_LOG
++ va_list ap;
++
++ va_start(ap, fmt);
++ vfprintf(st_logfp, fmt, ap);
++ if (st_logfp != stderr) {
++ fflush(st_logfp);
++ vfprintf(stderr, fmt, ap);
++ }
++ va_end(ap);
++#endif
++ }
++
++ typedef struct machine_spec {
++ const char *manif;
++ const char *name;
++ int qpe_server_rotation;
++ int init_screen_rot;
++ int init_key_rot;
++ } machine_spec_t;
++
++ typedef enum {
++ MACHINE_SHARP_SL5000D,
++ MACHINE_SHARP_SL5500,
++ MACHINE_SHARP_SLA300,
++ MACHINE_SHARP_SLB500,
++ MACHINE_SHARP_SLC700,
++ MACHINE_SHARP_SLC750,
++ MACHINE_SHARP_SLC760,
++ MACHINE_SHARP_SLC860,
++ MACHINE_SHARP_SL6000,
++ MACHINE_MAX
++ } machine_t;
++
++ static const machine_spec_t st_machine_spec[] = {
++ { "Sharp", "SL-5000D", 0 },
++ { "Sharp", "SL-5500", 0 },
++ { "Sharp", "SL-A300", 0 },
++ { "Sharp", "SL-B500", 0 },
++ { "Sharp", "SL-C700", 0 },
++ { "Sharp", "SL-C750", 0 },
++ { "Sharp", "SL-C760", 0 },
++ { "Sharp", "SL-C860", 0 },
++ { "Sharp", "SL-6000", 0 },
++ };
++
+ /* Name of the environment variable used to invert the screen rotation or not:
+ Possible values:
+- !=0 : Screen is 270° rotated
+- 0: Screen is 90° rotated*/
+-#define SDL_QT_ROTATION_ENV_NAME "SDL_QT_INVERT_ROTATION"
+-
++ !=0 : Screen is 270- rotated
++ 0: Screen is 90- rotated*/
++#define SDL_QT_ROTATION_ENV_NAME "SDL_QT_ROTATION"
++#define SDL_QT_INVERT_ROTATION_ENV_NAME "SDL_QT_INVERT_ROTATION"
++
+ /* Initialization/Query functions */
+ static int QT_VideoInit(_THIS, SDL_PixelFormat *vformat);
+ static SDL_Rect **QT_ListModes(_THIS, SDL_PixelFormat *format, Uint32 flags);
+@@ -78,6 +147,20 @@
+ static int QT_IconifyWindow(_THIS);
+ static SDL_GrabMode QT_GrabInput(_THIS, SDL_GrabMode mode);
+
++ static int console_fd;
++ struct fb_var_screeninfo saved_vinfo;
++ int fb_hwrot;
++ int fb_direct;
++ static int isKHloaded;
++ bool is_VGA_machine;
++
++#define W100FB_CONFIG 0x57415200 /* WAL\00 */
++#define W100INIT_ITEM 0
++#define W100INIT_ALL 1
++#define W100INIT_ITEM_WITH_VAL 2
++#define W100FB_CONFIG_EX 0x57415202 /* WAL\02 */
++
++
+ /* FB driver bootstrap functions */
+
+ static int QT_Available(void)
+@@ -222,13 +305,34 @@
+
+ int QT_VideoInit(_THIS, SDL_PixelFormat *vformat)
+ {
+- /* Initialize the QPE Application */
++ const char *SDL_fbdev;
++ struct fb_var_screeninfo vinfo;
++
++ /* Initialize the QPE Application */
+ /* Determine the screen depth */
+ vformat->BitsPerPixel = QPixmap::defaultDepth();
+
+ // For now we hardcode the current depth because anything else
+ // might as well be emulated by SDL rather than by Qtopia.
+-
++
++ //frame buffer device open.
++ SDL_fbdev = getenv("SDL_FBDEV");
++ if ( SDL_fbdev == NULL ) {
++ SDL_fbdev = "/dev/fb0";
++ }
++ console_fd = open(SDL_fbdev, O_RDWR, 0);
++ if ( console_fd < 0 ) {
++ SDL_SetError("Unable to open %s", SDL_fbdev);
++ return(-1);
++ }
++
++ if ( ioctl(console_fd, FBIOGET_VSCREENINFO, &vinfo) < 0 ) {
++ SDL_SetError("Couldn't get console pixel format");
++ QT_VideoQuit(_this);
++ return(-1);
++ }
++ saved_vinfo = vinfo;
++
+ QSize desktop_size = qApp->desktop()->size();
+ QT_AddMode(_this, ((vformat->BitsPerPixel+7)/8)-1,
+ desktop_size.width(), desktop_size.height());
+@@ -241,7 +345,24 @@
+ /* Fill in some window manager capabilities */
+ _this->info.wm_available = 0;
+
+- /* We're done! */
++#ifdef QTOPIA_LOG
++ st_logfp = fopen("/tmp/sdl-qt-debug", "w");
++ if (!st_logfp)
++ st_logfp = stderr;
++#endif
++
++ QT_GrabInput(_this, SDL_GRAB_ON);
++/*
++ {
++ QCopEnvelope e("QPE/KeyHelper", "repeater(int)");
++ e << 2;
++ }
++*/
++ isKHloaded=(fopen("/home/zaurus/Settings/keyhelper_SDL.xml","r") != NULL) ? 1 : 0;
++ if (isKHloaded) {
++ system("qcop QPE/KeyHelper \"reload(QString)\" keyhelper_SDL.xml"); //QcopEnvelope can't use.
++ LOG("keyhelper_SDL.xml loaded\n");
++ }
+ return(0);
+ }
+
+@@ -264,6 +385,7 @@
+
+ /* Various screen update functions available */
+ static void QT_NormalUpdate(_THIS, int numrects, SDL_Rect *rects);
++ static void QT_DirectUpdate(_THIS, int numrects, SDL_Rect *rects);
+
+
+ static int QT_SetFullScreen(_THIS, SDL_Surface *screen, int fullscreen)
+@@ -276,47 +398,428 @@
+ return -1;
+ }
+
++ static machine_t QT_GetMachine(_THIS)
++ {
++ FILE *fp;
++ machine_t machine = MACHINE_SHARP_SL5000D;
++ char buf[1024];
++
++
++ fp = fopen("/proc/cpuinfo", "rb");
++ if (fp) {
++ if (fread(buf, 1, sizeof(buf), fp) > 0) {
++ LOG("QT_GetMachine: /proc/cpuinfo is %s\n", buf);
++ if (strstr(buf, "SHARP Tosa") != NULL)
++ machine = MACHINE_SHARP_SL6000;
++ else if (strstr(buf, "Collie") != NULL)
++ machine = MACHINE_SHARP_SL5500;
++ else if (strstr(buf, "SHARP Poodle") != NULL)
++ machine = MACHINE_SHARP_SLB500;
++ else if (strstr(buf, "SHARP Corgi") !=NULL)
++ machine = MACHINE_SHARP_SLC700;
++ else if (strstr(buf, "SHARP Shepherd") !=NULL)
++ machine = MACHINE_SHARP_SLC750;
++ else if (strstr(buf, "SHARP Husky") !=NULL)
++ machine = MACHINE_SHARP_SLC760;
++ else if (strstr(buf, "SHARP Boxer") != NULL)
++ machine = MACHINE_SHARP_SLC860;
++ }
++ fclose(fp);
++ } else {
++ LOG("QT_GetMachine: Couldn't read /proc/deviceinfo/product.\n");
++ LOG(" Now set machine variable to default (SL-5000D)\n");
++ }
++
++ LOG(" detected machine is '%s %s'\n",
++ st_machine_spec[machine].manif, st_machine_spec[machine].name);
++ return machine;
++ }
++
++ static void QT_GetQteServerSpec(_THIS, int *rotation, bool *isQvga)
++ {
++ const char *user;
++ char buf[FILENAME_MAX];
++ FILE *fp;
++ int rot = 0, is_qvga = 0;
++
++ user = getenv("USER");
++ snprintf(buf, sizeof(buf), "/tmp/qtembedded-%s/QtEmbedded-0.spec",
++ user ? user : "root");
++ LOG("QT_GetRotation: Read spec from '%s'\n", buf);
++
++ fp = fopen(buf, "rb");
++ if (fp) {
++ int size;
++ if ((size = fread(buf, 1, sizeof(buf) - 1, fp)) > 0) {
++ buf[size] = '\0';
++ LOG(" spec is '%s'\n", buf);
++ // get rotation value
++ if (strstr(buf, "Rot")) {
++ rot = atoi(strstr(buf, "Rot") + 3);
++ rot /= 90;
++ if (rot < 0 || rot > 3) {
++ rot = 0;
++ }
++ } else
++ rot = 0;
++
++ // get qvga mode in SL-C700
++ if (strstr(buf, "Qvga"))
++ is_qvga = 1;
++ }
++ fclose(fp);
++ }
++
++ LOG(" Rot=%d, Qvga=%d\n", rot, is_qvga);
++
++ if (rotation)
++ *rotation = rot;
++ if (isQvga)
++ *isQvga = is_qvga;
++ }
++
+ /* FIXME: check return values and cleanup here */
+ SDL_Surface *QT_SetVideoMode(_THIS, SDL_Surface *current,
+ int width, int height, int bpp, Uint32 flags)
+ {
+-
+ QImage *qimage;
+- QSize desktop_size = qApp->desktop()->size();
++ QSize qteSize = qApp->desktop()->size();
++ QSize fbSize;
++ QSize userSize;
++ int fb_xres;
++ int fb_yres;
++ struct fb_var_screeninfo vinfo;
++ struct fb_fix_screeninfo finfo;
++ int tmp_ioctl_data;
++ char fb_size_fix = ' ';
++ bool isW100patch_kernel = false;
++ int numFb_Size;
++
++ int mapped_memlen;
++ int mapped_offset;
++ void *mapped_mem;
++ int fb_offset;
++
++
++ machine_t machine = QT_GetMachine(_this);
++ machine_spec_t machineSpec = st_machine_spec[machine];
++ int qteRotation, userRotation, sdlRotation;
++ int qteKeyRotation, sdlKeyRotation;
++ bool isQteQvga;
++
++ if (machine == MACHINE_SHARP_SLC700 ||
++ machine == MACHINE_SHARP_SLC750 ||
++ machine == MACHINE_SHARP_SLC760 ||
++ machine == MACHINE_SHARP_SLC860 || // ¾Ü¤·¤¤¤³¤È¤ï¤«¤é¤ó¤±¤É¤È¤ê¤¢¤¨¤º
++ machine == MACHINE_SHARP_SL6000 ) { // ¾Ü¤·¤¤¤³¤È¤ï¤«¤é¤ó¤±¤É¤È¤ê¤¢¤¨¤º
++ is_VGA_machine = true;
++ }else {
++ is_VGA_machine = false;
++ }
++
++ // qte ¤Ç¤Î²óž³ÑÅÙ¤ò¼èÆÀ
++ QT_GetQteServerSpec(_this, &qteRotation, &isQteQvga);
++
++ // SL-C700 ¤Î¥¹¥¿¥¤¥ë
++ bool isInputStyle = false;
++ if (is_VGA_machine) {
++ int status = system("/home/QtPalmtop/bin/chkhinge");
++ if (WEXITSTATUS(status) != 2)
++ isInputStyle = true;
++ LOG("QT_SetVideoMode: SL-C700 Style is %s\n",
++ isInputStyle ? "Input style" : "View style");
++ }
+
+
+- current->flags = 0; //SDL_FULLSCREEN; // We always run fullscreen.
++ // specity screen setting
++ if (is_VGA_machine) {
++
++ // w100 rotation pached kernel check
++ isW100patch_kernel = (fopen("/proc/driver/w100/rotation","r") != NULL) ? true : false;
++ LOG("Your Kernel is %s\n",isW100patch_kernel ? "Special Kernel" : "Normal Kernel");
++
++ const char *envFb_Size = getenv("SDL_FB_SIZE");
++ if (envFb_Size !=NULL) {
++ numFb_Size=sscanf(envFb_Size,"%dx%d%c",&fb_xres,&fb_yres,&fb_size_fix);
++ } else {
++ numFb_Size=0;
++ }
+
+- if(width <= desktop_size.width()
+- && height <= desktop_size.height()) {
+- current->w = desktop_size.width();
+- current->h = desktop_size.height();
+- } else if(width <= desktop_size.height() && height <= desktop_size.width()) {
+- // Landscape mode
+- char * envString = getenv(SDL_QT_ROTATION_ENV_NAME);
+- int envValue = envString ? atoi(envString) : 0;
+- screenRotation = envValue ? SDL_QT_ROTATION_270 : SDL_QT_ROTATION_90;
+- current->h = desktop_size.width();
+- current->w = desktop_size.height();
++ if (numFb_Size >=2) {
++
++ // specity screen mode
++ if ( ioctl(console_fd, FBIOGET_VSCREENINFO, &vinfo) < 0 ) {
++ SDL_SetError("Couldn't get console pixel format");
++ QT_VideoQuit(_this);
++ return(NULL);
++ }
++
++ vinfo.xres = fb_xres;
++ vinfo.xres_virtual = fb_xres;
++ vinfo.yres = fb_yres;
++ vinfo.yres_virtual = fb_yres;
++
++ if (fb_size_fix == '@') {
++ width = fb_xres;
++ height = fb_yres;
++ }
++
++ if ( ioctl(console_fd, FBIOPUT_VSCREENINFO, &vinfo) < 0 ) {
++ SDL_SetError("Couldn't set console screen info");
++ return(NULL);
++ }
++
++
++ if (isW100patch_kernel) {
++ qteSize.setWidth(vinfo.xres);
++ qteSize.setHeight(vinfo.yres);
++ qteRotation=0;
++ }else if(vinfo.xres == 320){
++ qteSize.setWidth(vinfo.xres);
++ qteSize.setHeight(vinfo.yres);
++ qteRotation=2;
++ }else {
++ qteSize.setWidth(vinfo.yres);
++ qteSize.setHeight(vinfo.xres);
++ qteRotation=3;
++ }
++
++ if (isW100patch_kernel && (vinfo.xres == 320) && (vinfo.yres == 240)) {
++ tmp_ioctl_data=121;
++ ioctl(console_fd, W100FB_CONFIG_EX, &tmp_ioctl_data);
++ fb_hwrot=1;
++ }
++
++ LOG("FBVideoMode: %dx%d%c\n", vinfo.xres, vinfo.yres,fb_size_fix );
++
++ }else {
++
++ // auto screen mode
++ if ( ioctl(console_fd, FBIOGET_VSCREENINFO, &vinfo) < 0 ) {
++ SDL_SetError("Couldn't get console pixel format");
++ QT_VideoQuit(_this);
++ return(NULL);
++ }
++
++ if (isW100patch_kernel && (isInputStyle == false) && (vinfo.xres == 240) && (vinfo.yres == 320)) {
++ vinfo.xres = 240;
++ vinfo.xres_virtual = 240;
++ vinfo.yres = 320;
++ vinfo.yres_virtual = 320;
++ qteRotation=0;
++ }else if ((width <= 320) && (height <= 240)) {
++ vinfo.xres = 320;
++ vinfo.xres_virtual = 320;
++ vinfo.yres = 240;
++ vinfo.yres_virtual = 240;
++ }else if (isW100patch_kernel && (isInputStyle == true)){
++ vinfo.xres = 640;
++ vinfo.xres_virtual = 640;
++ vinfo.yres = 480;
++ vinfo.yres_virtual = 480;
++ qteRotation=0;
++ }else {
++ vinfo.xres = 480;
++ vinfo.xres_virtual = 480;
++ vinfo.yres = 640;
++ vinfo.yres_virtual = 640;
++ }
++
++ if ( ioctl(console_fd, FBIOPUT_VSCREENINFO, &vinfo) < 0 ) {
++ SDL_SetError("Couldn't set console screen info");
++ return(NULL);
++ }
++
++ if (isW100patch_kernel) {
++ qteSize.setWidth(vinfo.xres);
++ qteSize.setHeight(vinfo.yres);
++ qteRotation=0;
++ fb_direct=1;
++ }else if(vinfo.xres == 320){
++ qteSize.setWidth(vinfo.xres);
++ qteSize.setHeight(vinfo.yres);
++ qteRotation=2;
++ }else {
++ qteSize.setWidth(vinfo.yres);
++ qteSize.setHeight(vinfo.xres);
++ qteRotation=3;
++ }
++
++ if (isW100patch_kernel && (vinfo.xres == 320) && (vinfo.yres == 240)) {
++ tmp_ioctl_data=121;
++ ioctl(console_fd, W100FB_CONFIG_EX, &tmp_ioctl_data);
++ fb_hwrot=1;
++ qteRotation=0;
++ }
++
++ LOG("FBVideoMode: %dx%d%c\n", vinfo.xres, vinfo.yres,fb_size_fix );
++ }
++ }
++
++ // direct paint setting
++ const char *envFb_Direct = getenv("SDL_FB_DIRECT");
++ if (envFb_Direct !=NULL)
++ fb_direct = envFb_Direct ? atoi(envFb_Direct) : -1;
++
++ if (fb_direct == 1){
++ if ( ioctl(console_fd, FBIOGET_FSCREENINFO, &finfo) < 0 ) {
++ SDL_SetError("Couldn't get console hardware info");
++ QT_VideoQuit(_this);
++ return(NULL);
++ }
++ if ( ioctl(console_fd, FBIOGET_VSCREENINFO, &vinfo) < 0 ) {
++ SDL_SetError("Couldn't get console pixel format");
++ QT_VideoQuit(_this);
++ return(NULL);
++ }
++ LOG("Direct paint mode\n");
++ }
++
++ // hack for SL-5500
++ if (machine == MACHINE_SHARP_SL5500)
++ qteRotation = 3;
++
++ // SL-B500 Íѥϥå¯(¤È¤ê¤¢¤¨¤º¡¢¤Í)
++ if (machine == MACHINE_SHARP_SLB500)
++ qteRotation = 3;
++
++ // À¸¥Õ¥ì¡¼¥à¥Ð¥Ã¥Õ¥¡¤Î¥µ¥¤¥º¤òÆÀ¤ë
++ if (qteRotation & 1) {
++ fbSize.setWidth(qteSize.height());
++ fbSize.setHeight(qteSize.width());
++ } else {
++ fbSize = qteSize;
++ }
++
++ //
++ const char *envRotStr = getenv(SDL_QT_ROTATION_ENV_NAME);
++ userRotation = envRotStr ? atoi(envRotStr) : -1;
++ if ((userRotation >= 0 ? userRotation : qteRotation) & 1) {
++ userSize.setWidth(fbSize.height());
++ userSize.setHeight(fbSize.width());
++ } else {
++ userSize = fbSize;
++ }
++
++ if (width <= userSize.width() && height <= userSize.height()) {
++ // ´Ä¶­ÊÑ¿ô¤Ç²óž³ÑÅÙ¤¬»ØÄꤵ¤ì¤Æ¤¤¤ì¤Ð¡¢¤½¤ì¤òºÇÍ¥À褹¤ë
++ if (userRotation >= 0)
++ sdlRotation = userRotation;
++ else {
++ // ¤Ç¡¢¤½¤Î»ØÄ̵꤬¤¤¤Î¤Ç¤¢¤ì¤Ð qte ¤Î²óž³ÑÅ٤˹ç¤ï¤»¤ë¤À¤±
++ // ¤Ê¤ó¤À¤±¤É¡¢SL-C700 ¤Ç¤Ï¤Á¤ç¤¤Ê£»¨¡£
++ if (is_VGA_machine && (fbSize.width() == 320) && (fbSize.height() == 240)) {
++ if (isInputStyle)
++ sdlRotation = 2;
++ else
++ sdlRotation = qteRotation;
++ } else {
++ sdlRotation = qteRotation;
++ }
++ }
++ } else if (width <= fbSize.width() && height <= fbSize.height()) {
++ sdlRotation = 0;
++ if (is_VGA_machine && (fbSize.width() == 320) && (fbSize.height() == 240) && isInputStyle)
++ sdlRotation = 2;
++ } else if (width <= fbSize.height() && height <= fbSize.width()) {
++ sdlRotation = 1;
+ } else {
+ SDL_SetError("Unsupported resolution, %dx%d\n", width, height);
++ return NULL;
+ }
++
++ if (fb_hwrot == 1)
++ sdlRotation = 0;
++
++ if (getenv(SDL_QT_INVERT_ROTATION_ENV_NAME) != NULL) {
++ sdlRotation = (sdlRotation + 2) & 3;
++ }
++
++ LOG("QT_SetVideoMode: argSize=%dx%d\n", width, height);
++ LOG("QT_SetVideoMode: qteSize=%dx%d\n",
++ qteSize.width(), qteSize.height());
++ LOG("QT_SetVideoMode: fbSize=%dx%d\n",
++ fbSize.width(), fbSize.height());
++ LOG("QT_SetVideoMode: qteRotation=%d\n", qteRotation);
++ LOG("QT_SetVideoMode: userRotation=%d\n", userRotation);
++ LOG("QT_SetVideoMode: sdlRotation=%d\n", sdlRotation);
++
++ current->flags = 0;//SDL_FULLSCREEN; // We always run fullscreen.
++ current->w = width;
++ current->h = height;
++ SDL_Win->setScreenRotation(sdlRotation, qteRotation);
++ SDL_Win->setFBSize(fbSize);
++
++ if (machine == MACHINE_SHARP_SLA300)
++ SDL_Win->setSLA300InputFix(true);
++
++ // keyboard rotation
++ qteKeyRotation = qteRotation;
++// fprintf(stderr, "%d\n", (machine == MACHINE_SHARP_SLC700));
++// fprintf(stderr, "%d\n", isQteQvga);
++ if (isQteQvga && is_VGA_machine)
++ qteKeyRotation = 3;
++ else if (machine == MACHINE_SHARP_SLB500)
++ qteKeyRotation = 3;
++
++ if (isQteQvga && fb_hwrot == 1)
++ qteKeyRotation = 1;
++
++ sdlKeyRotation = sdlRotation;
++
++ SDL_Win->setKeyRotation(sdlKeyRotation, qteKeyRotation);
++
++ LOG("QT_SetVideoMode: qteKeyRotation=%d\n", qteKeyRotation);
++ LOG("QT_SetVideoMode: sdlKeyRotation=%d\n", sdlKeyRotation);
++
+ if ( flags & SDL_OPENGL ) {
+ SDL_SetError("OpenGL not supported");
+ return(NULL);
+- }
++ }
+ /* Create the QImage framebuffer */
+- qimage = new QImage(current->w, current->h, bpp);
+- if (qimage->isNull()) {
+- SDL_SetError("Couldn't create screen bitmap");
+- delete qimage;
+- return(NULL);
++
++ // frame buffer memory mapping
++ if (fb_direct == 1) {
++ current->pitch = finfo.line_length;
++ current->flags = (SDL_FULLSCREEN|SDL_HWSURFACE);
++ mapped_offset = (((long)finfo.smem_start) -
++ (((long)finfo.smem_start)&~(PAGE_SIZE-1)));
++ mapped_memlen = finfo.smem_len+mapped_offset;
++ if(console_fd >0 ) {
++ mapped_mem = mmap(NULL, mapped_memlen,PROT_READ|PROT_WRITE, MAP_SHARED, console_fd, 0);
++ fb_offset=(vinfo.xres-width)+(vinfo.yres-height)*vinfo.xres;
++ current->pixels = (void *)((int )mapped_mem+fb_offset);
++ _this->UpdateRects = QT_DirectUpdate;
++ } else {
++ qimage = new QImage(current->w, current->h, bpp);
++ if (qimage->isNull()) {
++ SDL_SetError("Couldn't create screen bitmap");
++ delete qimage;
++ return(NULL);
++ }
++ current->pixels = (void *)qimage->bits();
++ _this->UpdateRects = QT_NormalUpdate;
++ SDL_Win->setImage(qimage);
++// SDL_Win->setFullscreen(true); //comment to non update taskbar
++ }
++ } else {
++ qimage = new QImage(current->w, current->h, bpp);
++ if (qimage->isNull()) {
++ SDL_SetError("Couldn't create screen bitmap");
++ delete qimage;
++ return(NULL);
++ }
++ current->pitch = qimage->bytesPerLine();
++ current->pixels = (void *)qimage->bits();
++ _this->UpdateRects = QT_NormalUpdate;
++ SDL_Win->setImage(qimage);
++// SDL_Win->setFullscreen(true); //comment to non update taskbar
++
+ }
+- current->pitch = qimage->bytesPerLine();
+- current->pixels = (void *)qimage->bits();
+- SDL_Win->setImage(qimage);
+- _this->UpdateRects = QT_NormalUpdate;
+- SDL_Win->setFullscreen(true);
++
++
++ // fprintf(stderr,"QT_SetVideoMode() qImage:%dx%d %d\n",
++ // qimage->width(), qimage->height(), qimage->bytesPerLine());
+ /* We're done */
+ return(current);
+ }
+@@ -361,13 +864,19 @@
+ {
+ if(SDL_Win->lockScreen()) {
+ for(int i=0; i<numrects; ++i ) {
+- QRect rect(rects[i].x, rects[i].y,
+- rects[i].w, rects[i].h);
+- SDL_Win->repaintRect(rect);
++ QRect rect(rects[i].x, rects[i].y,
++ rects[i].w, rects[i].h);
++ SDL_Win->repaintRect(rect);
+ }
+ SDL_Win->unlockScreen();
+ }
+ }
++
++ static void QT_DirectUpdate(_THIS, int numrects, SDL_Rect *rects)
++ {
++
++ }
++
+ /* Is the system palette settable? */
+ int QT_SetColors(_THIS, int firstcolor, int ncolors, SDL_Color *colors)
+ {
+@@ -383,10 +892,36 @@
+ // -- David Hedbor
+ // delete SDL_Win;
+ // SDL_Win = 0;
++
++ if ( console_fd > 0 ) {
++ /* Restore the original video mode and palette */
++ if (fb_hwrot == 1) {
++ int tmp_ioctl_data=120;
++ ioctl(console_fd, W100FB_CONFIG_EX, &tmp_ioctl_data);
++ }
++
++ ioctl(console_fd, FBIOPUT_VSCREENINFO, &saved_vinfo);
++
++ /* We're all done with the framebuffer */
++ close(console_fd);
++ console_fd = -1;
++ }
++
+ _this->screen->pixels = NULL;
+ QT_GrabInput(_this, SDL_GRAB_OFF);
++/*
++ {
++ QCopEnvelope e("QPE/KeyHelper", "repeater(int)");
++ e << 1;
++ }
++*/
++ if (isKHloaded)
++ system("qcop QPE/KeyHelper \"reload()\""); //QcopEnvelope can't use.
++
+ }
+
++
++
+ static int QT_IconifyWindow(_THIS) {
+ SDL_Win->hide();
+
+Index: SDL-1.2.7/src/video/fbcon/SDL_fbvideo.c
+===================================================================
+--- SDL-1.2.7.orig/src/video/fbcon/SDL_fbvideo.c 2005-03-02 22:24:43.458491481 +0100
++++ SDL-1.2.7/src/video/fbcon/SDL_fbvideo.c 2005-03-02 22:24:46.875008802 +0100
+@@ -51,7 +51,7 @@
+ #include "SDL_fbmatrox.h"
+ #include "SDL_fbriva.h"
+
+-
++/* #define FBCON_DEBUG 1 */
+ #if defined(i386) && defined(FB_TYPE_VGA_PLANES)
+ #define VGA16_FBCON_SUPPORT
+ #ifndef FB_AUX_VGA_PLANES_VGA4
+@@ -76,9 +76,11 @@
+ { 0, 0, 720, 576 }, /* PAL */
+ { 0, 0, 720, 480 }, /* NTSC */
+ { 0, 0, 640, 480 }, /* 16 bpp: 0x111, or 273 */
++ { 0, 0, 480, 640 },
+ { 0, 0, 640, 400 }, /* 8 bpp: 0x100, or 256 */
+ { 0, 0, 512, 384 },
+ { 0, 0, 320, 240 },
++ { 0, 0, 240, 320 },
+ { 0, 0, 320, 200 }
+ };
+ static const struct {
+@@ -112,9 +114,11 @@
+ */
+ { 320, 200, 79440, 16, 16, 20, 4, 48, 1, 0, 2 }, /* 70 Hz */
+ { 320, 240, 63492, 16, 16, 16, 4, 48, 2, 0, 2 }, /* 72 Hz */
++ { 240, 320, 63492, 16, 16, 16, 4, 48, 3, 0, 2 }, /* 72 Hz */
+ { 512, 384, 49603, 48, 16, 16, 1, 64, 3, 0, 0 }, /* 78 Hz */
+ { 640, 400, 31746, 96, 32, 41, 1, 64, 3, 2, 0 }, /* 85 Hz */
+ { 640, 480, 31746, 120, 16, 16, 1, 64, 3, 0, 0 }, /* 75 Hz */
++ { 480, 640, 31746, 120, 16, 16, 1, 64, 4, 0, 0 }, /* 75 Hz */
+ { 768, 576, 26101, 144, 16, 28, 6, 112, 4, 0, 0 }, /* 60 Hz */
+ { 800, 600, 20000, 64, 56, 23, 37, 120, 6, 3, 0 }, /* 72 Hz */
+ { 960, 720, 17686, 144, 24, 28, 8, 112, 4, 0, 0 }, /* 60 Hz */
+@@ -152,6 +156,10 @@
+ struct fb_var_screeninfo *vinfo);
+ static void FB_RestorePalette(_THIS);
+
++static char *console_fd_buf;
++static char *mapped_mem_fb;
++static int rotation_flag;
++
+ /* FB driver bootstrap functions */
+
+ static int FB_Available(void)
+@@ -241,18 +249,30 @@
+
+ mode_okay = 0;
+ vinfo->bits_per_pixel = (index+1)*8;
+- vinfo->xres = *w;
+- vinfo->xres_virtual = *w;
+- vinfo->yres = *h;
+- vinfo->yres_virtual = *h;
++ if ((rotation_flag == 0) || (rotation_flag == 2)) {
++ vinfo->xres = *w;
++ vinfo->xres_virtual = *w;
++ vinfo->yres = *h;
++ vinfo->yres_virtual = *h;
++ } else {
++ vinfo->xres = *h;
++ vinfo->xres_virtual = *h;
++ vinfo->yres = *w;
++ vinfo->yres_virtual = *w;
++ }
+ vinfo->activate = FB_ACTIVATE_TEST;
+ if ( ioctl(console_fd, FBIOPUT_VSCREENINFO, vinfo) == 0 ) {
+ #ifdef FBCON_DEBUG
+ fprintf(stderr, "Checked mode %dx%d at %d bpp, got mode %dx%d at %d bpp\n", *w, *h, (index+1)*8, vinfo->xres, vinfo->yres, vinfo->bits_per_pixel);
+ #endif
+ if ( (((vinfo->bits_per_pixel+7)/8)-1) == index ) {
+- *w = vinfo->xres;
+- *h = vinfo->yres;
++ if ((rotation_flag == 0) || (rotation_flag == 2)) {
++ *w = vinfo->xres;
++ *h = vinfo->yres;
++ } else {
++ *h = vinfo->xres;
++ *w = vinfo->yres;
++ }
+ mode_okay = 1;
+ }
+ }
+@@ -332,6 +352,7 @@
+ unsigned int current_w;
+ unsigned int current_h;
+ const char *SDL_fbdev;
++ const char *SDL_rot_flag;
+
+ /* Initialize the library */
+ SDL_fbdev = getenv("SDL_FBDEV");
+@@ -344,6 +365,14 @@
+ return(-1);
+ }
+
++ SDL_rot_flag = getenv("SDL_FBROT");
++ if ( SDL_rot_flag == NULL ) {
++ rotation_flag = 0;
++ } else {
++ rotation_flag = atoi(SDL_rot_flag);
++ }
++
++
+ #ifndef DISABLE_THREADS
+ /* Create the hardware surface lock mutex */
+ hw_lock = SDL_CreateMutex();
+@@ -407,13 +436,33 @@
+ mapped_offset = (((long)finfo.smem_start) -
+ (((long)finfo.smem_start)&~(PAGE_SIZE-1)));
+ mapped_memlen = finfo.smem_len+mapped_offset;
+- mapped_mem = mmap(NULL, mapped_memlen,
+- PROT_READ|PROT_WRITE, MAP_SHARED, console_fd, 0);
+- if ( mapped_mem == (char *)-1 ) {
+- SDL_SetError("Unable to memory map the video hardware");
+- mapped_mem = NULL;
+- FB_VideoQuit(this);
+- return(-1);
++ if (rotation_flag == 0) {
++ mapped_mem = mmap(NULL, mapped_memlen,
++ PROT_READ|PROT_WRITE, MAP_SHARED, console_fd, 0);
++ if ( mapped_mem == (char *)-1 ) {
++ SDL_SetError("Unable to memory map the video hardware");
++ mapped_mem = NULL;
++ FB_VideoQuit(this);
++ return(-1);
++ }
++ } else {
++
++ console_fd_buf = (char *)malloc(640*480*2);
++
++ if (console_fd_buf == NULL){
++ SDL_SetError("Unable to memory for buffer");
++ return(-1);
++ }
++
++ mapped_mem_fb = mmap(NULL, mapped_memlen,
++ PROT_READ|PROT_WRITE, MAP_SHARED, console_fd, 0);
++ if ( mapped_mem_fb == (char *)-1 ) {
++ SDL_SetError("Unable to memory map the video hardware");
++ mapped_mem_fb = NULL;
++ FB_VideoQuit(this);
++ return(-1);
++ }
++ mapped_mem = console_fd_buf;
+ }
+
+ /* Determine the current screen depth */
+@@ -555,6 +604,7 @@
+
+ /* Various screen update functions available */
+ static void FB_DirectUpdate(_THIS, int numrects, SDL_Rect *rects);
++static void FB_RotationUpdate(_THIS, int numrects, SDL_Rect *rects);
+ #ifdef VGA16_FBCON_SUPPORT
+ static void FB_VGA16Update(_THIS, int numrects, SDL_Rect *rects);
+ #endif
+@@ -725,7 +775,7 @@
+ Uint32 Bmask;
+ char *surfaces_mem;
+ int surfaces_len;
+-
++
+ /* Set the terminal into graphics mode */
+ if ( FB_EnterGraphicsMode(this) < 0 ) {
+ return(NULL);
+@@ -734,6 +784,8 @@
+ /* Restore the original palette */
+ FB_RestorePalette(this);
+
++ flags &= ~SDL_DOUBLEBUF;
++
+ /* Set the video mode and get the final screen format */
+ if ( ioctl(console_fd, FBIOGET_VSCREENINFO, &vinfo) < 0 ) {
+ SDL_SetError("Couldn't get console screen info");
+@@ -748,13 +800,24 @@
+ vinfo.activate = FB_ACTIVATE_NOW;
+ vinfo.accel_flags = 0;
+ vinfo.bits_per_pixel = bpp;
+- vinfo.xres = width;
+- vinfo.xres_virtual = width;
+- vinfo.yres = height;
+- if ( flags & SDL_DOUBLEBUF ) {
+- vinfo.yres_virtual = height*2;
++ if ((rotation_flag == 0) || (rotation_flag == 2)) {
++ vinfo.xres = width;
++ vinfo.xres_virtual = width;
++ vinfo.yres = height;
++ if ( flags & SDL_DOUBLEBUF ) {
++ vinfo.yres_virtual = height*2;
++ } else {
++ vinfo.yres_virtual = height;
++ }
+ } else {
+- vinfo.yres_virtual = height;
++ vinfo.xres = height;
++ vinfo.xres_virtual = height;
++ vinfo.yres = width;
++ if ( flags & SDL_DOUBLEBUF ) {
++ vinfo.yres_virtual = width*2;
++ } else {
++ vinfo.yres_virtual = width;
++ }
+ }
+ vinfo.xoffset = 0;
+ vinfo.yoffset = 0;
+@@ -776,6 +839,15 @@
+ return(NULL);
+ }
+ }
++ vinfo.xres = width;
++ vinfo.xres_virtual = width;
++ vinfo.yres = height;
++ if ( flags & SDL_DOUBLEBUF ) {
++ vinfo.yres_virtual = height*2;
++ } else {
++ vinfo.yres_virtual = height;
++ }
++
+ } else {
+ int maxheight;
+
+@@ -821,7 +893,9 @@
+ SDL_SetError("Couldn't get console hardware info");
+ return(NULL);
+ }
+-
++#ifdef FBCON_DEBUG
++ print_finfo(&finfo);
++#endif
+ /* Save hardware palette, if needed */
+ FB_SavePalette(this, &finfo, &vinfo);
+
+@@ -829,7 +903,11 @@
+ current->flags = (SDL_FULLSCREEN|SDL_HWSURFACE);
+ current->w = vinfo.xres;
+ current->h = vinfo.yres;
+- current->pitch = finfo.line_length;
++ if ((rotation_flag == 0) || (rotation_flag == 2) ) {
++ current->pitch = finfo.line_length;
++ } else {
++ current->pitch = vinfo.xres*2;
++ }
+ current->pixels = mapped_mem+mapped_offset;
+
+ /* Set up the information for hardware surfaces */
+@@ -863,7 +941,7 @@
+ }
+
+ /* Set the update rectangle function */
+- this->UpdateRects = FB_DirectUpdate;
++ this->UpdateRects = FB_RotationUpdate;
+
+ /* We're done */
+ return(current);
+@@ -1123,6 +1201,89 @@
+ return;
+ }
+
++static void FB_RotationUpdate(_THIS, int numrects, SDL_Rect *rects)
++{
++ unsigned short *pDst;
++ unsigned short *pSrc;
++ unsigned int width;
++ unsigned int height;
++ unsigned int srcYAdd;
++ unsigned int dstXAdd;
++ unsigned int dstYSub;
++ unsigned int i;
++ unsigned int dstH;
++ unsigned int dstW;
++
++#ifdef FBCON_DEBUG
++ fprintf(stderr,"rotation_flag = %d \n",rotation_flag);
++#endif
++ switch (rotation_flag) {
++ case 0:
++ break;
++ case 1:
++ memcpy(mapped_mem_fb,mapped_mem,640*480*2);
++ break;
++ case 2:
++ memcpy(mapped_mem_fb,mapped_mem,640*480*2);
++ break;
++ case 3:
++ dstW=cache_vinfo.xres;
++ dstH=cache_vinfo.yres;
++#ifdef FBCON_DEBUG
++ fprintf(stderr,"dstH = %d : dstW = %d : rects->x = %d : rects->y = %d\n",dstH,dstW);
++ fprintf(stderr,"rects->x = %d : rects->y = %d : rects->w = %d : rects->h = %d\n",rects->x,rects->y,rects->w,rects->h);
++#endif
++ while (numrects) {
++ if (rects->w != dstW || rects->h != dstH) {
++ pSrc = mapped_mem + (rects->x + rects->y * dstW)*2;
++ pDst = mapped_mem_fb + (dstH-1+rects->x * dstH - rects->y)*2;
++
++ width = rects->w;
++ height = rects->h;
++
++ srcYAdd = dstW - rects->w;
++ dstXAdd = dstH;
++ dstYSub = (dstH * rects->w) + 1;
++
++ while (height--) {
++ i = width;
++ while (i--) {
++ *pDst = *pSrc ++;
++ pDst += dstXAdd;
++ }
++ pSrc += srcYAdd;
++ pDst -= dstYSub;
++ }
++
++ } else {
++ pDst=mapped_mem_fb+dstH*2-2;
++ pSrc=mapped_mem;
++ height=dstH;
++ width=dstW;
++ dstXAdd=height;
++ dstYSub=dstW*dstH+1;
++
++ while (height--) {
++ i = width;
++ while (i--) {
++ *pDst = *pSrc ++;
++ pDst += dstXAdd;
++ }
++ pDst -= dstYSub;
++ }
++ }
++ numrects--;
++ rects++;
++ }
++ break;
++ default:
++ break;
++ }
++
++
++
++}
++
+ #ifdef VGA16_FBCON_SUPPORT
+ /* Code adapted with thanks from the XFree86 VGA16 driver! :) */
+ #define writeGr(index, value) \
+Index: SDL-1.2.7/src/video/fbcon/SDL_fbevents.c
+===================================================================
+--- SDL-1.2.7.orig/src/video/fbcon/SDL_fbevents.c 2005-03-02 22:24:43.458491481 +0100
++++ SDL-1.2.7/src/video/fbcon/SDL_fbevents.c 2005-03-02 22:24:46.876008660 +0100
+@@ -60,7 +60,13 @@
+ #ifndef GPM_NODE_FIFO
+ #define GPM_NODE_FIFO "/dev/gpmdata"
+ #endif
++#define POINTERCAL "/etc/pointercal"
+
++static struct SDL_cal {
++ long ok;
++ long a, b, c, d, e, f, s;
++ long rotate;
++} cal = { 0 };
+
+ /* The translation tables from a console scancode to a SDL keysym */
+ #define NUM_VGAKEYMAPS (1<<KG_CAPSSHIFT)
+@@ -317,6 +323,7 @@
+ MOUSE_MS,
+ MOUSE_BM,
+ MOUSE_ELO,
++ TS_SLC7X0,
+ NUM_MOUSE_DRVS
+ } mouse_drv = MOUSE_NONE;
+
+@@ -500,6 +507,9 @@
+ mousedev = getenv("SDL_MOUSEDEV");
+ mouse_fd = -1;
+
++ const char *sdl_rot_flag;
++ sdl_rot_flag = getenv("SDL_FBROT");
++
+ /* ELO TOUCHSCREEN SUPPORT */
+
+ if( (mousedrv != NULL) && (strcmp(mousedrv, "ELO") == 0) ) {
+@@ -601,9 +611,39 @@
+ mouse_drv = MOUSE_MS;
+ }
+ }
++ /* Default to a SLC7X0 touch screen */
++ if ( mouse_fd < 0 ) {
++ mousedev = "/dev/ts";
++ mouse_fd = open(mousedev, O_RDONLY, 0);
++ if ( mouse_fd >= 0 ) {
++ FILE *pcal;
++ cal.ok = 0;
++ pcal = fopen(POINTERCAL, "r");
++ if(pcal == NULL){
++ fprintf(stderr, "Warning: cannot open " POINTERCAL ".\n");
++ }else{
++ int n;
++ n = fscanf(pcal, "%d %d %d %d %d %d %d",
++ &cal.a, &cal.b, &cal.c, &cal.d, &cal.e, &cal.f, &cal.s);
++ if(n != 7){
++ fprintf(stderr, "Warning: " POINTERCAL " is unknown format.\n");
++ }else{
++ cal.ok = 1;
++ }
++ fclose(pcal);
++ }
++ if ( sdl_rot_flag == NULL ) {
++ cal.rotate = 0;
++ } else {
++ cal.rotate = atoi(sdl_rot_flag);
++ }
++ mouse_drv = TS_SLC7X0;
++ }
++ }
+ if ( mouse_fd < 0 ) {
+ mouse_drv = MOUSE_NONE;
+ }
++
+ return(mouse_fd);
+ }
+
+@@ -678,6 +718,10 @@
+ packetsize = ELO_PACKET_SIZE;
+ relative = 0;
+ break;
++ case TS_SLC7X0:
++ packetsize = 8;
++ relative = 0;
++ break;
+ case NUM_MOUSE_DRVS:
+ /* Uh oh.. */
+ packetsize = 0;
+@@ -810,6 +854,25 @@
+ */
+
+ case MOUSE_ELO:
++ case TS_SLC7X0:
++ /* Get current mouse state */
++ button = ((mousebuf[i+1] << 8)+mousebuf[i])/500;
++ dx = (mousebuf[i+3] << 8)+mousebuf[i+2];
++ dy = (mousebuf[i+5] << 8)+mousebuf[i+4];
++ if(cal.ok){
++ long X, Y;
++ X = (cal.a * dx + cal.b * dy + cal.c) / cal.s;
++ Y = (cal.d * dx + cal.e * dy + cal.f) / cal.s;
++ dx = X;
++ dy = Y;
++ }
++ if(cal.rotate == 3){
++ int tmp;
++ tmp=dx;
++ dx = dy;
++ dy = 480-tmp;
++ }
++ break;
+ case NUM_MOUSE_DRVS:
+ /* Uh oh.. */
+ dx = 0;
diff --git a/packages/obsolete/libsdl/libsdl-qpe-1.2.7/fixlibs.patch b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/fixlibs.patch
new file mode 100644
index 0000000000..899e31482c
--- /dev/null
+++ b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/fixlibs.patch
@@ -0,0 +1,25 @@
+--- SDL-1.2.7/configure.in~fixlibs 2005-10-06 10:27:59.025396872 +0200
++++ SDL-1.2.7/configure.in 2005-10-06 10:30:16.963087411 +0200
+@@ -1508,8 +1508,8 @@
+ AC_MSG_RESULT($video_qtopia)
+ if test x$video_qtopia = xyes; then
+ CFLAGS="$CFLAGS -DENABLE_QTOPIA -DQT_QWS_EBX -DQT_QWS_CUSTOM -DQWS -I${QPEDIR}/include -I${QTDIR}/include/ -DNO_DEBUG -fno-rtti -fno-exceptions"
+- SDL_LIBS="$SDL_LIBS -L${QPEDIR}/lib -L${QTDIR}/lib/ -lqpe -lqte"
+- SDL_CFLAGS="$SDL_CFLAGS -DQWS"
++ SDL_LIBS="$SDL_LIBS -Wl,-rpath-link -Wl,${QPEDIR}/lib -Wl,-rpath-link -Wl,${QTDIR}/lib"
++ SYSTEM_LIBS="$SYSTEM_LIBS -L${QPEDIR}/lib -L${QTDIR}/lib/ -lqpe -lqte"
+ VIDEO_SUBDIRS="$VIDEO_SUBDIRS qtopia"
+ VIDEO_DRIVERS="$VIDEO_DRIVERS qtopia/libvideo_qtopia.la"
+ else
+@@ -1803,11 +1803,6 @@
+ CheckPTHREAD
+ CheckSIGACTION
+ CheckAltivec
+- # Set up files for the main() stub
+- if test "x$video_qtopia" = "xyes"; then
+- SDL_CFLAGS="$SDL_CFLAGS -Dmain=SDL_main"
+-
+- fi
+ # Set up files for the audio library
+ # We use the OSS and ALSA API's, not the Sun audio API
+ #if test x$enable_audio = xyes; then
diff --git a/packages/obsolete/libsdl/libsdl-qpe-1.2.7/gcc34.patch b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/gcc34.patch
new file mode 100644
index 0000000000..e3738e961e
--- /dev/null
+++ b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/gcc34.patch
@@ -0,0 +1,176 @@
+diff -ru SDL-1.2.7/src/audio/SDL_mixer_MMX.c SDL-1.2.7.mod/src/audio/SDL_mixer_MMX.c
+--- SDL-1.2.7/src/audio/SDL_mixer_MMX.c 2002-11-09 07:13:28.000000000 +0100
++++ SDL-1.2.7.mod/src/audio/SDL_mixer_MMX.c 2004-04-25 18:15:46.335228624 +0200
+@@ -19,9 +19,9 @@
+ " movl %1,%%esi\n" // esi = src
+ " movl %3,%%eax\n" // eax = volume
+
+-" movl %2,%%ebx\n" // ebx = size
++" movl %2,%%edx\n" // edx = size
+
+-" shrl $4,%%ebx\n" // process 16 bytes per iteration = 8 samples
++" shrl $4,%%edx\n" // process 16 bytes per iteration = 8 samples
+
+ " jz .endS16\n"
+
+@@ -95,7 +95,7 @@
+
+ " addl $16,%%edi\n"
+
+-" dec %%ebx\n"
++" dec %%edx\n"
+
+ " jnz .mixloopS16\n"
+
+@@ -105,7 +105,7 @@
+ :
+ : "m" (dst), "m"(src),"m"(size),
+ "m"(volume)
+- : "eax","ebx", "esi", "edi","memory"
++ : "eax","edx", "esi", "edi","memory"
+ );
+ }
+
+@@ -123,7 +123,7 @@
+ " movl %1,%%esi\n" // esi = src
+ " movl %3,%%eax\n" // eax = volume
+
+-" movd %%ebx,%%mm0\n"
++" movd %%edx,%%mm0\n"
+ " movq %%mm0,%%mm1\n"
+ " psllq $16,%%mm0\n"
+ " por %%mm1,%%mm0\n"
+@@ -132,10 +132,10 @@
+ " psllq $16,%%mm0\n"
+ " por %%mm1,%%mm0\n"
+
+-" movl %2,%%ebx\n" // ebx = size
+-" shr $3,%%ebx\n" // process 8 bytes per iteration = 8 samples
++" movl %2,%%edx\n" // edx = size
++" shr $3,%%edx\n" // process 8 bytes per iteration = 8 samples
+
+-" cmp $0,%%ebx\n"
++" cmp $0,%%edx\n"
+ " je .endS8\n"
+
+ ".align 16\n"
+@@ -169,7 +169,7 @@
+ " movq %%mm3,(%%edi)\n" // store back to ram
+ " addl $8,%%edi\n"
+
+-" dec %%ebx\n"
++" dec %%edx\n"
+
+ " jnz .mixloopS8\n"
+
+@@ -178,7 +178,7 @@
+ :
+ : "m" (dst), "m"(src),"m"(size),
+ "m"(volume)
+- : "eax","ebx", "esi", "edi","memory"
++ : "eax","edx", "esi", "edi","memory"
+ );
+ }
+ #endif
+diff -ru SDL-1.2.7/src/cpuinfo/SDL_cpuinfo.c SDL-1.2.7.mod/src/cpuinfo/SDL_cpuinfo.c
+--- SDL-1.2.7/src/cpuinfo/SDL_cpuinfo.c 2004-02-10 16:31:35.000000000 +0100
++++ SDL-1.2.7.mod/src/cpuinfo/SDL_cpuinfo.c 2004-04-25 18:15:46.336228472 +0200
+@@ -118,7 +118,7 @@
+ " movl %%edi,%%ebx\n"
+ : "=m" (features)
+ :
+- : "%eax", "%ebx", "%ecx", "%edx", "%edi"
++ : "%eax", "%ecx", "%edx", "%edi"
+ );
+ #elif defined(_MSC_VER)
+ __asm {
+@@ -153,7 +153,7 @@
+ " movl %%edi,%%ebx\n"
+ : "=m" (features)
+ :
+- : "%eax", "%ebx", "%ecx", "%edx", "%edi"
++ : "%eax", "%ecx", "%edx", "%edi"
+ );
+ #elif defined(_MSC_VER)
+ __asm {
+diff -ru SDL-1.2.7/src/video/SDL_yuv_mmx.c SDL-1.2.7.mod/src/video/SDL_yuv_mmx.c
+--- SDL-1.2.7/src/video/SDL_yuv_mmx.c 2004-02-18 18:22:04.000000000 +0100
++++ SDL-1.2.7.mod/src/video/SDL_yuv_mmx.c 2004-04-25 18:15:46.337228320 +0200
+@@ -120,12 +120,12 @@
+ "movd (%2), %%mm2\n" // 0 0 0 0 l3 l2 l1 l0
+ "punpcklbw %%mm7,%%mm1\n" // 0 v3 0 v2 00 v1 00 v0
+ "punpckldq %%mm1,%%mm1\n" // 00 v1 00 v0 00 v1 00 v0
+- "psubw _MMX_0080w,%%mm1\n" // mm1-128:r1 r1 r0 r0 r1 r1 r0 r0
++ "psubw %[_MMX_0080w],%%mm1\n" // mm1-128:r1 r1 r0 r0 r1 r1 r0 r0
+
+ // create Cr_g (result in mm0)
+ "movq %%mm1,%%mm0\n" // r1 r1 r0 r0 r1 r1 r0 r0
+- "pmullw _MMX_VgrnRGB,%%mm0\n"// red*-46dec=0.7136*64
+- "pmullw _MMX_VredRGB,%%mm1\n"// red*89dec=1.4013*64
++ "pmullw %[_MMX_VgrnRGB],%%mm0\n"// red*-46dec=0.7136*64
++ "pmullw %[_MMX_VredRGB],%%mm1\n"// red*89dec=1.4013*64
+ "psraw $6, %%mm0\n" // red=red/64
+ "psraw $6, %%mm1\n" // red=red/64
+
+@@ -134,8 +134,8 @@
+ "movq (%2,%4),%%mm3\n" // 0 0 0 0 L3 L2 L1 L0
+ "punpckldq %%mm3,%%mm2\n" // L3 L2 L1 L0 l3 l2 l1 l0
+ "movq %%mm2,%%mm4\n" // L3 L2 L1 L0 l3 l2 l1 l0
+- "pand _MMX_FF00w,%%mm2\n" // L3 0 L1 0 l3 0 l1 0
+- "pand _MMX_00FFw,%%mm4\n" // 0 L2 0 L0 0 l2 0 l0
++ "pand %[_MMX_FF00w],%%mm2\n" // L3 0 L1 0 l3 0 l1 0
++ "pand %[_MMX_00FFw],%%mm4\n" // 0 L2 0 L0 0 l2 0 l0
+ "psrlw $8,%%mm2\n" // 0 L3 0 L1 0 l3 0 l1
+
+ // create R (result in mm6)
+@@ -152,11 +152,11 @@
+ "movd (%1), %%mm1\n" // 0 0 0 0 u3 u2 u1 u0
+ "punpcklbw %%mm7,%%mm1\n" // 0 u3 0 u2 00 u1 00 u0
+ "punpckldq %%mm1,%%mm1\n" // 00 u1 00 u0 00 u1 00 u0
+- "psubw _MMX_0080w,%%mm1\n" // mm1-128:u1 u1 u0 u0 u1 u1 u0 u0
++ "psubw %[_MMX_0080w],%%mm1\n" // mm1-128:u1 u1 u0 u0 u1 u1 u0 u0
+ // create Cb_g (result in mm5)
+ "movq %%mm1,%%mm5\n" // u1 u1 u0 u0 u1 u1 u0 u0
+- "pmullw _MMX_UgrnRGB,%%mm5\n" // blue*-109dec=1.7129*64
+- "pmullw _MMX_UbluRGB,%%mm1\n" // blue*114dec=1.78125*64
++ "pmullw %[_MMX_UgrnRGB],%%mm5\n" // blue*-109dec=1.7129*64
++ "pmullw %[_MMX_UbluRGB],%%mm1\n" // blue*114dec=1.78125*64
+ "psraw $6, %%mm5\n" // blue=red/64
+ "psraw $6, %%mm1\n" // blue=blue/64
+
+@@ -238,8 +238,14 @@
+ "popl %%ebx\n"
+ :
+ : "m" (cr), "r"(cb),"r"(lum),
+- "r"(row1),"r"(cols),"r"(row2),"m"(x),"m"(y),"m"(mod)
+- : "%ebx"
++ "r"(row1),"r"(cols),"r"(row2),"m"(x),"m"(y),"m"(mod),
++ [_MMX_0080w] "m" (*_MMX_0080w),
++ [_MMX_00FFw] "m" (*_MMX_00FFw),
++ [_MMX_FF00w] "m" (*_MMX_FF00w),
++ [_MMX_VgrnRGB] "m" (*_MMX_VgrnRGB),
++ [_MMX_VredRGB] "m" (*_MMX_VredRGB),
++ [_MMX_UgrnRGB] "m" (*_MMX_UgrnRGB),
++ [_MMX_UbluRGB] "m" (*_MMX_UbluRGB)
+ );
+ }
+
+@@ -413,8 +419,16 @@
+ "popl %%ebx\n"
+ :
+ :"m" (cr), "r"(cb),"r"(lum),
+- "r"(row1),"r"(cols),"r"(row2),"m"(x),"m"(y),"m"(mod)
+- : "%ebx"
++ "r"(row1),"r"(cols),"r"(row2),"m"(x),"m"(y),"m"(mod),
++ [_MMX_0080w] "m" (*_MMX_0080w),
++ [_MMX_Ugrn565] "m" (*_MMX_Ugrn565),
++ [_MMX_Ublu5x5] "m" (*_MMX_Ublu5x5),
++ [_MMX_00FFw] "m" (*_MMX_00FFw),
++ [_MMX_Vgrn565] "m" (*_MMX_Vgrn565),
++ [_MMX_Vred5x5] "m" (*_MMX_Vred5x5),
++ [_MMX_Ycoeff] "m" (*_MMX_Ycoeff),
++ [_MMX_red565] "m" (*_MMX_red565),
++ [_MMX_grn565] "m" (*_MMX_grn565)
+ );
+ }
+
diff --git a/packages/obsolete/libsdl/libsdl-qpe-1.2.7/ipaq.patch b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/ipaq.patch
new file mode 100644
index 0000000000..bf57953c08
--- /dev/null
+++ b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/ipaq.patch
@@ -0,0 +1,143 @@
+Index: SDL-1.2.7/src/video/qtopia/Makefile.am
+===================================================================
+--- SDL-1.2.7.orig/src/video/qtopia/Makefile.am 2005-05-16 14:21:01.000000000 +0200
++++ SDL-1.2.7/src/video/qtopia/Makefile.am 2005-05-16 14:24:02.000000000 +0200
+@@ -22,4 +22,4 @@
+ # overwrite USER variables
+ CXXLD = $(CC)
+ CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \
+- $(AM_LDFLAGS) $(LDFLAGS) -lsupc++ -o $@
++ $(AM_LDFLAGS) $(LDFLAGS) -lopiecore2 -lsupc++ -o $@
+Index: SDL-1.2.7/src/video/qtopia/SDL_QWin.cc
+===================================================================
+--- SDL-1.2.7.orig/src/video/qtopia/SDL_QWin.cc 2005-05-16 14:21:01.000000000 +0200
++++ SDL-1.2.7/src/video/qtopia/SDL_QWin.cc 2005-05-16 14:24:02.000000000 +0200
+@@ -29,8 +29,11 @@
+ #include "SDL_QWin.h"
+ #include <qapplication.h>
+ #include <qpe/qpeapplication.h>
++#include <opie2/odevice.h>
+ #include <qdirectpainter_qws.h>
+
++using namespace Opie::Core;
++
+ extern int fb_hwrot;
+ extern int fb_direct;
+ extern bool is_VGA_machine;
+@@ -545,18 +548,32 @@
+ case Qt::Key_F7: scancode = SDLK_F7; break;
+ case Qt::Key_F8: scancode = SDLK_F8; break;
+ case Qt::Key_F9:
+- scancode = SDLK_F9;
+- mouse_button_mode=1;
++ if ( ODevice::inst ( )-> series ( ) == Model_iPAQ ) {
++ scancode = SDLK_y; }
++ else {
++ scancode = SDLK_F9;
++ mouse_button_mode=1; }
+ break;
+ case Qt::Key_F10:
+- scancode = SDLK_F10;
+- mouse_button_mode=2;
++ if ( ODevice::inst ( )-> series ( ) == Model_iPAQ ) {
++ scancode = SDLK_LALT; }
++ else {
++ scancode = SDLK_F10;
++ mouse_button_mode=2; }
+ break;
+ case Qt::Key_F11: scancode = SDLK_F11; break;
+- case Qt::Key_F12: scancode = SDLK_F12; break;
++ case Qt::Key_F12:
++ if ( ODevice::inst ( )-> series ( ) == Model_iPAQ ) {
++ scancode = SDLK_RETURN; }
++ else {
++ scancode = SDLK_F12; }
++ break;
+ case Qt::Key_F13:
+- scancode = SDLK_F13;
+- mouse_button_mode=3;
++ if ( ODevice::inst ( )-> series ( ) == Model_iPAQ ) {
++ scancode = SDLK_ESCAPE; }
++ else {
++ scancode = SDLK_F13;
++ mouse_button_mode=3; }
+ break;
+ case Qt::Key_F14: scancode = SDLK_F14; break;
+ case Qt::Key_F15: scancode = SDLK_F15; break;
+@@ -573,6 +590,9 @@
+ scancode = SDLK_RETURN;
+ break;
+
++ // To use record button on ipaq
++ case Qt::Key_F24: scancode = SDLK_LSHIFT; break;
++
+ default:
+ scancode = SDLK_UNKNOWN;
+ break;
+Index: SDL-1.2.7/src/video/qtopia/SDL_sysvideo.cc
+===================================================================
+--- SDL-1.2.7.orig/src/video/qtopia/SDL_sysvideo.cc 2005-05-16 14:21:00.000000000 +0200
++++ SDL-1.2.7/src/video/qtopia/SDL_sysvideo.cc 2005-05-16 14:24:02.000000000 +0200
+@@ -45,6 +45,7 @@
+ #include <qapplication.h>
+ #include <qpe/qpeapplication.h>
+ #include <qpe/qcopenvelope_qws.h>
++#include <opie2/odevice.h>
+ #include <qgfx_qws.h>
+ #include <qwindowsystem_qws.h>
+ #include <qwidget.h>
+@@ -66,6 +67,8 @@
+ #include "SDL_syswm_c.h"
+ #include "SDL_lowvideo.h"
+
++using namespace Opie::Core;
++
+ //#define QTOPIA_DEBUG
+ #define QTOPIA_LOG
+ #define QT_HIDDEN_SIZE 32 /* starting hidden window size */
+@@ -106,6 +109,7 @@
+ MACHINE_SHARP_SLC760,
+ MACHINE_SHARP_SLC860,
+ MACHINE_SHARP_SL6000,
++ MACHINE_IPAQ,
+ MACHINE_MAX
+ } machine_t;
+
+@@ -119,6 +123,7 @@
+ { "Sharp", "SL-C760", 0 },
+ { "Sharp", "SL-C860", 0 },
+ { "Sharp", "SL-6000", 0 },
++ { "HP", "HP IPAQ", 0 },
+ };
+
+ /* Name of the environment variable used to invert the screen rotation or not:
+@@ -423,6 +428,13 @@
+ machine = MACHINE_SHARP_SLC760;
+ else if (strstr(buf, "SHARP Boxer") != NULL)
+ machine = MACHINE_SHARP_SLC860;
++ else if ( ODevice::inst ( )-> series ( ) == Model_iPAQ )
++ machine = MACHINE_IPAQ;
++ else
++ {
++ machine = MACHINE_SHARP_SL5000D;
++ LOG("Can't detect machine defaulting to SL5000D");
++ }
+ }
+ fclose(fp);
+ } else {
+@@ -679,6 +691,15 @@
+ if (machine == MACHINE_SHARP_SL5500)
+ qteRotation = 3;
+
++ // HP IPaq
++ if ( ODevice::inst( )-> series ( ) == Model_iPAQ ) {
++ qteRotation = 3;
++ }
++ if ( ODevice::inst ( )-> model ( ) == Model_iPAQ_H38xx ) {
++ qteRotation = 1;
++ }
++
++
+ // SL-B500 Íѥϥå¯(¤È¤ê¤¢¤¨¤º¡¢¤Í)
+ if (machine == MACHINE_SHARP_SLB500)
+ qteRotation = 3;
diff --git a/packages/obsolete/libsdl/libsdl-qpe-1.2.7/kill-stdc++.patch b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/kill-stdc++.patch
new file mode 100644
index 0000000000..9629583f9b
--- /dev/null
+++ b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/kill-stdc++.patch
@@ -0,0 +1,408 @@
+
+#
+# Patch managed by http://www.holgerschurig.de/patcher.html
+#
+
+Index: SDL-1.2.7/src/main/Makefile.am
+===================================================================
+--- SDL-1.2.7.orig/src/main/Makefile.am 2005-03-02 22:24:52.592201093 +0100
++++ SDL-1.2.7/src/main/Makefile.am 2005-03-02 22:24:56.658626603 +0100
+@@ -46,3 +46,9 @@
+ (cd $(distdir) && rm -f $(BUILT_SOURCES))
+ cp -rp $(ARCH_SUBDIRS) $(distdir)
+ (cd $(distdir) && rm -rf `find . -name CVS`)
++
++# overwrite USER variables
++CXXLD = $(CC)
++CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \
++ $(AM_LDFLAGS) $(LDFLAGS) -lsupc++ -o $@
++
+Index: SDL-1.2.7/src/video/qtopia/Makefile.am
+===================================================================
+--- SDL-1.2.7.orig/src/video/qtopia/Makefile.am 2005-03-02 22:24:52.592201093 +0100
++++ SDL-1.2.7/src/video/qtopia/Makefile.am 2005-03-02 22:24:56.658626603 +0100
+@@ -17,3 +17,9 @@
+ SDL_sysevents.cc \
+ SDL_sysevents_c.h \
+ SDL_qmain.cc
++
++
++# overwrite USER variables
++CXXLD = $(CC)
++CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \
++ $(AM_LDFLAGS) $(LDFLAGS) -lsupc++ -o $@
+Index: SDL-1.2.7/acinclude.m4
+===================================================================
+--- SDL-1.2.7.orig/acinclude.m4 2005-03-02 22:24:41.232805923 +0100
++++ SDL-1.2.7/acinclude.m4 2005-03-02 22:24:56.667625332 +0100
+@@ -1305,11 +1305,11 @@
+ case $host_os in
+ aix3*)
+ version_type=linux
+- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
++ library_names_spec='${libname}${release}${shrext}$versuffix $libname.a'
+ shlibpath_var=LIBPATH
+
+ # AIX 3 has no versioning support, so we append a major version to the name.
+- soname_spec='${libname}${release}${shared_ext}$major'
++ soname_spec='${libname}${release}${shrext}$major'
+ ;;
+
+ aix4* | aix5*)
+@@ -1319,7 +1319,7 @@
+ hardcode_into_libs=yes
+ if test "$host_cpu" = ia64; then
+ # AIX 5 supports IA64
+- library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
++ library_names_spec='${libname}${release}${shrext}$major ${libname}${release}${shrext}$versuffix $libname${shrext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ else
+ # With GCC up to 2.95.x, collect2 would create an import file
+@@ -1345,12 +1345,12 @@
+ # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+ # instead of lib<name>.a to let people know that these are not
+ # typical AIX shared libraries.
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname${shrext}'
+ else
+ # We preserve .a as extension for shared libraries through AIX4.2
+ # and later when we are not doing run time linking.
+ library_names_spec='${libname}${release}.a $libname.a'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ soname_spec='${libname}${release}${shrext}$major'
+ fi
+ shlibpath_var=LIBPATH
+ fi
+@@ -1363,7 +1363,7 @@
+ ;;
+
+ beos*)
+- library_names_spec='${libname}${shared_ext}'
++ library_names_spec='${libname}${shrext}'
+ dynamic_linker="$host_os ld.so"
+ shlibpath_var=LIBRARY_PATH
+ ;;
+@@ -1371,8 +1371,8 @@
+ bsdi4*)
+ version_type=linux
+ need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname${shrext}'
++ soname_spec='${libname}${release}${shrext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+@@ -1405,14 +1405,14 @@
+ case $host_os in
+ cygwin*)
+ # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+- #soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+- soname_spec='`echo ${libname} | sed -e 's/^lib//'`${shared_ext}'
++ #soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shrext}'
++ soname_spec='`echo ${libname} | sed -e 's/^lib//'`${shrext}'
+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+- #soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+- soname_spec='`echo ${libname} | sed -e 's/^lib//'`${shared_ext}'
++ #soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shrext}'
++ soname_spec='`echo ${libname} | sed -e 's/^lib//'`${shrext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then
+ # It is most probably a Windows format PATH printed by
+@@ -1428,13 +1428,13 @@
+ ;;
+ pw32*)
+ # pw32 DLLs use 'pw' prefix rather than 'lib'
+- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
++ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shrext}'
+ ;;
+ esac
+ ;;
+
+ *)
+- library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
++ library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shrext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+@@ -1450,8 +1450,8 @@
+ # FIXME: Relying on posixy $() will cause problems for
+ # cross-compilation, but unfortunately the echo tests do not
+ # yet detect zsh echo's removal of \ escapes.
+- library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+- soname_spec='${libname}${release}${major}$shared_ext'
++ library_names_spec='${libname}${release}${versuffix}$shrext ${libname}${release}${major}$shrext ${libname}$shrext'
++ soname_spec='${libname}${release}${major}$shrext'
+ shlibpath_overrides_runpath=yes
+ shlibpath_var=DYLD_LIBRARY_PATH
+ shrext='$(test .$module = .yes && echo .so || echo .dylib)'
+@@ -1466,8 +1466,8 @@
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname$shrext'
++ soname_spec='${libname}${release}${shrext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+@@ -1480,12 +1480,12 @@
+ version_type=freebsd-$objformat
+ case $version_type in
+ freebsd-elf*)
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext} $libname${shrext}'
+ need_version=no
+ need_lib_prefix=no
+ ;;
+ freebsd-*)
+- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
++ library_names_spec='${libname}${release}${shrext}$versuffix $libname${shrext}$versuffix'
+ need_version=yes
+ ;;
+ esac
+@@ -1509,8 +1509,8 @@
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}${major} ${libname}${shrext}'
++ soname_spec='${libname}${release}${shrext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ hardcode_into_libs=yes
+ ;;
+@@ -1528,8 +1528,8 @@
+ dynamic_linker="$host_os dld.so"
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname${shrext}'
++ soname_spec='${libname}${release}${shrext}$major'
+ if test "X$HPUX_IA64_MODE" = X32; then
+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+ else
+@@ -1543,8 +1543,8 @@
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname${shrext}'
++ soname_spec='${libname}${release}${shrext}$major'
+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+ ;;
+@@ -1553,8 +1553,8 @@
+ dynamic_linker="$host_os dld.sl"
+ shlibpath_var=SHLIB_PATH
+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname${shrext}'
++ soname_spec='${libname}${release}${shrext}$major'
+ ;;
+ esac
+ # HP-UX runs *really* slowly unless shared libraries are mode 555.
+@@ -1573,8 +1573,8 @@
+ esac
+ need_lib_prefix=no
+ need_version=no
+- soname_spec='${libname}${release}${shared_ext}$major'
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
++ soname_spec='${libname}${release}${shrext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major ${libname}${release}${shrext} $libname${shrext}'
+ case $host_os in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+@@ -1608,8 +1608,8 @@
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname${shrext}'
++ soname_spec='${libname}${release}${shrext}$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+@@ -1632,12 +1632,12 @@
+ need_lib_prefix=no
+ need_version=no
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${shrext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ dynamic_linker='NetBSD (a.out) ld.so'
+ else
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} ${libname}${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major ${libname}${release}${shrext} ${libname}${shrext}'
++ soname_spec='${libname}${release}${shrext}$major'
+ dynamic_linker='NetBSD ld.elf_so'
+ fi
+ shlibpath_var=LD_LIBRARY_PATH
+@@ -1647,7 +1647,7 @@
+
+ newsos6)
+ version_type=linux
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname${shrext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+@@ -1656,8 +1656,8 @@
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname${shrext}'
++ soname_spec='${libname}${release}${shrext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ ;;
+@@ -1666,7 +1666,7 @@
+ version_type=sunos
+ need_lib_prefix=no
+ need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${shrext}$versuffix'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+@@ -1687,7 +1687,7 @@
+ libname_spec='$name'
+ shrext=".dll"
+ need_lib_prefix=no
+- library_names_spec='$libname${shared_ext} $libname.a'
++ library_names_spec='$libname${shrext} $libname.a'
+ dynamic_linker='OS/2 ld.exe'
+ shlibpath_var=LIBPATH
+ ;;
+@@ -1696,8 +1696,8 @@
+ version_type=osf
+ need_lib_prefix=no
+ need_version=no
+- soname_spec='${libname}${release}${shared_ext}$major'
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shrext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname${shrext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+@@ -1705,8 +1705,8 @@
+
+ sco3.2v5*)
+ version_type=osf
+- soname_spec='${libname}${release}${shared_ext}$major'
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
++ soname_spec='${libname}${release}${shrext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname${shrext}'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+@@ -1714,8 +1714,8 @@
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname${shrext}'
++ soname_spec='${libname}${release}${shrext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+ hardcode_into_libs=yes
+@@ -1725,7 +1725,7 @@
+
+ sunos4*)
+ version_type=sunos
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${shrext}$versuffix'
+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=yes
+@@ -1737,8 +1737,8 @@
+
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ version_type=linux
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname${shrext}'
++ soname_spec='${libname}${release}${shrext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ case $host_vendor in
+ sni)
+@@ -1762,16 +1762,16 @@
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ version_type=linux
+- library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+- soname_spec='$libname${shared_ext}.$major'
++ library_names_spec='$libname${shrext}.$versuffix $libname${shrext}.$major $libname${shrext}'
++ soname_spec='$libname${shrext}.$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ fi
+ ;;
+
+ uts4*)
+ version_type=linux
+- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+- soname_spec='${libname}${release}${shared_ext}$major'
++ library_names_spec='${libname}${release}${shrext}$versuffix ${libname}${release}${shrext}$major $libname${shrext}'
++ soname_spec='${libname}${release}${shrext}$major'
+ shlibpath_var=LD_LIBRARY_PATH
+ ;;
+
+@@ -3278,8 +3278,8 @@
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+- _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
++ _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shrext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
++ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shrext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+ # Commands to make compiler produce verbose output that lists
+ # what "hidden" libraries, object files and flags are used when
+ # linking a shared library.
+@@ -3288,7 +3288,7 @@
+ # explicitly linking system object files so we need to strip them
+ # from the output so that they don't get included in the library
+ # dependencies.
+- output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
++ output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shrext 2>&1 | grep "ld"`; rm -f libconftest$shrext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+@@ -3367,7 +3367,7 @@
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+- _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
++ _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shrext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+@@ -3427,7 +3427,7 @@
+ # KCC will only create a shared library if the output file
+ # ends with ".so" (or ".sl" for HP-UX), so rename the library
+ # to its proper name (with version) after linking.
+- _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
++ _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shrext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+@@ -4376,7 +4376,7 @@
+ # Whether we need a single -rpath flag with a separated argument.
+ hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1)
+
+-# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
++# Set to yes if using DIR/libNAME${shrext} during linking hardcodes DIR into the
+ # resulting binary.
+ hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1)
+
diff --git a/packages/obsolete/libsdl/libsdl-qpe-1.2.7/mouse.patch b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/mouse.patch
new file mode 100644
index 0000000000..99320fad0d
--- /dev/null
+++ b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/mouse.patch
@@ -0,0 +1,47 @@
+--- ./src/video/qtopia/SDL_QWin.cc.old 2004-05-16 20:28:36.000000000 +0930
++++ ./src/video/qtopia/SDL_QWin.cc 2004-05-16 20:31:39.000000000 +0930
+@@ -169,7 +169,12 @@
+ Qt::ButtonState button = e->button();
+ int sdlstate = 0;
+ if( (button & Qt::LeftButton)) {
+- sdlstate |= SDL_BUTTON_LMASK;
++ if (mouse_button_mode == 3)
++ sdlstate |= SDL_BUTTON_RMASK;
++ else if (mouse_button_mode == 2)
++ sdlstate |= SDL_BUTTON_MMASK;
++ else
++ sdlstate |= SDL_BUTTON_LMASK;
+ }
+ if( (button & Qt::RightButton)) {
+ sdlstate |= SDL_BUTTON_RMASK;
+@@ -539,20 +544,20 @@
+ case Qt::Key_F6: scancode = SDLK_F6; break;
+ case Qt::Key_F7: scancode = SDLK_F7; break;
+ case Qt::Key_F8: scancode = SDLK_F8; break;
+- case Qt::Key_F9: scancode = SDLK_F9; break;
+- case Qt::Key_F10:
+- scancode = SDLK_F10;
++ case Qt::Key_F9:
++ scancode = SDLK_F9;
+ mouse_button_mode=1;
+ break;
+- case Qt::Key_F11:
+- scancode = SDLK_F11;
+- mouse_button_mode=3;
+- break;
+- case Qt::Key_F12:
+- scancode = SDLK_F12;
++ case Qt::Key_F10:
++ scancode = SDLK_F10;
+ mouse_button_mode=2;
+ break;
+- case Qt::Key_F13: scancode = SDLK_F13; break;
++ case Qt::Key_F11: scancode = SDLK_F11; break;
++ case Qt::Key_F12: scancode = SDLK_F12; break;
++ case Qt::Key_F13:
++ scancode = SDLK_F13;
++ mouse_button_mode=3;
++ break;
+ case Qt::Key_F14: scancode = SDLK_F14; break;
+ case Qt::Key_F15: scancode = SDLK_F15; break;
+ case Qt::Key_Super_L: scancode = SDLK_LSUPER; break;
diff --git a/packages/obsolete/libsdl/libsdl-qpe-1.2.7/pygame.patch b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/pygame.patch
new file mode 100644
index 0000000000..4b39267a8a
--- /dev/null
+++ b/packages/obsolete/libsdl/libsdl-qpe-1.2.7/pygame.patch
@@ -0,0 +1,196 @@
+Index: SDL-1.2.7/src/main/qtopia/SDL_qtopia_main.cc
+===================================================================
+--- SDL-1.2.7.orig/src/main/qtopia/SDL_qtopia_main.cc 2003-12-14 07:25:53.000000000 +0100
++++ /dev/null 1970-01-01 00:00:00.000000000 +0000
+@@ -1,47 +0,0 @@
+-
+-/* Include the SDL main definition header */
+-#include "SDL_main.h"
+-#include <stdlib.h>
+-#include <unistd.h>
+-#ifdef main
+-#undef main
+-#endif
+-#ifdef QWS
+-#include <qpe/qpeapplication.h>
+-#include <qapplication.h>
+-#include <qpe/qpeapplication.h>
+-#include <stdlib.h>
+-
+-// Workaround for OPIE to remove taskbar icon. Also fixes
+-// some issues in Qtopia where there are left-over qcop files in /tmp/.
+-// I'm guessing this will also clean up the taskbar in the Sharp version
+-// of Qtopia.
+-static inline void cleanupQCop() {
+- QString appname(qApp->argv()[0]);
+- int slash = appname.findRev("/");
+- if(slash != -1) { appname = appname.mid(slash+1); }
+- QString cmd = QPEApplication::qpeDir() + "bin/qcop QPE/System 'closing(QString)' '"+appname+"'";
+- system(cmd.latin1());
+- cmd = "/tmp/qcop-msg-"+appname;
+- unlink(cmd.latin1());
+-}
+-
+-static QPEApplication *app;
+-#endif
+-
+-extern int SDL_main(int argc, char *argv[]);
+-
+-int main(int argc, char *argv[])
+-{
+-#ifdef QWS
+- // This initializes the Qtopia application. It needs to be done here
+- // because it parses command line options.
+- app = new QPEApplication(argc, argv);
+- QWidget dummy;
+- app->showMainWidget(&dummy);
+- atexit(cleanupQCop);
+-#endif
+- // Exit here because if return is used, the application
+- // doesn't seem to quit correctly.
+- exit(SDL_main(argc, argv));
+-}
+Index: SDL-1.2.7/src/video/qtopia/SDL_qmain.cc
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ SDL-1.2.7/src/video/qtopia/SDL_qmain.cc 2005-09-24 19:55:14.000000000 +0200
+@@ -0,0 +1,99 @@
++/* Include the SDL main definition header */
++#include "SDL_main.h"
++#include <stdlib.h>
++
++#include <sys/types.h>
++#include <fcntl.h>
++#include <unistd.h>
++
++
++#ifdef QWS
++#include <qpe/qpeapplication.h>
++#include <stdlib.h>
++#include <string.h>
++
++
++
++static QWidget *dummyW = 0;
++static QPEApplication *theApp = 0;
++static char **cmdline= 0;
++static int size = 0;
++
++static void parse_cmd_line() {
++ /*
++ * find the number
++ */
++ char buf[1024];
++ int available = 0;
++ char *string_start = 0;
++ int fd = ::open( "/proc/self/cmdline", O_RDONLY );
++ if ( fd < 0 ) {
++ qWarning( "Error getting the cmdline, can't be" );
++ goto error_out;
++ }
++
++ available = ::read( fd, &buf, sizeof(buf) );
++ if ( available <= 0 )
++ goto error_out;
++
++ /*
++ * find out the number of arguments
++ */
++ size = 0;
++ for (int i = 0; i < available; ++i )
++ if ( buf[i] == '\0' )
++ ++size;
++
++ /* now create a the cmdline */
++ cmdline = new char*[size+1];
++ cmdline[size] = '\0'; // parnoid...
++
++ string_start = &buf[0];
++ for ( int i = 0; i < size; ++i ) {
++ /*
++ * find the end of the string
++ */
++ size_t sz = ::strlen(string_start);
++ cmdline[i] = new char[sz+1];
++ memcpy( cmdline[i], string_start, sz+1 );
++ string_start += (sz+1); // +1 for '\0' +1 to set it beyond
++ }
++
++ ::close(fd);
++
++ return;
++
++/* error code */
++error_out:
++ cmdline = new char*[2];
++ cmdline[0] = "unknown_app";
++ cmdline[1] = '\0';
++ size = 1;
++}
++
++static void free_cmd_line() {
++ /*
++ * free each string and then free the array
++ */
++ for ( int i = 0; i < size; ++i )
++ delete [] cmdline[i];
++
++ delete [] cmdline;
++}
++
++static void __attribute__((constructor)) initialize_qpe_app() {
++ parse_cmd_line();
++
++ theApp = new QPEApplication( size, cmdline );
++ dummyW = new QWidget;
++ theApp->showMainWidget(dummyW);
++}
++
++static void __attribute__((destructor)) deinitialize_qpe_app() {
++ free_cmd_line();
++ delete dummyW;
++ delete theApp;
++}
++
++
++#endif
+Index: SDL-1.2.7/src/main/Makefile.am
+===================================================================
+--- SDL-1.2.7.orig/src/main/Makefile.am 2004-02-18 18:22:01.000000000 +0100
++++ SDL-1.2.7/src/main/Makefile.am 2005-09-24 19:56:40.000000000 +0200
+@@ -21,11 +21,7 @@
+ if TARGET_MACOSX
+ MAINLIB_ARCH_SRCS = macosx/SDLMain.m macosx/SDLMain.h
+ else
+-if TARGET_QTOPIA
+-MAINLIB_ARCH_SRCS = qtopia/SDL_qtopia_main.cc
+-else
+ MAINLIB_ARCH_SRCS = dummy/SDL_dummy_main.c
+-endif # !TARGET_QTOPIA
+ endif # !TARGET_MACOSX
+ endif # !TARGET_WIN32
+ libSDLmain_a_SOURCES = $(MAINLIB_ARCH_SRCS)
+Index: SDL-1.2.7/src/video/qtopia/Makefile.am
+===================================================================
+--- SDL-1.2.7.orig/src/video/qtopia/Makefile.am 2002-05-28 21:24:11.000000000 +0200
++++ SDL-1.2.7/src/video/qtopia/Makefile.am 2005-09-24 19:56:40.000000000 +0200
+@@ -15,4 +15,5 @@
+ SDL_syswm.cc \
+ SDL_syswm_c.h \
+ SDL_sysevents.cc \
+- SDL_sysevents_c.h
++ SDL_sysevents_c.h \
++ SDL_qmain.cc
+Index: SDL-1.2.7/configure.in
+===================================================================
+--- SDL-1.2.7.orig/configure.in 2004-02-22 22:31:47.000000000 +0100
++++ SDL-1.2.7/configure.in 2005-09-24 19:58:30.000000000 +0200
+@@ -1806,7 +1806,7 @@
+ # Set up files for the main() stub
+ if test "x$video_qtopia" = "xyes"; then
+ SDL_CFLAGS="$SDL_CFLAGS -Dmain=SDL_main"
+- SDL_LIBS="-lSDLmain $SDL_LIBS"
++
+ fi
+ # Set up files for the audio library
+ # We use the OSS and ALSA API's, not the Sun audio API
diff --git a/packages/obsolete/libsdl/libsdl-qpe_1.2.7.bb b/packages/obsolete/libsdl/libsdl-qpe_1.2.7.bb
new file mode 100644
index 0000000000..60c2a9d385
--- /dev/null
+++ b/packages/obsolete/libsdl/libsdl-qpe_1.2.7.bb
@@ -0,0 +1,57 @@
+DESCRIPTION = "Simple DirectMedia Layer - QtE-based Palmtop Environments Edition"
+SECTION = "opie/libs"
+PRIORITY = "optional"
+DEPENDS = "virtual/libqpe1 libopie2"
+PROVIDES = "virtual/libsdl"
+LICENSE = "LGPL"
+
+# NOTE: make sure to keep PR in sync with libsdl-x11
+PR = "r9"
+
+SRC_URI = "http://www.libsdl.org/release/SDL-${PV}.tar.gz \
+ file://agawa-piro-mickey.patch;patch=1 \
+ file://pygame.patch;patch=1 \
+ file://gcc34.patch;patch=1 \
+ file://mouse.patch;patch=1 \
+ file://kill-stdc++.patch;patch=1 \
+ file://ipaq.patch;patch=1 \
+ file://SDL-Akita.patch;patch=1 \
+ file://fixlibs.patch;patch=1"
+S = "${WORKDIR}/SDL-${PV}"
+
+inherit autotools binconfig
+
+EXTRA_OECONF = "--disable-static --disable-debug --enable-cdrom --enable-threads --enable-timers --enable-endian \
+ --enable-file --enable-oss --disable-alsa --disable-esd --disable-arts \
+ --disable-diskaudio --disable-nas --disable-esd-shared --disable-esdtest \
+ --disable-mintaudio --disable-nasm --disable-video-x11 --disable-video-dga \
+ --disable-video-fbcon --disable-video-directfb --disable-video-ps2gs \
+ --disable-video-xbios --disable-video-gem --disable-video-dummy \
+ --disable-video-opengl --enable-input-events --enable-pthreads \
+ --disable-video-picogui --enable-video-qtopia --enable-dlopen"
+
+FILES_${PN} = "${libdir}/lib*.so.*"
+FILES_${PN}-dev += "${bindir}/*config"
+
+do_compile_prepend() {
+ if [ "${PALMTOP_USE_MULTITHREADED_QT}" == "yes" ]
+ then
+ sed -i s,-lqte,-lqte-mt, src/Makefile
+ fi
+}
+
+do_stage() {
+ oe_libinstall -so -C src libSDL ${STAGING_LIBDIR}
+ rm ${STAGING_LIBDIR}/libSDL.la
+ ln -sf libSDL.so ${STAGING_LIBDIR}/libSDL-1.2.so
+ install -m 0655 src/main/libSDLmain.a src/main/.libs/
+ oe_libinstall -a -C src/main libSDLmain ${STAGING_LIBDIR}
+
+ install -d ${STAGING_INCDIR}/SDL
+ for f in include/*.h
+ do
+ install -m 0644 $f ${STAGING_INCDIR}/SDL/
+ done
+
+ install -m 0644 *.m4 ${STAGING_DATADIR}/aclocal/
+}