diff options
Diffstat (limited to 'packages')
| -rw-r--r-- | packages/libsdl/libsdl-qpe-1.2.9/.mtn2git_empty | 0 | ||||
| -rw-r--r-- | packages/libsdl/libsdl-qpe-1.2.9/SDL-Akita-1.2.9.patch | 51 | ||||
| -rw-r--r-- | packages/libsdl/libsdl-qpe-1.2.9/acinclude.m4 | 332 | ||||
| -rw-r--r-- | packages/libsdl/libsdl-qpe-1.2.9/agawa-piro-mickey-1.2.9.patch | 2054 | ||||
| -rw-r--r-- | packages/libsdl/libsdl-qpe-1.2.9/fixlibs-1.2.9.patch | 27 | ||||
| -rw-r--r-- | packages/libsdl/libsdl-qpe-1.2.9/ipaq-1.2.9.patch | 140 | ||||
| -rw-r--r-- | packages/libsdl/libsdl-qpe-1.2.9/kill-stdc++-1.2.9.patch | 422 | ||||
| -rw-r--r-- | packages/libsdl/libsdl-qpe-1.2.9/mouse-1.2.9.patch | 48 | ||||
| -rw-r--r-- | packages/libsdl/libsdl-qpe-1.2.9/pygame-1.2.9.patch | 191 | ||||
| -rw-r--r-- | packages/libsdl/libsdl-qpe_1.2.9.bb | 67 |
10 files changed, 3332 insertions, 0 deletions
diff --git a/packages/libsdl/libsdl-qpe-1.2.9/.mtn2git_empty b/packages/libsdl/libsdl-qpe-1.2.9/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/libsdl/libsdl-qpe-1.2.9/.mtn2git_empty diff --git a/packages/libsdl/libsdl-qpe-1.2.9/SDL-Akita-1.2.9.patch b/packages/libsdl/libsdl-qpe-1.2.9/SDL-Akita-1.2.9.patch new file mode 100644 index 0000000000..56ffe468e8 --- /dev/null +++ b/packages/libsdl/libsdl-qpe-1.2.9/SDL-Akita-1.2.9.patch @@ -0,0 +1,51 @@ +diff -Naur SDL-1.2.9-orig/src/video/qtopia/SDL_sysvideo.cc SDL-1.2.9/src/video/qtopia/SDL_sysvideo.cc +--- SDL-1.2.9-orig/src/video/qtopia/SDL_sysvideo.cc 2007-03-12 20:58:19.000000000 +0100 ++++ SDL-1.2.9/src/video/qtopia/SDL_sysvideo.cc 2007-03-12 20:58:27.000000000 +0100 +@@ -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 +@@ -522,17 +526,18 @@ + if (machine == MACHINE_SHARP_SLC700 || + machine == MACHINE_SHARP_SLC750 || + machine == MACHINE_SHARP_SLC760 || +- machine == MACHINE_SHARP_SLC860 || // 詳しいことわからんけどとりあえず +- machine == MACHINE_SHARP_SL6000 ) { // 詳しいことわからんけどとりあえず ++ machine == MACHINE_SHARP_SLC860 || ++ machine == MACHINE_SHARP_SL6000 || ++ machine == MACHINE_SHARP_SLC1000 ) { + is_VGA_machine = true; + }else { + is_VGA_machine = false; + } + +- // qte での回転角度を取得 ++ // qte + QT_GetQteServerSpec(_this, &qteRotation, &isQteQvga); + +- // SL-C700 のスタイル ++ // SL-C700 + bool isInputStyle = false; + if (is_VGA_machine) { + int status = system("/home/QtPalmtop/bin/chkhinge"); diff --git a/packages/libsdl/libsdl-qpe-1.2.9/acinclude.m4 b/packages/libsdl/libsdl-qpe-1.2.9/acinclude.m4 new file mode 100644 index 0000000000..30597ccc45 --- /dev/null +++ b/packages/libsdl/libsdl-qpe-1.2.9/acinclude.m4 @@ -0,0 +1,332 @@ +# 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 +]) +############################################################################## +dnl Configure Paths for Alsa +dnl Some modifications by Richard Boulton <richard-alsa@tartarus.org> +dnl Christopher Lansdown <lansdoct@cs.alfred.edu> +dnl Jaroslav Kysela <perex@suse.cz> +dnl Last modification: alsa.m4,v 1.23 2004/01/16 18:14:22 tiwai Exp +dnl AM_PATH_ALSA([MINIMUM-VERSION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) +dnl Test for libasound, and define ALSA_CFLAGS and ALSA_LIBS as appropriate. +dnl enables arguments --with-alsa-prefix= +dnl --with-alsa-enc-prefix= +dnl --disable-alsatest +dnl +dnl For backwards compatibility, if ACTION_IF_NOT_FOUND is not specified, +dnl and the alsa libraries are not found, a fatal AC_MSG_ERROR() will result. +dnl +AC_DEFUN([AM_PATH_ALSA], +[dnl Save the original CFLAGS, LDFLAGS, and LIBS +alsa_save_CFLAGS="$CFLAGS" +alsa_save_LDFLAGS="$LDFLAGS" +alsa_save_LIBS="$LIBS" +alsa_found=yes + +dnl +dnl Get the cflags and libraries for alsa +dnl +AC_ARG_WITH(alsa-prefix, +[ --with-alsa-prefix=PFX Prefix where Alsa library is installed(optional)], +[alsa_prefix="$withval"], [alsa_prefix=""]) +AC_ARG_WITH(alsa-inc-prefix, +[ --with-alsa-inc-prefix=PFX Prefix where include libraries are (optional)], +[alsa_inc_prefix="$withval"], [alsa_inc_prefix=""]) + +dnl FIXME: this is not yet implemented +AC_ARG_ENABLE(alsatest, +[ --disable-alsatest Do not try to compile and run a test Alsa program], +[enable_alsatest="$enableval"], +[enable_alsatest=yes]) + +dnl Add any special include directories +AC_MSG_CHECKING(for ALSA CFLAGS) +if test "$alsa_inc_prefix" != "" ; then + ALSA_CFLAGS="$ALSA_CFLAGS -I$alsa_inc_prefix" + CFLAGS="$CFLAGS -I$alsa_inc_prefix" +fi +AC_MSG_RESULT($ALSA_CFLAGS) + +dnl add any special lib dirs +AC_MSG_CHECKING(for ALSA LDFLAGS) +if test "$alsa_prefix" != "" ; then + ALSA_LIBS="$ALSA_LIBS -L$alsa_prefix" + LDFLAGS="$LDFLAGS $ALSA_LIBS" +fi + +dnl add the alsa library +ALSA_LIBS="$ALSA_LIBS -lasound -lm -ldl -lpthread" +LIBS=`echo $LIBS | sed 's/-lm//'` +LIBS=`echo $LIBS | sed 's/-ldl//'` +LIBS=`echo $LIBS | sed 's/-lpthread//'` +LIBS=`echo $LIBS | sed 's/ //'` +LIBS="$ALSA_LIBS $LIBS" +AC_MSG_RESULT($ALSA_LIBS) + +dnl Check for a working version of libasound that is of the right version. +min_alsa_version=ifelse([$1], ,0.1.1,$1) +AC_MSG_CHECKING(for libasound headers version >= $min_alsa_version) +no_alsa="" + alsa_min_major_version=`echo $min_alsa_version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + alsa_min_minor_version=`echo $min_alsa_version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + alsa_min_micro_version=`echo $min_alsa_version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + +AC_LANG_SAVE +AC_LANG_C +AC_TRY_COMPILE([ +#include <alsa/asoundlib.h> +], [ +/* ensure backward compatibility */ +#if !defined(SND_LIB_MAJOR) && defined(SOUNDLIB_VERSION_MAJOR) +#define SND_LIB_MAJOR SOUNDLIB_VERSION_MAJOR +#endif +#if !defined(SND_LIB_MINOR) && defined(SOUNDLIB_VERSION_MINOR) +#define SND_LIB_MINOR SOUNDLIB_VERSION_MINOR +#endif +#if !defined(SND_LIB_SUBMINOR) && defined(SOUNDLIB_VERSION_SUBMINOR) +#define SND_LIB_SUBMINOR SOUNDLIB_VERSION_SUBMINOR +#endif + +# if(SND_LIB_MAJOR > $alsa_min_major_version) + exit(0); +# else +# if(SND_LIB_MAJOR < $alsa_min_major_version) +# error not present +# endif + +# if(SND_LIB_MINOR > $alsa_min_minor_version) + exit(0); +# else +# if(SND_LIB_MINOR < $alsa_min_minor_version) +# error not present +# endif + +# if(SND_LIB_SUBMINOR < $alsa_min_micro_version) +# error not present +# endif +# endif +# endif +exit(0); +], + [AC_MSG_RESULT(found.)], + [AC_MSG_RESULT(not present.) + ifelse([$3], , [AC_MSG_ERROR(Sufficiently new version of libasound not found.)]) + alsa_found=no] +) +AC_LANG_RESTORE + +dnl Now that we know that we have the right version, let's see if we have the library and not just the headers. +if test "x$enable_alsatest" = "xyes"; then +AC_CHECK_LIB([asound], [snd_ctl_open],, + [ifelse([$3], , [AC_MSG_ERROR(No linkable libasound was found.)]) + alsa_found=no] +) +fi +if test "x$alsa_found" = "xyes" ; then + ifelse([$2], , :, [$2]) + LIBS=`echo $LIBS | sed 's/-lasound//g'` + LIBS=`echo $LIBS | sed 's/ //'` + LIBS="-lasound $LIBS" +fi +if test "x$alsa_found" = "xno" ; then + ifelse([$3], , :, [$3]) + CFLAGS="$alsa_save_CFLAGS" + LDFLAGS="$alsa_save_LDFLAGS" + LIBS="$alsa_save_LIBS" + ALSA_CFLAGS="" + ALSA_LIBS="" +fi + +dnl That should be it. Now just export out symbols: +AC_SUBST(ALSA_CFLAGS) +AC_SUBST(ALSA_LIBS) +]) + +# +# --- 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, µ) != 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/libsdl/libsdl-qpe-1.2.9/agawa-piro-mickey-1.2.9.patch b/packages/libsdl/libsdl-qpe-1.2.9/agawa-piro-mickey-1.2.9.patch new file mode 100644 index 0000000000..d7c561402f --- /dev/null +++ b/packages/libsdl/libsdl-qpe-1.2.9/agawa-piro-mickey-1.2.9.patch @@ -0,0 +1,2054 @@ +diff -Naur SDL-1.2.9-orig/src/video/fbcon/SDL_fbevents.c SDL-1.2.9/src/video/fbcon/SDL_fbevents.c +--- SDL-1.2.9-orig/src/video/fbcon/SDL_fbevents.c 2005-01-04 20:04:14.000000000 +0100 ++++ SDL-1.2.9/src/video/fbcon/SDL_fbevents.c 2007-03-12 20:54:14.000000000 +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 -Naur SDL-1.2.9-orig/src/video/fbcon/SDL_fbvideo.c SDL-1.2.9/src/video/fbcon/SDL_fbvideo.c +--- SDL-1.2.9-orig/src/video/fbcon/SDL_fbvideo.c 2005-02-12 19:03:54.000000000 +0100 ++++ SDL-1.2.9/src/video/fbcon/SDL_fbvideo.c 2007-03-12 20:54:14.000000000 +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) \ +diff -Naur SDL-1.2.9-orig/src/video/qtopia/SDL_QWin.cc SDL-1.2.9/src/video/qtopia/SDL_QWin.cc +--- SDL-1.2.9-orig/src/video/qtopia/SDL_QWin.cc 2004-01-04 17:49:26.000000000 +0100 ++++ SDL-1.2.9/src/video/qtopia/SDL_QWin.cc 2007-03-12 20:54:14.000000000 +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); < |
