From 47a8620d9742a7a63eb1dd664e5a3a67062aa55f Mon Sep 17 00:00:00 2001 From: Paul Hunkin Date: Mon, 17 May 2010 15:14:34 +1200 Subject: [PATCH 001/169] Initial commit, adding __ANDROID__ to the platform list --- include/SDL_platform.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/include/SDL_platform.h b/include/SDL_platform.h index f9429bdec..a41f56309 100644 --- a/include/SDL_platform.h +++ b/include/SDL_platform.h @@ -65,6 +65,13 @@ #undef __LINUX__ #define __LINUX__ 1 #endif +#if defined(ANDROID) +#undef __ANDROID__ +#undef __LINUX__ //do we need to do this? +#define __ANDROID__ 1 +#endif + + #if defined(__APPLE__) /* lets us know what version of Mac OS X we're compiling on */ From 0a4a7759f06c5491a1f99129527af572d0ba45bd Mon Sep 17 00:00:00 2001 From: Sunny Sachanandani Date: Wed, 19 May 2010 18:58:28 +0530 Subject: [PATCH 002/169] Adding a few #defines for Xrender support. --- include/SDL_config.h.in | 1 + src/video/x11/SDL_x11dyn.h | 4 ++++ src/video/x11/SDL_x11video.h | 3 +++ 3 files changed, 8 insertions(+) diff --git a/include/SDL_config.h.in b/include/SDL_config.h.in index 5c47f11b2..473a0f323 100644 --- a/include/SDL_config.h.in +++ b/include/SDL_config.h.in @@ -278,6 +278,7 @@ #undef SDL_VIDEO_DRIVER_X11_XINPUT #undef SDL_VIDEO_DRIVER_X11_SCRNSAVER #undef SDL_VIDEO_DRIVER_X11_XV +#undef SDL_VIDEO_DRIVER_X11_XRENDER #undef SDL_VIDEO_RENDER_D3D #undef SDL_VIDEO_RENDER_GDI diff --git a/src/video/x11/SDL_x11dyn.h b/src/video/x11/SDL_x11dyn.h index 0f722aff0..c06a2d6fe 100644 --- a/src/video/x11/SDL_x11dyn.h +++ b/src/video/x11/SDL_x11dyn.h @@ -52,6 +52,10 @@ #include #endif +#if SDL_VIDEO_DRIVER_X11_XRENDER +#include +#endif + /* * When using the "dynamic X11" functionality, we duplicate all the Xlib * symbols that would be referenced by SDL inside of SDL itself. diff --git a/src/video/x11/SDL_x11video.h b/src/video/x11/SDL_x11video.h index 1ba0ba392..6c2377376 100644 --- a/src/video/x11/SDL_x11video.h +++ b/src/video/x11/SDL_x11video.h @@ -45,6 +45,9 @@ #if SDL_VIDEO_DRIVER_X11_SCRNSAVER #include #endif +#if SDL_VIDEO_DRIVER_X11_XRENDER +#include +#endif #include "SDL_x11dyn.h" From 1c62b779c7959c44c66751bb40c700e2b7eeead1 Mon Sep 17 00:00:00 2001 From: Paul Hunkin Date: Sun, 23 May 2010 15:08:30 +1200 Subject: [PATCH 003/169] Fixed comment style --- include/SDL_platform.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/include/SDL_platform.h b/include/SDL_platform.h index a41f56309..90eed561c 100644 --- a/include/SDL_platform.h +++ b/include/SDL_platform.h @@ -67,12 +67,10 @@ #endif #if defined(ANDROID) #undef __ANDROID__ -#undef __LINUX__ //do we need to do this? +#undef __LINUX__ /*do we need to do this?*/ #define __ANDROID__ 1 #endif - - #if defined(__APPLE__) /* lets us know what version of Mac OS X we're compiling on */ #include "AvailabilityMacros.h" From 8706b8163d61c15dd9079eb6f74a9afb3678fb8f Mon Sep 17 00:00:00 2001 From: Paul Hunkin Date: Sun, 23 May 2010 15:10:18 +1200 Subject: [PATCH 004/169] Fix compile errors under Android toolchain. Seems to have the same issue as the NDS. --- include/SDL_stdinc.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/include/SDL_stdinc.h b/include/SDL_stdinc.h index c7e7edd57..504ff32c4 100644 --- a/include/SDL_stdinc.h +++ b/include/SDL_stdinc.h @@ -167,9 +167,10 @@ SDL_COMPILE_TIME_ASSERT(uint16, sizeof(Uint16) == 2); SDL_COMPILE_TIME_ASSERT(sint16, sizeof(Sint16) == 2); SDL_COMPILE_TIME_ASSERT(uint32, sizeof(Uint32) == 4); SDL_COMPILE_TIME_ASSERT(sint32, sizeof(Sint32) == 4); -#ifndef __NINTENDODS__ /* TODO: figure out why the following happens: - include/SDL_stdinc.h:150: error: size of array 'SDL_dummy_uint64' is negative - include/SDL_stdinc.h:151: error: size of array 'SDL_dummy_sint64' is negative */ +#if !defined(__NINTENDODS__) && !defined(__ANDROID__) +/* TODO: figure out why the following happens: + include/SDL_stdinc.h:150: error: size of array 'SDL_dummy_uint64' is negative + include/SDL_stdinc.h:151: error: size of array 'SDL_dummy_sint64' is negative */ SDL_COMPILE_TIME_ASSERT(uint64, sizeof(Uint64) == 8); SDL_COMPILE_TIME_ASSERT(sint64, sizeof(Sint64) == 8); #endif @@ -188,7 +189,8 @@ SDL_COMPILE_TIME_ASSERT(sint64, sizeof(Sint64) == 8); /** \cond */ #ifndef DOXYGEN_SHOULD_IGNORE_THIS -#ifndef __NINTENDODS__ /* TODO: include/SDL_stdinc.h:174: error: size of array 'SDL_dummy_enum' is negative */ +#if !defined(__NINTENDODS__) && !defined(__ANDROID__) + /* TODO: include/SDL_stdinc.h:174: error: size of array 'SDL_dummy_enum' is negative */ typedef enum { DUMMY_ENUM_VALUE From 0781a76fafb0698a3826ec7e0ac6a7deddce514d Mon Sep 17 00:00:00 2001 From: Paul Hunkin Date: Sun, 23 May 2010 15:12:41 +1200 Subject: [PATCH 005/169] Fix a compile error when SDL_JOYSTICK_DISABLED is set --- src/events/SDL_events.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/events/SDL_events.c b/src/events/SDL_events.c index e99a55d93..5fb5f075b 100644 --- a/src/events/SDL_events.c +++ b/src/events/SDL_events.c @@ -92,11 +92,13 @@ SDL_Unlock_EventThread(void) static __inline__ SDL_bool SDL_ShouldPollJoystick() { +#if !SDL_JOYSTICK_DISABLED if (SDL_numjoysticks && (!SDL_disabled_events[SDL_JOYAXISMOTION >> 8] || SDL_JoystickEventState(SDL_QUERY))) { return SDL_TRUE; } +#endif return SDL_FALSE; } From adfffe82b1e4ea1d729d24a07055b71b3fbc438a Mon Sep 17 00:00:00 2001 From: Paul Hunkin Date: Sun, 23 May 2010 15:13:39 +1200 Subject: [PATCH 006/169] Added some wrapper shell scripts to make android compiling easier --- build-scripts/acc.sh | 15 +++++++++++++++ build-scripts/ald.sh | 18 ++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100755 build-scripts/acc.sh create mode 100755 build-scripts/ald.sh diff --git a/build-scripts/acc.sh b/build-scripts/acc.sh new file mode 100755 index 000000000..e4be71c75 --- /dev/null +++ b/build-scripts/acc.sh @@ -0,0 +1,15 @@ +#!/bin/bash +ANDROID_NDK="/home/paul/Projects/gsoc/sdk/android-ndk-r4" +TOOLS_PATH="$ANDROID_NDK/build/prebuilt/linux-x86/arm-eabi-4.2.1/bin" + +export PATH=$TOOLS_PATH:$PATH + +CC="arm-eabi-gcc" + +#cflags +ACC_C=" -I$ANDROID_NDK/build/platforms/android-4/common/include \ + -I$ANDROID_NDK/build/platforms/android-4/arch-arm/usr/include \ + -DANDROID -c" + + +$CC $CFLAGS $ACC_C $@ diff --git a/build-scripts/ald.sh b/build-scripts/ald.sh new file mode 100755 index 000000000..4aa6c3a4a --- /dev/null +++ b/build-scripts/ald.sh @@ -0,0 +1,18 @@ +#!/bin/bash +ANDROID_NDK="/home/paul/Projects/gsoc/sdk/android-ndk-r4" +TOOLS_PATH="$ANDROID_NDK/build/prebuilt/linux-x86/arm-eabi-4.2.1/bin" + +export PATH=$TOOLS_PATH:$PATH + +LD="arm-eabi-ld" + +#ldflags +ACC_L=" -rpath-link=$ANDROID_NDK/build/platforms/android-4/arch-arm/usr/lib/ \ + -dynamic-linker=/system/bin/linker \ + -L$ANDROID_NDK/build/platforms/android-3/arch-arm/usr/lib/ -lc -nostdlib \ + $ANDROID_NDK/build/platforms/android-4/arch-arm/usr/lib/crtbegin_static.o \ + -L$ANDROID_NDK/build/prebuilt/linux-x86/arm-eabi-4.2.1/lib/gcc/arm-eabi/4.2.1 " + +$LD $ACC_L $LDFLAGS $@ -lgcc + + From e9e78ea46e02f4e3577d07cdb1c3740fcd576ae6 Mon Sep 17 00:00:00 2001 From: Paul Hunkin Date: Sun, 23 May 2010 15:18:16 +1200 Subject: [PATCH 007/169] Added some android build stuff --- Makefile.android | 51 +++++++++++++++++++++++++ include/SDL_config_android.h | 72 ++++++++++++++++++++++++++++++++++++ 2 files changed, 123 insertions(+) create mode 100755 Makefile.android create mode 100755 include/SDL_config_android.h diff --git a/Makefile.android b/Makefile.android new file mode 100755 index 000000000..e60d4abab --- /dev/null +++ b/Makefile.android @@ -0,0 +1,51 @@ +# Makefile to build the SDL library + +ANDROID_NDK=/home/paul/Projects/gsoc/sdk/android-ndk-r4 +TOOLS_PATH=$(ANDROID_NDK)/build/prebuilt/linux-x86/arm-eabi-4.2.1/bin +ANDROID_INCLUDES = -I$(ANDROID_NDK)/build/platforms/android-4/common/include \ + -I$(ANDROID_NDK)/build/platforms/android-4/arch-arm/usr/include +INCLUDE = -I./include +CFLAGS = -g -O2 $(INCLUDE) $(ANDROID_INCLUDES) -DANDROID -static + +AR = $(TOOLS_PATH)/arm-eabi-ar +RANLIB = $(TOOLS_PATH)/arm-eabi-ranlib +CC = $(TOOLS_PATH)/arm-eabi-gcc + + +CONFIG_H = include/SDL_config.h +TARGET = libSDL.a +SOURCES = \ + src/*.c \ + src/audio/*.c \ + src/cpuinfo/*.c \ + src/events/*.c \ + src/file/*.c \ + src/joystick/*.c \ + src/haptic/*.c \ + src/stdlib/*.c \ + src/thread/*.c \ + src/timer/*.c \ + src/video/*.c \ + src/power/*.c \ + src/audio/dummy/*.c \ + src/video/dummy/*.c \ + src/joystick/dummy/*.c \ + src/haptic/dummy/*.c \ + src/atomic/dummy/*.c \ + src/thread/generic/*.c \ + src/timer/dummy/*.c \ + src/loadso/dummy/*.c \ + +OBJECTS = $(shell echo $(SOURCES) | sed -e 's,\.c,\.o,g') + +all: $(TARGET) + +$(TARGET): $(CONFIG_H) $(OBJECTS) + $(AR) crv $@ $^ + $(RANLIB) $@ + +$(CONFIG_H): + cp $(CONFIG_H).default $(CONFIG_H) + +clean: + rm -f $(TARGET) $(OBJECTS) diff --git a/include/SDL_config_android.h b/include/SDL_config_android.h new file mode 100755 index 000000000..c5877c49f --- /dev/null +++ b/include/SDL_config_android.h @@ -0,0 +1,72 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2010 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +#ifndef _SDL_config_android_h +#define _SDL_config_android_h + +#include "SDL_platform.h" + +/** + * \file SDL_config_android.h + * + * This is a configuration that can be used to build SDL for Android + */ + +#include + +/* +typedef signed char int8_t; +typedef unsigned char uint8_t; +typedef signed short int16_t; +typedef unsigned short uint16_t; +typedef signed int int32_t; +typedef unsigned int uint32_t; +*/ + +#define SIZEOF_VOIDP 4 + +typedef unsigned int size_t; +//typedef unsigned long uintptr_t; + +#define SDL_AUDIO_DRIVER_DUMMY 1 + +#define SDL_CDROM_DISABLED 1 + +#define SDL_HAPTIC_DISABLED 1 + +#define SDL_JOYSTICK_DISABLED 1 + +#define SDL_LOADSO_DISABLED 1 + +#define SDL_THREADS_DISABLED 1 + +#define SDL_TIMERS_DISABLED 1 + +#define SDL_TIMER_UNIX 1 + +#define SDL_VIDEO_DRIVER_DUMMY 1 + +#define HAVE_STDIO_H 1 +#define HAVE_SYS_TYPES_H 1 + +#endif /* _SDL_config_minimal_h */ + From bcb2a5aa5ccc678afc4334be4f5815809ac4b429 Mon Sep 17 00:00:00 2001 From: Sunny Sachanandani Date: Mon, 24 May 2010 21:02:58 +0530 Subject: [PATCH 008/169] Added a #define option for compile time Xrender support. Added some more attributes (specific to Xrender) to the X11 structs. Added some code for querying the Xrender extension. --- src/video/x11/SDL_x11render.c | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/src/video/x11/SDL_x11render.c b/src/video/x11/SDL_x11render.c index dcc26c1dc..e04a2ef3b 100644 --- a/src/video/x11/SDL_x11render.c +++ b/src/video/x11/SDL_x11render.c @@ -95,6 +95,13 @@ typedef struct int scanline_pad; Window xwindow; Pixmap pixmaps[3]; +#ifdef SDL_VIDEO_DRIVER_X11_XRENDER + Picture xwindow_pict; + XRenderPictFormat* xwindow_pict_fmt; + XRenderPictureAttributes xwindow_pict_attr; + unsigned int xwindow_pict_attr_valuemask; + SDL_bool xrender_available; +#endif int current_pixmap; Drawable drawable; SDL_PixelFormat format; @@ -108,6 +115,9 @@ typedef struct SDL_SW_YUVTexture *yuv; Uint32 format; Pixmap pixmap; +#ifdef SDL_VIDEO_DRIVER_X11_XRENDER + Picture picture; +#endif XImage *image; #ifndef NO_SHARED_MEMORY /* MIT shared memory extension information */ @@ -198,7 +208,22 @@ X11_CreateRenderer(SDL_Window * window, Uint32 flags) data->depth = displaydata->depth; data->scanline_pad = displaydata->scanline_pad; data->xwindow = windowdata->xwindow; - +#ifdef SDL_VIDEO_DRIVER_X11_XRENDER + int event_basep, error_basep; + if(XRenderQueryExtension(data->display, &event_basep, &error_basep) == True) { + data->xrender_available = SDL_TRUE; + data->xwindow_pict_fmt = XRenderFindVisualFormat(data->display, data->visual); + data->xwindow_pict_attr_valuemask = 0; // FIXME + data->xwindow_pict = XRenderCreatePicture(data->display, + data->xwindow, + data->xwindow_pict_fmt, + data->xwindow_pict_attr_valuemask, + &data->xwindow_pict_attr); + } + else { + data->xrender_available = SDL_FALSE; + } +#endif renderer->DisplayModeChanged = X11_DisplayModeChanged; renderer->CreateTexture = X11_CreateTexture; renderer->QueryTexturePixels = X11_QueryTexturePixels; From ecae2b2aa9c6485cf04eaa41aa4cb9f2b9b0d34c Mon Sep 17 00:00:00 2001 From: Jim Grandpre Date: Mon, 24 May 2010 23:44:24 -0400 Subject: [PATCH 009/169] Added Test Directory. Touch input works in touchSimp for wacom bamboo fun on Ubuntu linux. Not yet integrated into library. Should support other touch devices and other linux distros, but not tested on anything else. --- touchTest/makefile | 3 + touchTest/makefile~ | 3 + touchTest/testIn | Bin 0 -> 7451 bytes touchTest/testIn.c | 69 +++++++++++ touchTest/testIn.c~ | 69 +++++++++++ touchTest/touchPong | Bin 0 -> 28731 bytes touchTest/touchPong.c | 272 +++++++++++++++++++++++++++++++++++++++++ touchTest/touchPong.c~ | 243 ++++++++++++++++++++++++++++++++++++ touchTest/touchSimp | Bin 0 -> 28540 bytes touchTest/touchSimp.c | 238 ++++++++++++++++++++++++++++++++++++ touchTest/touchSimp.c~ | 241 ++++++++++++++++++++++++++++++++++++ 11 files changed, 1138 insertions(+) create mode 100644 touchTest/makefile create mode 100644 touchTest/makefile~ create mode 100755 touchTest/testIn create mode 100644 touchTest/testIn.c create mode 100644 touchTest/testIn.c~ create mode 100755 touchTest/touchPong create mode 100644 touchTest/touchPong.c create mode 100644 touchTest/touchPong.c~ create mode 100755 touchTest/touchSimp create mode 100644 touchTest/touchSimp.c create mode 100644 touchTest/touchSimp.c~ diff --git a/touchTest/makefile b/touchTest/makefile new file mode 100644 index 000000000..820205541 --- /dev/null +++ b/touchTest/makefile @@ -0,0 +1,3 @@ +SDLTest : touchSimp.c touchPong.c + gcc touchSimp.c -o touchSimp `sdl-config --cflags --libs` -g + gcc touchPong.c -o touchPong `sdl-config --cflags --libs` -g diff --git a/touchTest/makefile~ b/touchTest/makefile~ new file mode 100644 index 000000000..f27b5aa3d --- /dev/null +++ b/touchTest/makefile~ @@ -0,0 +1,3 @@ +SDLTest : touchSimp.c touchPong.c + gcc touchSimp.c -o touchSimp `sdl-config --cflags --libs` -gSDLTest : + gcc touchPong.c -o touchPong `sdl-config --cflags --libs` -g diff --git a/touchTest/testIn b/touchTest/testIn new file mode 100755 index 0000000000000000000000000000000000000000..6ec332a5c71551edfb3feba2ed7af05c0bc3080f GIT binary patch literal 7451 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void handler (int sig) +{ + printf ("\nexiting...(%d)\n", sig); + exit (0); +} + +void perror_exit (char *error) +{ + perror (error); + handler (9); +} + +int main (int argc, char *argv[]) +{ + struct input_event ev[64]; + int fd, rd, value, size = sizeof (struct input_event); + char name[256] = "Unknown"; + char *device = NULL; + + //Setup check + if (argv[1] == NULL){ + printf("Please specify (on the command line) the path to the dev event interface device\n"); + exit (0); + } + + if ((getuid ()) != 0) + printf ("You are not root! This may not work...\n"); + + if (argc > 1) + device = argv[1]; + + //Open Device + if ((fd = open (device, O_RDONLY)) == -1) + printf ("%s is not a vaild device.\n", device); + + //Print Device Name + ioctl (fd, EVIOCGNAME (sizeof (name)), name); + printf ("Reading From : %s (%s)\n", device, name); + + while (1){ + + if ((rd = read (fd, ev, size * 64)) < size) + perror_exit ("read()"); + printf("time: %i\n type: %X\n code: %X\n value: %i\n ",ev[0].time,ev[0].type,ev[0].value,ev[0].value); + + value = ev[0].value; + + if (value != ' ' && ev[1].value == 1 && ev[1].type == 1){ // Only read the key press event + printf ("Code[%d]\n", (ev[1].code)); + } + } + + return 0; +} diff --git a/touchTest/testIn.c~ b/touchTest/testIn.c~ new file mode 100644 index 000000000..73a8364b0 --- /dev/null +++ b/touchTest/testIn.c~ @@ -0,0 +1,69 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void handler (int sig) +{ + printf ("\nexiting...(%d)\n", sig); + exit (0); +} + +void perror_exit (char *error) +{ + perror (error); + handler (9); +} + +int main (int argc, char *argv[]) +{ + struct input_event ev[64]; + int fd, rd, value, size = sizeof (struct input_event); + char name[256] = "Unknown"; + char *device = NULL; + + //Setup check + if (argv[1] == NULL){ + printf("Please specify (on the command line) the path to the dev event interface device\n"); + exit (0); + } + + if ((getuid ()) != 0) + printf ("You are not root! This may not work...\n"); + + if (argc > 1) + device = argv[1]; + + //Open Device + if ((fd = open (device, O_RDONLY)) == -1) + printf ("%s is not a vaild device.\n", device); + + //Print Device Name + ioctl (fd, EVIOCGNAME (sizeof (name)), name); + printf ("Reading From : %s (%s)\n", device, name); + + while (1){ + + if ((rd = read (fd, ev, size * 64)) < size) + perror_exit ("read()"); + printf("time: %i\n type: %X\n code: %X\n value: %i\n ",ev[0].time,ev[0].type,ev[0].value,ev[0].value); + + value = ev[0].value; + + if (value != ' ' && ev[1].value == 1 && ev[1].type == 1){ // Only read the key press event + printf ("Code[%d]\n", (ev[1].code)); + } + } + + return 0; +} diff --git a/touchTest/touchPong b/touchTest/touchPong new file mode 100755 index 0000000000000000000000000000000000000000..29e892b462ebea82de922f31e41e8095bcd2283e GIT binary patch literal 28731 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 +#include +#include +#include +#include + + +#define PI 3.1415926535897 +#define WIDTH 640 +#define HEIGHT 480 +#define BPP 4 +#define DEPTH 32 + + +#define MAX_FINGERS 2 + +int mousx,mousy; +int keystat[512]; +int bstatus; + + + +typedef struct { + int x,y; +} Point; + +Point finger[MAX_FINGERS]; + +//Pong Code +Point ball,ballv; + + +void handler (int sig) +{ + printf ("\nexiting...(%d)\n", sig); + exit (0); +} + +void perror_exit (char *error) +{ + perror (error); + handler (9); +} + + +void setpix(SDL_Surface *screen, int x, int y, int col) +{ + Uint32 *pixmem32; + Uint32 colour; + + if((unsigned)x > screen->w) return; + if((unsigned)y > screen->h) return; + + colour = SDL_MapRGB( screen->format, (col>>16)&0xFF, (col>>8)&0xFF, col&0xFF); + + pixmem32 = (Uint32*) screen->pixels + y*screen->pitch/BPP + x; + *pixmem32 = colour; +} + +void drawCircle(SDL_Surface* screen,int x,int y,int r,int c) +{ + + float a; + for(a=0;a<2*PI;a+=1.f/(float)r) + { + setpix(screen,(int)(x+r*cos(a)),(int)(y+r*sin(a)),c); + } +} + +void DrawScreen(SDL_Surface* screen, int h) +{ + int x, y, xm,ym,c; + if(SDL_MUSTLOCK(screen)) + { + if(SDL_LockSurface(screen) < 0) return; + } + for(y = 0; y < screen->h; y++ ) + { + for( x = 0; x < screen->w; x++ ) + { + //setpixel(screen, x, y, (x*x)/256+3*y+h, (y*y)/256+x+h, h); + //xm = (x+h)%screen->w; + //ym = (y+h)%screen->w; + //c = sin(h/256*2*PI)*x*y/screen->w/screen->h; + //setpix(screen,x,y,255*sin(xm/screen->w*2*PI),sin(h/255*2*PI)*255*y/screen->h,c); + setpix(screen,x,y,((x%255)<<16) + ((y%255)<<8) + (x+y)%255); + } + } + drawCircle(screen,mousx,mousy,30,0xFFFFFF); + int i; + for(i=0;i 1) + device = argv[1]; + + //Open Device + if ((fd = open (device, O_RDONLY)) == -1) + printf ("%s is not a vaild device.\n", device); + + //Print Device Name + ioctl (fd, EVIOCGNAME (sizeof (name)), name); + printf ("Reading From : %s (%s)\n", device, name); + + + + + + SDL_Surface *screen; + SDL_Event event; + + int keypress = 0; + int h=0,s=1,i,j; + int tx,ty,curf=0; + + + + memset(keystat,0,512*sizeof(keystat[0])); + if (SDL_Init(SDL_INIT_VIDEO) < 0 ) return 1; + + if (!(screen = initScreen(WIDTH,HEIGHT))) + { + SDL_Quit(); + return 1; + } + ball.x = screen->w/2; + ball.y = screen->h/2; + ballv.x = -3; + ballv.y = 1; + while(!keystat[27]) + { + //Poll SDL + while(SDL_PollEvent(&event)) + { + switch (event.type) + { + case SDL_QUIT: + keystat[27] = 1; + break; + case SDL_KEYDOWN: + //printf("%i\n",event.key.keysym.sym); + keystat[event.key.keysym.sym] = 1; + //keypress = 1; + break; + case SDL_KEYUP: + //printf("%i\n",event.key.keysym.sym); + keystat[event.key.keysym.sym] = 0; + //keypress = 1; + break; + case SDL_VIDEORESIZE: + if (!(screen = initScreen(event.resize.w, + event.resize.h))) + { + SDL_Quit(); + return 1; + } + break; + case SDL_MOUSEMOTION: + mousx = event.motion.x; + mousy = event.motion.y; + break; + case SDL_MOUSEBUTTONDOWN: + bstatus |= (1<<(event.button.button-1)); + break; + case SDL_MOUSEBUTTONUP: + bstatus &= ~(1<<(event.button.button-1)); + break; + } + } + + //poll for Touch <- Goal: make this a case: + if ((rd = read (fd, ev, size * 64)) < size) + perror_exit ("read()"); + //printf("time: %i\n type: %X\n code: %X\n value: %i\n ", + // ev->time,ev->type,ev->code,ev->value); + for (i = 0; i < rd / sizeof(struct input_event); i++) + switch (ev[i].type) + { + case EV_ABS: + if(ev[i].code == ABS_X) + tx = ev[i].value; + else if (ev[i].code == ABS_Y) + ty = ev[i].value; + else if (ev[i].code == ABS_MISC) + { + //printf("Misc:type: %X\n code: %X\n value: %i\n ", + // ev[i].type,ev[i].code,ev[i].value); + } + break; + case EV_MSC: + if(ev[i].code == MSC_SERIAL) + curf = ev[i].value; + break; + case EV_SYN: + curf -= 1; + if(tx >= 0) + finger[curf].x = tx; + if(ty >= 0) + finger[curf].y = ty; + + //printf("Synched: %i tx: %i, ty: %i\n",curf,finger[curf].x,finger[curf].y); + tx = -1; + ty = -1; + break; + + } + + //Pong code + ball.x += ballv.x; + ball.y += ballv.y; + for(i=0;i 0 || finger[i].y > 0) + { + int d2 = (finger[i].x-ball.x)*(finger[i].x-ball.x) + + (finger[i].y-ball.y)*(finger[i].y-ball.y); + ballv.x += (50*(ball.x-finger[i].x))/d2; + ballv.y += (30*(ball.y-finger[i].y))/d2; + } + } + if((unsigned int)ball.x > screen->w){ + ball.x = screen->w/2; + ball.y = screen->h/2; + ballv.x = -3; + ballv.y = 1; + } + if((unsigned int)ball.y > screen->h) ballv.y *= -1; + printf("(%i,%i)\n",ball.x,ball.y); + //And draw + DrawScreen(screen,h); + /* + for(i=0;i<512;i++) + if(keystat[i]) printf("%i\n",i); + printf("Buttons:%i\n",bstatus); + */ + } + SDL_Quit(); + + return 0; +} diff --git a/touchTest/touchPong.c~ b/touchTest/touchPong.c~ new file mode 100644 index 000000000..4a60816eb --- /dev/null +++ b/touchTest/touchPong.c~ @@ -0,0 +1,243 @@ +#include +#include +#include +#include +#include + + +#define PI 3.1415926535897 +#define WIDTH 640 +#define HEIGHT 480 +#define BPP 4 +#define DEPTH 32 + + +#define MAX_FINGERS 2 + +int mousx,mousy; +int keystat[512]; +int bstatus; + + +//Pong Code +Point ball,ballv; + +typedef struct { + int x,y; +} Point; + +Point finger[MAX_FINGERS]; + +void handler (int sig) +{ + printf ("\nexiting...(%d)\n", sig); + exit (0); +} + +void perror_exit (char *error) +{ + perror (error); + handler (9); +} + + +void setpix(SDL_Surface *screen, int x, int y, int col) +{ + Uint32 *pixmem32; + Uint32 colour; + + if((unsigned)x > screen->w) return; + if((unsigned)y > screen->h) return; + + colour = SDL_MapRGB( screen->format, (col>>16)&0xFF, (col>>8)&0xFF, col&0xFF); + + pixmem32 = (Uint32*) screen->pixels + y*screen->pitch/BPP + x; + *pixmem32 = colour; +} + +void drawCircle(SDL_Surface* screen,int x,int y,int r,int c) +{ + + float a; + for(a=0;a<2*PI;a+=1.f/(float)r) + { + setpix(screen,(int)(x+r*cos(a)),(int)(y+r*sin(a)),c); + } +} + +void DrawScreen(SDL_Surface* screen, int h) +{ + int x, y, xm,ym,c; + if(SDL_MUSTLOCK(screen)) + { + if(SDL_LockSurface(screen) < 0) return; + } + for(y = 0; y < screen->h; y++ ) + { + for( x = 0; x < screen->w; x++ ) + { + //setpixel(screen, x, y, (x*x)/256+3*y+h, (y*y)/256+x+h, h); + //xm = (x+h)%screen->w; + //ym = (y+h)%screen->w; + //c = sin(h/256*2*PI)*x*y/screen->w/screen->h; + //setpix(screen,x,y,255*sin(xm/screen->w*2*PI),sin(h/255*2*PI)*255*y/screen->h,c); + setpix(screen,x,y,((x%255)<<16) + ((y%255)<<8) + (x+y)%255); + } + } + drawCircle(screen,mousx,mousy,30,0xFFFFFF); + int i; + for(i=0;i 1) + device = argv[1]; + + //Open Device + if ((fd = open (device, O_RDONLY)) == -1) + printf ("%s is not a vaild device.\n", device); + + //Print Device Name + ioctl (fd, EVIOCGNAME (sizeof (name)), name); + printf ("Reading From : %s (%s)\n", device, name); + + + + + + SDL_Surface *screen; + SDL_Event event; + + int keypress = 0; + int h=0,s=1,i,j; + int tx,ty,curf=0; + + + + memset(keystat,0,512*sizeof(keystat[0])); + if (SDL_Init(SDL_INIT_VIDEO) < 0 ) return 1; + + if (!(screen = initScreen(WIDTH,HEIGHT))) + { + SDL_Quit(); + return 1; + } + ball.x = screen->width()/2; + ball.y = screen->height()/2; + while(!keystat[27]) + { + //Poll SDL + while(SDL_PollEvent(&event)) + { + switch (event.type) + { + case SDL_QUIT: + keystat[27] = 1; + break; + case SDL_KEYDOWN: + //printf("%i\n",event.key.keysym.sym); + keystat[event.key.keysym.sym] = 1; + //keypress = 1; + break; + case SDL_KEYUP: + //printf("%i\n",event.key.keysym.sym); + keystat[event.key.keysym.sym] = 0; + //keypress = 1; + break; + case SDL_VIDEORESIZE: + if (!(screen = initScreen(event.resize.w, + event.resize.h))) + { + SDL_Quit(); + return 1; + } + break; + case SDL_MOUSEMOTION: + mousx = event.motion.x; + mousy = event.motion.y; + break; + case SDL_MOUSEBUTTONDOWN: + bstatus |= (1<<(event.button.button-1)); + break; + case SDL_MOUSEBUTTONUP: + bstatus &= ~(1<<(event.button.button-1)); + break; + } + } + + //poll for Touch <- Goal: make this a case: + if ((rd = read (fd, ev, size * 64)) < size) + perror_exit ("read()"); + //printf("time: %i\n type: %X\n code: %X\n value: %i\n ", + // ev->time,ev->type,ev->code,ev->value); + for (i = 0; i < rd / sizeof(struct input_event); i++) + switch (ev[i].type) + { + case EV_ABS: + if(ev[i].code == ABS_X) + tx = ev[i].value; + else if (ev[i].code == ABS_Y) + ty = ev[i].value; + else if (ev[i].code == ABS_MISC) + { + //printf("Misc:type: %X\n code: %X\n value: %i\n ", + // ev[i].type,ev[i].code,ev[i].value); + } + break; + case EV_MSC: + if(ev[i].code == MSC_SERIAL) + curf = ev[i].value; + break; + case EV_SYN: + curf -= 1; + if(tx >= 0) + finger[curf].x = tx; + if(ty >= 0) + finger[curf].y = ty; + + //printf("Synched: %i tx: %i, ty: %i\n",curf,finger[curf].x,finger[curf].y); + tx = -1; + ty = -1; + break; + + } + //And draw + DrawScreen(screen,h); + /* + for(i=0;i<512;i++) + if(keystat[i]) printf("%i\n",i); + printf("Buttons:%i\n",bstatus); + */ + } + SDL_Quit(); + + return 0; +} diff --git a/touchTest/touchSimp b/touchTest/touchSimp new file mode 100755 index 0000000000000000000000000000000000000000..0caf1d15a2bc7b50101c6e91c88fdddeeeac137a GIT binary patch literal 28540 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 Jkf=Ul^}lfpK-~ZU literal 0 HcmV?d00001 diff --git a/touchTest/touchSimp.c b/touchTest/touchSimp.c new file mode 100644 index 000000000..b89f78207 --- /dev/null +++ b/touchTest/touchSimp.c @@ -0,0 +1,238 @@ +#include +#include +#include +#include +#include + + +#define PI 3.1415926535897 +#define WIDTH 640 +#define HEIGHT 480 +#define BPP 4 +#define DEPTH 32 + + +#define MAX_FINGERS 2 + +int mousx,mousy; +int keystat[512]; +int bstatus; + + + +typedef struct { + int x,y; +} Point; + +Point finger[MAX_FINGERS]; + +void handler (int sig) +{ + printf ("\nexiting...(%d)\n", sig); + exit (0); +} + +void perror_exit (char *error) +{ + perror (error); + handler (9); +} + + +void setpix(SDL_Surface *screen, int x, int y, int col) +{ + Uint32 *pixmem32; + Uint32 colour; + + if((unsigned)x > screen->w) return; + if((unsigned)y > screen->h) return; + + colour = SDL_MapRGB( screen->format, (col>>16)&0xFF, (col>>8)&0xFF, col&0xFF); + + pixmem32 = (Uint32*) screen->pixels + y*screen->pitch/BPP + x; + *pixmem32 = colour; +} + +void drawCircle(SDL_Surface* screen,int x,int y,int r,int c) +{ + + float a; + for(a=0;a<2*PI;a+=1.f/(float)r) + { + setpix(screen,(int)(x+r*cos(a)),(int)(y+r*sin(a)),c); + } +} + +void DrawScreen(SDL_Surface* screen, int h) +{ + int x, y, xm,ym,c; + if(SDL_MUSTLOCK(screen)) + { + if(SDL_LockSurface(screen) < 0) return; + } + for(y = 0; y < screen->h; y++ ) + { + for( x = 0; x < screen->w; x++ ) + { + //setpixel(screen, x, y, (x*x)/256+3*y+h, (y*y)/256+x+h, h); + //xm = (x+h)%screen->w; + //ym = (y+h)%screen->w; + //c = sin(h/256*2*PI)*x*y/screen->w/screen->h; + //setpix(screen,x,y,255*sin(xm/screen->w*2*PI),sin(h/255*2*PI)*255*y/screen->h,c); + setpix(screen,x,y,((x%255)<<16) + ((y%255)<<8) + (x+y)%255); + } + } + drawCircle(screen,mousx,mousy,30,0xFFFFFF); + int i; + for(i=0;i 1) + device = argv[1]; + + //Open Device + if ((fd = open (device, O_RDONLY)) == -1) + printf ("%s is not a vaild device.\n", device); + + //Print Device Name + ioctl (fd, EVIOCGNAME (sizeof (name)), name); + printf ("Reading From : %s (%s)\n", device, name); + + + + + + SDL_Surface *screen; + SDL_Event event; + + int keypress = 0; + int h=0,s=1,i,j; + int tx,ty,curf=0; + + memset(keystat,0,512*sizeof(keystat[0])); + if (SDL_Init(SDL_INIT_VIDEO) < 0 ) return 1; + + if (!(screen = initScreen(WIDTH,HEIGHT))) + { + SDL_Quit(); + return 1; + } + + while(!keystat[27]) + { + //Poll SDL + while(SDL_PollEvent(&event)) + { + switch (event.type) + { + case SDL_QUIT: + keystat[27] = 1; + break; + case SDL_KEYDOWN: + //printf("%i\n",event.key.keysym.sym); + keystat[event.key.keysym.sym] = 1; + //keypress = 1; + break; + case SDL_KEYUP: + //printf("%i\n",event.key.keysym.sym); + keystat[event.key.keysym.sym] = 0; + //keypress = 1; + break; + case SDL_VIDEORESIZE: + if (!(screen = initScreen(event.resize.w, + event.resize.h))) + { + SDL_Quit(); + return 1; + } + break; + case SDL_MOUSEMOTION: + mousx = event.motion.x; + mousy = event.motion.y; + break; + case SDL_MOUSEBUTTONDOWN: + bstatus |= (1<<(event.button.button-1)); + break; + case SDL_MOUSEBUTTONUP: + bstatus &= ~(1<<(event.button.button-1)); + break; + } + } + + //poll for Touch <- Goal: make this a case: + if ((rd = read (fd, ev, size * 64)) < size) + perror_exit ("read()"); + //printf("time: %i\n type: %X\n code: %X\n value: %i\n ", + // ev->time,ev->type,ev->code,ev->value); + for (i = 0; i < rd / sizeof(struct input_event); i++) + switch (ev[i].type) + { + case EV_ABS: + if(ev[i].code == ABS_X) + tx = ev[i].value; + else if (ev[i].code == ABS_Y) + ty = ev[i].value; + else if (ev[i].code == ABS_MISC) + { + //printf("Misc:type: %X\n code: %X\n value: %i\n ", + // ev[i].type,ev[i].code,ev[i].value); + } + break; + case EV_MSC: + if(ev[i].code == MSC_SERIAL) + curf = ev[i].value; + break; + case EV_SYN: + curf -= 1; + if(tx >= 0) + finger[curf].x = tx; + if(ty >= 0) + finger[curf].y = ty; + + //printf("Synched: %i tx: %i, ty: %i\n",curf,finger[curf].x,finger[curf].y); + tx = -1; + ty = -1; + break; + + } + //And draw + DrawScreen(screen,h); + /* + for(i=0;i<512;i++) + if(keystat[i]) printf("%i\n",i); + printf("Buttons:%i\n",bstatus); + */ + } + SDL_Quit(); + + return 0; +} diff --git a/touchTest/touchSimp.c~ b/touchTest/touchSimp.c~ new file mode 100644 index 000000000..218cb4a8b --- /dev/null +++ b/touchTest/touchSimp.c~ @@ -0,0 +1,241 @@ +#include +#include +#include +#include +#include + + +#define PI 3.1415926535897 +#define WIDTH 640 +#define HEIGHT 480 +#define BPP 4 +#define DEPTH 32 + + +#define MAX_FINGERS 2 + +int mousx,mousy; +int keystat[512]; +int bstatus; + + + +typedef struct { + int x,y; +} Point; + +Point finger[MAX_FINGERS]; + +void handler (int sig) +{ + printf ("\nexiting...(%d)\n", sig); + exit (0); +} + +void perror_exit (char *error) +{ + perror (error); + handler (9); +} + + +void setpix(SDL_Surface *screen, int x, int y, int col) +{ + Uint32 *pixmem32; + Uint32 colour; + + if((unsigned)x > screen->w) return; + if((unsigned)y > screen->h) return; + + colour = SDL_MapRGB( screen->format, (col>>16)&0xFF, (col>>8)&0xFF, col&0xFF); + + pixmem32 = (Uint32*) screen->pixels + y*screen->pitch/BPP + x; + *pixmem32 = colour; +} + +void drawCircle(SDL_Surface* screen,int x,int y,int r,int c) +{ + + float a; + for(a=0;a<2*PI;a+=1.f/(float)r) + { + setpix(screen,(int)(x+r*cos(a)),(int)(y+r*sin(a)),c); + } +} + +void DrawScreen(SDL_Surface* screen, int h) +{ + int x, y, xm,ym,c; + if(SDL_MUSTLOCK(screen)) + { + if(SDL_LockSurface(screen) < 0) return; + } + for(y = 0; y < screen->h; y++ ) + { + for( x = 0; x < screen->w; x++ ) + { + //setpixel(screen, x, y, (x*x)/256+3*y+h, (y*y)/256+x+h, h); + //xm = (x+h)%screen->w; + //ym = (y+h)%screen->w; + //c = sin(h/256*2*PI)*x*y/screen->w/screen->h; + //setpix(screen,x,y,255*sin(xm/screen->w*2*PI),sin(h/255*2*PI)*255*y/screen->h,c); + setpix(screen,x,y,((x%255)<<16) + ((y%255)<<8) + (x+y)%255); + } + } + drawCircle(screen,mousx,mousy,30,0xFFFFFF); + int i; + for(i=0;i 1) + device = argv[1]; + + //Open Device + if ((fd = open (device, O_RDONLY)) == -1) + printf ("%s is not a vaild device.\n", device); + + //Print Device Name + ioctl (fd, EVIOCGNAME (sizeof (name)), name); + printf ("Reading From : %s (%s)\n", device, name); + + + + + + SDL_Surface *screen; + SDL_Event event; + + int keypress = 0; + int h=0,s=1,i,j; + int tx,ty,curf=0; + + Point ball,ballv; + + memset(keystat,0,512*sizeof(keystat[0])); + if (SDL_Init(SDL_INIT_VIDEO) < 0 ) return 1; + + if (!(screen = initScreen(WIDTH,HEIGHT))) + { + SDL_Quit(); + return 1; + } + ball.x = screen->width()/2; + ball.y = screen->height()/2; + while(!keystat[27]) + { + //Poll SDL + while(SDL_PollEvent(&event)) + { + switch (event.type) + { + case SDL_QUIT: + keystat[27] = 1; + break; + case SDL_KEYDOWN: + //printf("%i\n",event.key.keysym.sym); + keystat[event.key.keysym.sym] = 1; + //keypress = 1; + break; + case SDL_KEYUP: + //printf("%i\n",event.key.keysym.sym); + keystat[event.key.keysym.sym] = 0; + //keypress = 1; + break; + case SDL_VIDEORESIZE: + if (!(screen = initScreen(event.resize.w, + event.resize.h))) + { + SDL_Quit(); + return 1; + } + break; + case SDL_MOUSEMOTION: + mousx = event.motion.x; + mousy = event.motion.y; + break; + case SDL_MOUSEBUTTONDOWN: + bstatus |= (1<<(event.button.button-1)); + break; + case SDL_MOUSEBUTTONUP: + bstatus &= ~(1<<(event.button.button-1)); + break; + } + } + + //poll for Touch <- Goal: make this a case: + if ((rd = read (fd, ev, size * 64)) < size) + perror_exit ("read()"); + //printf("time: %i\n type: %X\n code: %X\n value: %i\n ", + // ev->time,ev->type,ev->code,ev->value); + for (i = 0; i < rd / sizeof(struct input_event); i++) + switch (ev[i].type) + { + case EV_ABS: + if(ev[i].code == ABS_X) + tx = ev[i].value; + else if (ev[i].code == ABS_Y) + ty = ev[i].value; + else if (ev[i].code == ABS_MISC) + { + //printf("Misc:type: %X\n code: %X\n value: %i\n ", + // ev[i].type,ev[i].code,ev[i].value); + } + break; + case EV_MSC: + if(ev[i].code == MSC_SERIAL) + curf = ev[i].value; + break; + case EV_SYN: + curf -= 1; + if(tx >= 0) + finger[curf].x = tx; + if(ty >= 0) + finger[curf].y = ty; + + //printf("Synched: %i tx: %i, ty: %i\n",curf,finger[curf].x,finger[curf].y); + tx = -1; + ty = -1; + break; + + } + //And draw + DrawScreen(screen,h); + /* + for(i=0;i<512;i++) + if(keystat[i]) printf("%i\n",i); + printf("Buttons:%i\n",bstatus); + */ + } + SDL_Quit(); + + return 0; +} From 3ce819866e6cf8d3a618f674248bd788c7ad9594 Mon Sep 17 00:00:00 2001 From: Jim Grandpre Date: Tue, 25 May 2010 23:23:23 -0400 Subject: [PATCH 010/169] Added SDL_touch.c/SDL_touch_c.h as slightly modifeind SDL_mouse*. Made reads in touchSimp non-blocking. --- src/events/SDL_events_c.h | 1 + src/events/SDL_touch.c | 575 ++++++++++++++++++++++++++++++++++ src/events/SDL_touch_c.h | 113 +++++++ src/video/x11/SDL_x11events.c | 4 + touchTest/touchSimp | Bin 28540 -> 28772 bytes touchTest/touchSimp.c | 92 +++--- 6 files changed, 741 insertions(+), 44 deletions(-) create mode 100644 src/events/SDL_touch.c create mode 100644 src/events/SDL_touch_c.h diff --git a/src/events/SDL_events_c.h b/src/events/SDL_events_c.h index 2f48e0614..ea1ec445b 100644 --- a/src/events/SDL_events_c.h +++ b/src/events/SDL_events_c.h @@ -26,6 +26,7 @@ #include "SDL_thread.h" #include "SDL_mouse_c.h" #include "SDL_keyboard_c.h" +#include "SDL_touch_c.h" #include "SDL_windowevents_c.h" /* Start and stop the event processing loop */ diff --git a/src/events/SDL_touch.c b/src/events/SDL_touch.c new file mode 100644 index 000000000..0700abc01 --- /dev/null +++ b/src/events/SDL_touch.c @@ -0,0 +1,575 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2010 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ +#include "SDL_config.h" + +/* General touch handling code for SDL */ + +#include "SDL_events.h" +#include "SDL_events_c.h" +#include "../video/SDL_sysvideo.h" + + +static int SDL_num_touch = 0; +static int SDL_current_touch = -1; +static SDL_Touch **SDL_touch = NULL; + + +/* Public functions */ +int +SDL_TouchInit(void) +{ + return (0); +} + +SDL_Touch * +SDL_GetTouch(int index) +{ + if (index < 0 || index >= SDL_num_touch) { + return NULL; + } + return SDL_touch[index]; +} + +static int +SDL_GetTouchIndexId(int id) +{ + int index; + SDL_Touch *touch; + + for (index = 0; index < SDL_num_touch; ++index) { + touch = SDL_GetTouch(index); + if (touch->id == id) { + return index; + } + } + return -1; +} + +int +SDL_AddTouch(const SDL_Touch * touch, char *name, int pressure_max, + int pressure_min, int ends) +{ + SDL_Touch **touch; + int selected_touch; + int index; + size_t length; + + if (SDL_GetTouchIndexId(touch->id) != -1) { + SDL_SetError("Touch ID already in use"); + } + + /* Add the touch to the list of touch */ + touch = (SDL_Touch **) SDL_realloc(SDL_touch, + (SDL_num_touch + 1) * sizeof(*touch)); + if (!touch) { + SDL_OutOfMemory(); + return -1; + } + + SDL_touch = touch; + index = SDL_num_touch++; + + SDL_touch[index] = (SDL_Touch *) SDL_malloc(sizeof(*SDL_touch[index])); + if (!SDL_touch[index]) { + SDL_OutOfMemory(); + return -1; + } + *SDL_touch[index] = *touch; + + /* we're setting the touch properties */ + length = 0; + length = SDL_strlen(name); + SDL_touch[index]->focus = 0; + SDL_touch[index]->name = SDL_malloc((length + 2) * sizeof(char)); + SDL_strlcpy(SDL_touch[index]->name, name, length + 1); + SDL_touch[index]->pressure_max = pressure_max; + SDL_touch[index]->pressure_min = pressure_min; + SDL_touch[index]->cursor_shown = SDL_TRUE; + selected_touch = SDL_SelectTouch(index); + SDL_touch[index]->cur_cursor = NULL; + SDL_touch[index]->def_cursor = + /* we're assuming that all touch are in the computer sensing zone */ + SDL_touch[index]->proximity = SDL_TRUE; + /* we're assuming that all touch are working in the absolute position mode + thanx to that, the users that don't want to use many touch don't have to + worry about anything */ + SDL_touch[index]->relative_mode = SDL_FALSE; + SDL_touch[index]->current_end = 0; + SDL_touch[index]->total_ends = ends; + SDL_SelectTouch(selected_touch); + + return index; +} + +void +SDL_DelTouch(int index) +{ + SDL_Touch *touch = SDL_GetTouch(index); + + if (!touch) { + return; + } + + touch->def_cursor = NULL; + SDL_free(touch->name); + + if (touch->FreeTouch) { + touch->FreeTouch(touch); + } + SDL_free(touch); + + SDL_touch[index] = NULL; +} + +void +SDL_ResetTouch(int index) +{ + SDL_Touch *touch = SDL_GetTouch(index); + + if (!touch) { + return; + } + + /* FIXME */ +} + +void +SDL_TouchQuit(void) +{ + int i; + + for (i = 0; i < SDL_num_touch; ++i) { + SDL_DelTouch(i); + } + SDL_num_touch = 0; + SDL_current_touch = -1; + + if (SDL_touch) { + SDL_free(SDL_touch); + SDL_touch = NULL; + } +} + +int +SDL_GetNumTouch(void) +{ + return SDL_num_touch; +} + +int +SDL_SelectTouch(int index) +{ + if (index >= 0 && index < SDL_num_touch) { + SDL_current_touch = index; + } + return SDL_current_touch; +} + +SDL_Window * +SDL_GetTouchFocusWindow(int index) +{ + SDL_Touch *touch = SDL_GetTouch(index); + + if (!touch) { + return 0; + } + return touch->focus; +} + +static int SDLCALL +FlushTouchMotion(void *param, SDL_Event * event) +{ + if (event->type == SDL_TOUCHMOTION + && event->motion.which == (Uint8) SDL_current_touch) { + return 0; + } else { + return 1; + } +} + +int +SDL_SetRelativeTouchMode(int index, SDL_bool enabled) +{ + SDL_Touch *touch = SDL_GetTouch(index); + + if (!touch) { + return -1; + } + + /* Flush pending touch motion */ + touch->flush_motion = SDL_TRUE; + SDL_PumpEvents(); + touch->flush_motion = SDL_FALSE; + SDL_FilterEvents(FlushTouchMotion, touch); + + /* Set the relative mode */ + touch->relative_mode = enabled; + + + + if (!enabled) { + /* Restore the expected touch position */ + SDL_WarpTouchInWindow(touch->focus, touch->x, touch->y); + } + return 0; +} + +SDL_bool +SDL_GetRelativeTouchMode(int index) +{ + SDL_Touch *touch = SDL_GetTouch(index); + + if (!touch) { + return SDL_FALSE; + } + return touch->relative_mode; +} + +Uint8 +SDL_GetTouchState(int *x, int *y) +{ + SDL_Touch *touch = SDL_GetTouch(SDL_current_touch); + + if (!touch) { + if (x) { + *x = 0; + } + if (y) { + *y = 0; + } + return 0; + } + + if (x) { + *x = touch->x; + } + if (y) { + *y = touch->y; + } + return touch->buttonstate; +} + +Uint8 +SDL_GetRelativeTouchState(int index, int *x, int *y) +{ + SDL_Touch *touch = SDL_GetTouch(index); + + if (!touch) { + if (x) { + *x = 0; + } + if (y) { + *y = 0; + } + return 0; + } + + if (x) { + *x = touch->xdelta; + } + if (y) { + *y = touch->ydelta; + } + touch->xdelta = 0; + touch->ydelta = 0; + return touch->buttonstate; +} + +void +SDL_SetTouchFocus(int id, SDL_Window * window) +{ + int index = SDL_GetTouchIndexId(id); + SDL_Touch *touch = SDL_GetTouch(index); + int i; + SDL_bool focus; + + if (!touch || (touch->focus == window)) { + return; + } + + /* See if the current window has lost focus */ + if (touch->focus) { + focus = SDL_FALSE; + for (i = 0; i < SDL_num_touch; ++i) { + SDL_Touch *check; + if (i != index) { + check = SDL_GetTouch(i); + if (check && check->focus == touch->focus) { + focus = SDL_TRUE; + break; + } + } + } + if (!focus) { + SDL_SendWindowEvent(touch->focus, SDL_WINDOWEVENT_LEAVE, 0, 0); + } + } + + touch->focus = window; + + if (touch->focus) { + focus = SDL_FALSE; + for (i = 0; i < SDL_num_touch; ++i) { + SDL_Touch *check; + if (i != index) { + check = SDL_GetTouch(i); + if (check && check->focus == touch->focus) { + focus = SDL_TRUE; + break; + } + } + } + if (!focus) { + SDL_SendWindowEvent(touch->focus, SDL_WINDOWEVENT_ENTER, 0, 0); + } + } +} + +int +SDL_SendProximity(int id, int x, int y, int type) +{ + int index = SDL_GetTouchIndexId(id); + SDL_Touch *touch = SDL_GetTouch(index); + int posted = 0; + + if (!touch) { + return 0; + } + + touch->last_x = x; + touch->last_y = y; + if (SDL_GetEventState(type) == SDL_ENABLE) { + SDL_Event event; + event.proximity.which = (Uint8) index; + event.proximity.x = x; + event.proximity.y = y; + event.proximity.cursor = touch->current_end; + event.proximity.type = type; + /* FIXME: is this right? */ + event.proximity.windowID = touch->focus ? touch->focus->id : 0; + posted = (SDL_PushEvent(&event) > 0); + if (type == SDL_PROXIMITYIN) { + touch->proximity = SDL_TRUE; + } else { + touch->proximity = SDL_FALSE; + } + } + return posted; +} + +int +SDL_SendTouchMotion(int id, int relative, int x, int y, int pressure) +{ + int index = SDL_GetTouchIndexId(id); + SDL_Touch *touch = SDL_GetTouch(index); + int posted; + int xrel; + int yrel; + int x_max = 0, y_max = 0; + + if (!touch || touch->flush_motion) { + return 0; + } + + /* if the touch is out of proximity we don't to want to have any motion from it */ + if (touch->proximity == SDL_FALSE) { + touch->last_x = x; + touch->last_y = y; + return 0; + } + + /* the relative motion is calculated regarding the system cursor last position */ + if (relative) { + xrel = x; + yrel = y; + x = (touch->last_x + x); + y = (touch->last_y + y); + } else { + xrel = x - touch->last_x; + yrel = y - touch->last_y; + } + + /* Drop events that don't change state */ + if (!xrel && !yrel) { +#if 0 + printf("Touch event didn't change state - dropped!\n"); +#endif + return 0; + } + + /* Update internal touch coordinates */ + if (touch->relative_mode == SDL_FALSE) { + touch->x = x; + touch->y = y; + } else { + touch->x += xrel; + touch->y += yrel; + } + + SDL_GetWindowSize(touch->focus, &x_max, &y_max); + + /* make sure that the pointers find themselves inside the windows */ + /* only check if touch->xmax is set ! */ + if (x_max && touch->x > x_max) { + touch->x = x_max; + } else if (touch->x < 0) { + touch->x = 0; + } + + if (y_max && touch->y > y_max) { + touch->y = y_max; + } else if (touch->y < 0) { + touch->y = 0; + } + + touch->xdelta += xrel; + touch->ydelta += yrel; + touch->pressure = pressure; + + + + /* Post the event, if desired */ + posted = 0; + if (SDL_GetEventState(SDL_TOUCHMOTION) == SDL_ENABLE && + touch->proximity == SDL_TRUE) { + SDL_Event event; + event.motion.type = SDL_TOUCHMOTION; + event.motion.which = (Uint8) index; + event.motion.state = touch->buttonstate; + event.motion.x = touch->x; + event.motion.y = touch->y; + event.motion.z = touch->z; + event.motion.pressure = touch->pressure; + event.motion.pressure_max = touch->pressure_max; + event.motion.pressure_min = touch->pressure_min; + event.motion.rotation = 0; + event.motion.tilt_x = 0; + event.motion.tilt_y = 0; + event.motion.cursor = touch->current_end; + event.motion.xrel = xrel; + event.motion.yrel = yrel; + event.motion.windowID = touch->focus ? touch->focus->id : 0; + posted = (SDL_PushEvent(&event) > 0); + } + touch->last_x = touch->x; + touch->last_y = touch->y; + return posted; +} + +int +SDL_SendTouchButton(int id, Uint8 state, Uint8 button) +{ + int index = SDL_GetTouchIndexId(id); + SDL_Touch *touch = SDL_GetTouch(index); + int posted; + Uint32 type; + + if (!touch) { + return 0; + } + + /* Figure out which event to perform */ + switch (state) { + case SDL_PRESSED: + if (touch->buttonstate & SDL_BUTTON(button)) { + /* Ignore this event, no state change */ + return 0; + } + type = SDL_TOUCHBUTTONDOWN; + touch->buttonstate |= SDL_BUTTON(button); + break; + case SDL_RELEASED: + if (!(touch->buttonstate & SDL_BUTTON(button))) { + /* Ignore this event, no state change */ + return 0; + } + type = SDL_TOUCHBUTTONUP; + touch->buttonstate &= ~SDL_BUTTON(button); + break; + default: + /* Invalid state -- bail */ + return 0; + } + + /* Post the event, if desired */ + posted = 0; + if (SDL_GetEventState(type) == SDL_ENABLE) { + SDL_Event event; + event.type = type; + event.button.which = (Uint8) index; + event.button.state = state; + event.button.button = button; + event.button.x = touch->x; + event.button.y = touch->y; + event.button.windowID = touch->focus ? touch->focus->id : 0; + posted = (SDL_PushEvent(&event) > 0); + } + return posted; +} + +int +SDL_SendTouchWheel(int index, int x, int y) +{ + SDL_Touch *touch = SDL_GetTouch(index); + int posted; + + if (!touch || (!x && !y)) { + return 0; + } + + /* Post the event, if desired */ + posted = 0; + if (SDL_GetEventState(SDL_TOUCHWHEEL) == SDL_ENABLE) { + SDL_Event event; + event.type = SDL_TOUCHWHEEL; + event.wheel.which = (Uint8) index; + event.wheel.x = x; + event.wheel.y = y; + event.wheel.windowID = touch->focus ? touch->focus->id : 0; + posted = (SDL_PushEvent(&event) > 0); + } + return posted; +} + + +char * +SDL_GetTouchName(int index) +{ + SDL_Touch *touch = SDL_GetTouch(index); + if (!touch) { + return NULL; + } + return touch->name; +} + +void +SDL_ChangeEnd(int id, int end) +{ + int index = SDL_GetTouchIndexId(id); + SDL_Touch *touch = SDL_GetTouch(index); + + if (touch) { + touch->current_end = end; + } +} + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/events/SDL_touch_c.h b/src/events/SDL_touch_c.h new file mode 100644 index 000000000..62a950ceb --- /dev/null +++ b/src/events/SDL_touch_c.h @@ -0,0 +1,113 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2010 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ +#include "SDL_config.h" + +#ifndef _SDL_touch_c_h +#define _SDL_touch_c_h + +typedef struct SDL_Touch SDL_Touch; + + +struct SDL_Touch +{ + /* Warp the touch to (x,y) */ + void (*WarpTouch) (SDL_Touch * touch, SDL_Window * window, int x, + int y); + + /* Free the touch when it's time */ + void (*FreeTouch) (SDL_Touch * touch); + + /* data common for tablets */ + int pressure; + int pressure_max; + int pressure_min; + int tilt; /* for future use */ + int rotation; /* for future use */ + int total_ends; + int current_end; + + /* Data common to all touch */ + int id; + SDL_Window *focus; + int which; + int x; + int y; + int z; /* for future use */ + int xdelta; + int ydelta; + int last_x, last_y; /* the last reported x and y coordinates */ + char *name; + Uint8 buttonstate; + SDL_bool relative_mode; + SDL_bool proximity; + SDL_bool flush_motion; + + SDL_Cursor *cursors; + SDL_Cursor *def_cursor; + SDL_Cursor *cur_cursor; + SDL_bool cursor_shown; + + void *driverdata; +}; + +/* Initialize the touch subsystem */ +extern int SDL_TouchInit(void); + +/* Get the touch at an index */ +extern SDL_Touch *SDL_GetTouch(int index); + +/* Add a touch, possibly reattaching at a particular index (or -1), + returning the index of the touch, or -1 if there was an error. + */ +extern int SDL_AddTouch(const SDL_Touch * touch, char *name, + int pressure_max, int pressure_min, int ends); + +/* Remove a touch at an index, clearing the slot for later */ +extern void SDL_DelTouch(int index); + +/* Clear the button state of a touch at an index */ +extern void SDL_ResetTouch(int index); + +/* Set the touch focus window */ +extern void SDL_SetTouchFocus(int id, SDL_Window * window); + +/* Send a touch motion event for a touch */ +extern int SDL_SendTouchMotion(int id, int relative, int x, int y, int z); + +/* Send a touch button event for a touch */ +extern int SDL_SendTouchButton(int id, Uint8 state, Uint8 button); + +/* Send a touch wheel event for a touch */ +extern int SDL_SendTouchWheel(int id, int x, int y); + +/* Send a proximity event for a touch */ +extern int SDL_SendProximity(int id, int x, int y, int type); + +/* Shutdown the touch subsystem */ +extern void SDL_TouchQuit(void); + +/* FIXME: Where do these functions go in this header? */ +extern void SDL_ChangeEnd(int id, int end); + +#endif /* _SDL_touch_c_h */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/x11/SDL_x11events.c b/src/video/x11/SDL_x11events.c index 598093fed..c65c67d83 100644 --- a/src/video/x11/SDL_x11events.c +++ b/src/video/x11/SDL_x11events.c @@ -408,6 +408,10 @@ X11_PumpEvents(_THIS) while (X11_Pending(data->display)) { X11_DispatchEvent(_this); } + + + /* Process Touch events - TODO When X gets touch support, REMOVE THIS*/ + } /* This is so wrong it hurts */ diff --git a/touchTest/touchSimp b/touchTest/touchSimp index 0caf1d15a2bc7b50101c6e91c88fdddeeeac137a..57e1c92596505a47915abd237a5d58eeb272e174 100755 GIT binary patch delta 7428 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 Ixpc_?0jXNd+yDRo delta 6935 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 diff --git a/touchTest/touchSimp.c b/touchTest/touchSimp.c index b89f78207..cc3ff292b 100644 --- a/touchTest/touchSimp.c +++ b/touchTest/touchSimp.c @@ -20,6 +20,7 @@ int bstatus; + typedef struct { int x,y; } Point; @@ -120,7 +121,7 @@ int main(int argc, char* argv[]) device = argv[1]; //Open Device - if ((fd = open (device, O_RDONLY)) == -1) + if ((fd = open (device, O_RDONLY | O_NONBLOCK)) == -1) printf ("%s is not a vaild device.\n", device); //Print Device Name @@ -189,50 +190,53 @@ int main(int argc, char* argv[]) } //poll for Touch <- Goal: make this a case: - if ((rd = read (fd, ev, size * 64)) < size) - perror_exit ("read()"); + + + /*if ((rd = read (fd, ev, size * 64)) < size) + perror_exit ("read()"); */ //printf("time: %i\n type: %X\n code: %X\n value: %i\n ", // ev->time,ev->type,ev->code,ev->value); - for (i = 0; i < rd / sizeof(struct input_event); i++) - switch (ev[i].type) - { - case EV_ABS: - if(ev[i].code == ABS_X) - tx = ev[i].value; - else if (ev[i].code == ABS_Y) - ty = ev[i].value; - else if (ev[i].code == ABS_MISC) - { - //printf("Misc:type: %X\n code: %X\n value: %i\n ", - // ev[i].type,ev[i].code,ev[i].value); - } - break; - case EV_MSC: - if(ev[i].code == MSC_SERIAL) - curf = ev[i].value; - break; - case EV_SYN: - curf -= 1; - if(tx >= 0) - finger[curf].x = tx; - if(ty >= 0) - finger[curf].y = ty; - - //printf("Synched: %i tx: %i, ty: %i\n",curf,finger[curf].x,finger[curf].y); - tx = -1; - ty = -1; - break; - - } - //And draw - DrawScreen(screen,h); - /* - for(i=0;i<512;i++) - if(keystat[i]) printf("%i\n",i); - printf("Buttons:%i\n",bstatus); - */ - } - SDL_Quit(); - + if((rd = read (fd, ev, size * 64)) >= size) + for (i = 0; i < rd / sizeof(struct input_event); i++) + switch (ev[i].type) + { + case EV_ABS: + if(ev[i].code == ABS_X) + tx = ev[i].value; + else if (ev[i].code == ABS_Y) + ty = ev[i].value; + else if (ev[i].code == ABS_MISC) + { + //printf("Misc:type: %X\n code: %X\n value: %i\n ", + // ev[i].type,ev[i].code,ev[i].value); + } + break; + case EV_MSC: + if(ev[i].code == MSC_SERIAL) + curf = ev[i].value; + break; + case EV_SYN: + curf -= 1; + if(tx >= 0) + finger[curf].x = tx; + if(ty >= 0) + finger[curf].y = ty; + + //printf("Synched: %i tx: %i, ty: %i\n",curf,finger[curf].x,finger[curf].y); + tx = -1; + ty = -1; + break; + + } + //And draw + DrawScreen(screen,h); + /* + for(i=0;i<512;i++) + if(keystat[i]) printf("%i\n",i); + printf("Buttons:%i\n",bstatus); + */ + } + SDL_Quit(); + return 0; } From 1490cd435abf3e6a8b5fb5e50ccb5a6d564acb28 Mon Sep 17 00:00:00 2001 From: Sunny Sachanandani Date: Wed, 26 May 2010 20:11:56 +0530 Subject: [PATCH 011/169] Correctly handle the availability of Xrender in X11_CreateRenderer and X11_DisplayModeChanged. Fixed the XRenderPictureAttributes value in X11_CreateRenderer with graphics_exposures = False. Start work on Xrender specific additions to X11_TextureData and X11_CreateTexture. --- src/video/x11/SDL_x11render.c | 54 ++++++++++++++++++++++++++++++----- 1 file changed, 47 insertions(+), 7 deletions(-) diff --git a/src/video/x11/SDL_x11render.c b/src/video/x11/SDL_x11render.c index e04a2ef3b..30421b61f 100644 --- a/src/video/x11/SDL_x11render.c +++ b/src/video/x11/SDL_x11render.c @@ -97,6 +97,8 @@ typedef struct Pixmap pixmaps[3]; #ifdef SDL_VIDEO_DRIVER_X11_XRENDER Picture xwindow_pict; + Picture pixmap_picts[3]; + Picture * drawable_pict; XRenderPictFormat* xwindow_pict_fmt; XRenderPictureAttributes xwindow_pict_attr; unsigned int xwindow_pict_attr_valuemask; @@ -117,6 +119,9 @@ typedef struct Pixmap pixmap; #ifdef SDL_VIDEO_DRIVER_X11_XRENDER Picture picture; + XRenderPictFormat* picture_fmt; + XRenderPictureAttributes picture_attr; + unsigned int picture_attr_valuemask; #endif XImage *image; #ifndef NO_SHARED_MEMORY @@ -213,12 +218,10 @@ X11_CreateRenderer(SDL_Window * window, Uint32 flags) if(XRenderQueryExtension(data->display, &event_basep, &error_basep) == True) { data->xrender_available = SDL_TRUE; data->xwindow_pict_fmt = XRenderFindVisualFormat(data->display, data->visual); - data->xwindow_pict_attr_valuemask = 0; // FIXME - data->xwindow_pict = XRenderCreatePicture(data->display, - data->xwindow, - data->xwindow_pict_fmt, - data->xwindow_pict_attr_valuemask, - &data->xwindow_pict_attr); + data->xwindow_pict_attr.graphics_exposures = False; + data->xwindow_pict_attr_valuemask = CPGraphicsExposure; + data->xwindow_pict = XRenderCreatePicture(data->display, data->xwindow, data->xwindow_pict_fmt, + data->xwindow_pict_attr_valuemask, &data->xwindow_pict_attr); } else { data->xrender_available = SDL_FALSE; @@ -272,12 +275,23 @@ X11_CreateRenderer(SDL_Window * window, Uint32 flags) SDL_SetError("XCreatePixmap() failed"); return NULL; } + data->pixmap_picts[i] = + XCreatePicture(data->display, data->pixmap[i], data->xwindow_pict_fmt, + data->xwindow_pict_attr_valuemask, &xwindow_pict_attr); } if (n > 0) { data->drawable = data->pixmaps[0]; +#ifdef SDL_VIDEO_DRIVER_X11_XRENDER + if(data->xrender_available == SDL_TRUE) + data->drawable_pict = &(data->pixmap_picts[0]); +#endif data->makedirty = SDL_TRUE; } else { data->drawable = data->xwindow; +#ifdef SDL_VIDEO_DRIVER_X11_XRENDER + if(data->xrender_available == SDL_TRUE) + data->drawable_pict = &(data->xwindow_pict); +#endif data->makedirty = SDL_FALSE; } data->current_pixmap = 0; @@ -325,6 +339,9 @@ X11_DisplayModeChanged(SDL_Renderer * renderer) if (data->pixmaps[i] != None) { XFreePixmap(data->display, data->pixmaps[i]); data->pixmaps[i] = None; +#ifdef SDL_VIDEO_DRIVER_X11_XRENDER + data->pictures[i] = None; +#endif } } for (i = 0; i < n; ++i) { @@ -335,9 +352,17 @@ X11_DisplayModeChanged(SDL_Renderer * renderer) SDL_SetError("XCreatePixmap() failed"); return -1; } +#ifdef SDL_VIDEO_DRIVER_X11_XRENDER + data->pictures[i] = + XCreatePicture(data->display, data->pixmap[i], data->xwindow_pict_fmt, + data->xwindow_pict_attr_valuemask, &data->xwindow_pict_attr); +#endif } if (n > 0) { data->drawable = data->pixmaps[0]; +#ifdef SDL_VIDEO_DRIVER_X11_XRENDER + data->drawable_pict = &(data->pictures[0]); +#endif } data->current_pixmap = 0; @@ -360,7 +385,6 @@ X11_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture) } texture->driverdata = data; - if (SDL_ISPIXELFORMAT_FOURCC(texture->format)) { data->yuv = SDL_SW_CreateYUVTexture(texture->format, texture->w, texture->h); @@ -371,11 +395,21 @@ X11_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture) } else { /* The image/pixmap depth must be the same as the window or you get a BadMatch error when trying to putimage or copyarea. + This BadMatch error */ +#ifdef SDL_VIDEO_DRIVER_X11_XRENDER + if(renderdata->xrender_available == SDL_False) { + if (texture->format != display->current_mode.format) { + SDL_SetError("Texture format doesn't match window format"); + return -1; + } + } +#else if (texture->format != display->current_mode.format) { SDL_SetError("Texture format doesn't match window format"); return -1; } +#endif data->format = texture->format; } data->pitch = texture->w * SDL_BYTESPERPIXEL(data->format); @@ -455,6 +489,12 @@ X11_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture) SDL_SetError("XCreatePixmap() failed"); return -1; } + +#ifdef SDL_VIDEO_DRIVER_X11_XRENDER + data->picture_fmt = + XRenderFindVisualFormat(renderdata->display, + data->picture = + XCreatePicture(renderdata->display, data->pixmap, data->image = XCreateImage(renderdata->display, renderdata->visual, From dcd8a5fd97447ccedabbddcae9d40f8c9fb5a90e Mon Sep 17 00:00:00 2001 From: Jim Grandpre Date: Thu, 27 May 2010 01:21:37 -0400 Subject: [PATCH 012/169] Added touch event definitions. Heavily modified events/SDL_touch*. --- include/SDL_events.h | 41 ++++ src/events/SDL_touch.c | 452 +++++++++++++++------------------------ src/events/SDL_touch_c.h | 89 ++++---- touchTest/touchPong | Bin 28731 -> 29171 bytes touchTest/touchSimp | Bin 28772 -> 28976 bytes 5 files changed, 252 insertions(+), 330 deletions(-) diff --git a/include/SDL_events.h b/include/SDL_events.h index fbdc46c94..87096d1d6 100644 --- a/include/SDL_events.h +++ b/include/SDL_events.h @@ -86,11 +86,19 @@ typedef enum SDL_JOYBUTTONDOWN, /**< Joystick button pressed */ SDL_JOYBUTTONUP, /**< Joystick button released */ + /*Touch events - is 0x700 the correct place?*/ + SDL_FINGERDOWN = 0x700, + SDL_FINGERUP, + SDL_FINGERMOTION, + SDL_TOUCHBUTTONDOWN, + SDL_TOUCHBUTTONUP, + /* Obsolete events */ SDL_EVENT_COMPAT1 = 0x7000, /**< SDL 1.2 events for compatibility */ SDL_EVENT_COMPAT2, SDL_EVENT_COMPAT3, + /** Events ::SDL_USEREVENT through ::SDL_LASTEVENT are for your use, * and should be allocated with SDL_RegisterEvents() */ @@ -289,6 +297,37 @@ typedef struct SDL_JoyButtonEvent Uint8 padding1; } SDL_JoyButtonEvent; + +/** + * \brief Touch finger motion/finger event structure (event.tmotion.*) + */ +typedef struct SDL_TouchFingerEvent +{ + Uint32 type; /**< ::SDL_FINGERMOTION OR + SDL_FINGERDOWN OR SDL_FINGERUP*/ + Uint32 windowID; /**< The window with mouse focus, if any */ + Uint8 touchId; /**< The touch device id */ + Uint8 state; /**< The current button state */ + Uint8 fingerId; + Uint8 padding1; +} SDL_TouchFingerEvent; + + +/** + * \brief Touch finger motion/finger event structure (event.tmotion.*) + */ +typedef struct SDL_TouchButtonEvent +{ + Uint32 type; /**< ::SDL_TOUCHBUTTONUP OR SDL_TOUCHBUTTONDOWN */ + Uint32 windowID; /**< The window with mouse focus, if any */ + Uint8 touchId; /**< The touch device index */ + Uint8 state; /**< The current button state */ + Uint8 button; /**< The button changing state */ + Uint8 padding1; + +} SDL_TouchButtonEvent; + + /** * \brief The "quit requested" event */ @@ -372,6 +411,8 @@ typedef union SDL_Event SDL_UserEvent user; /**< Custom event data */ SDL_SysWMEvent syswm; /**< System dependent window event data */ SDL_ProximityEvent proximity; /**< Proximity In or Out event */ + SDL_TouchFingerEvent tfinger; /**< Touch finger event data */ + SDL_TouchButtonEvent tbutton; /**< Touch button event data */ /** Temporarily here for backwards compatibility */ /*@{*/ diff --git a/src/events/SDL_touch.c b/src/events/SDL_touch.c index 0700abc01..88505daec 100644 --- a/src/events/SDL_touch.c +++ b/src/events/SDL_touch.c @@ -29,8 +29,7 @@ static int SDL_num_touch = 0; -static int SDL_current_touch = -1; -static SDL_Touch **SDL_touch = NULL; +static SDL_Touch **SDL_touchPads = NULL; /* Public functions */ @@ -39,24 +38,43 @@ SDL_TouchInit(void) { return (0); } - SDL_Touch * -SDL_GetTouch(int index) +SDL_GetTouch(int id) { + int index = SDL_GetTouchIndexId(id); if (index < 0 || index >= SDL_num_touch) { return NULL; } - return SDL_touch[index]; + return SDL_touchPads[index]; +} + +SDL_Finger * +SDL_GetFinger(SDL_Touch* touch,int id) +{ + int index = SDL_GetFingerIndexId(touch,id); + if(index < 0 || index >= touch->num_fingers) + return NULL; + return touch->fingers[index]; +} + +int +SDL_GetFingerIndexId(SDL_Touch* touch,int fingerid) +{ + int i; + for(i = 0;i < touch->num_fingers;i++) + if(touch->fingers[i]->id == fingerid) + return i; + return -1; } -static int +int SDL_GetTouchIndexId(int id) { int index; SDL_Touch *touch; for (index = 0; index < SDL_num_touch; ++index) { - touch = SDL_GetTouch(index); + touch = SDL_touchPads[index]; if (touch->id == id) { return index; } @@ -68,7 +86,7 @@ int SDL_AddTouch(const SDL_Touch * touch, char *name, int pressure_max, int pressure_min, int ends) { - SDL_Touch **touch; + SDL_Touch **touchPads; int selected_touch; int index; size_t length; @@ -78,58 +96,47 @@ SDL_AddTouch(const SDL_Touch * touch, char *name, int pressure_max, } /* Add the touch to the list of touch */ - touch = (SDL_Touch **) SDL_realloc(SDL_touch, + touchPads = (SDL_Touch **) SDL_realloc(SDL_touchPads, (SDL_num_touch + 1) * sizeof(*touch)); - if (!touch) { + if (!touchPads) { SDL_OutOfMemory(); return -1; } - SDL_touch = touch; + SDL_touchPads = touchPads; index = SDL_num_touch++; - SDL_touch[index] = (SDL_Touch *) SDL_malloc(sizeof(*SDL_touch[index])); - if (!SDL_touch[index]) { + SDL_touchPads[index] = (SDL_Touch *) SDL_malloc(sizeof(*SDL_touchPads[index])); + if (!SDL_touchPads[index]) { SDL_OutOfMemory(); return -1; } - *SDL_touch[index] = *touch; + *SDL_touchPads[index] = *touch; /* we're setting the touch properties */ length = 0; length = SDL_strlen(name); - SDL_touch[index]->focus = 0; - SDL_touch[index]->name = SDL_malloc((length + 2) * sizeof(char)); - SDL_strlcpy(SDL_touch[index]->name, name, length + 1); - SDL_touch[index]->pressure_max = pressure_max; - SDL_touch[index]->pressure_min = pressure_min; - SDL_touch[index]->cursor_shown = SDL_TRUE; - selected_touch = SDL_SelectTouch(index); - SDL_touch[index]->cur_cursor = NULL; - SDL_touch[index]->def_cursor = - /* we're assuming that all touch are in the computer sensing zone */ - SDL_touch[index]->proximity = SDL_TRUE; - /* we're assuming that all touch are working in the absolute position mode - thanx to that, the users that don't want to use many touch don't have to - worry about anything */ - SDL_touch[index]->relative_mode = SDL_FALSE; - SDL_touch[index]->current_end = 0; - SDL_touch[index]->total_ends = ends; - SDL_SelectTouch(selected_touch); + SDL_touchPads[index]->focus = 0; + SDL_touchPads[index]->name = SDL_malloc((length + 2) * sizeof(char)); + SDL_strlcpy(SDL_touchPads[index]->name, name, length + 1); + SDL_touchPads[index]->pressure_max = pressure_max; + SDL_touchPads[index]->pressure_min = pressure_min; + return index; } void -SDL_DelTouch(int index) +SDL_DelTouch(int id) { - SDL_Touch *touch = SDL_GetTouch(index); + int index = SDL_GetTouchIndexId(id); + SDL_Touch *touch = SDL_GetTouch(id); if (!touch) { return; } - touch->def_cursor = NULL; + SDL_free(touch->name); if (touch->FreeTouch) { @@ -137,19 +144,8 @@ SDL_DelTouch(int index) } SDL_free(touch); - SDL_touch[index] = NULL; -} - -void -SDL_ResetTouch(int index) -{ - SDL_Touch *touch = SDL_GetTouch(index); - - if (!touch) { - return; - } - - /* FIXME */ + SDL_num_touch--; + SDL_touchPads[index] = SDL_touchPads[SDL_num_touch]; } void @@ -157,15 +153,14 @@ SDL_TouchQuit(void) { int i; - for (i = 0; i < SDL_num_touch; ++i) { + for (i = SDL_num_touch-1; i > 0 ; --i) { SDL_DelTouch(i); } SDL_num_touch = 0; - SDL_current_touch = -1; - if (SDL_touch) { - SDL_free(SDL_touch); - SDL_touch = NULL; + if (SDL_touchPads) { + SDL_free(SDL_touchPads); + SDL_touchPads = NULL; } } @@ -174,20 +169,10 @@ SDL_GetNumTouch(void) { return SDL_num_touch; } - -int -SDL_SelectTouch(int index) -{ - if (index >= 0 && index < SDL_num_touch) { - SDL_current_touch = index; - } - return SDL_current_touch; -} - SDL_Window * -SDL_GetTouchFocusWindow(int index) +SDL_GetTouchFocusWindow(int id) { - SDL_Touch *touch = SDL_GetTouch(index); + SDL_Touch *touch = SDL_GetTouch(id); if (!touch) { return 0; @@ -195,110 +180,11 @@ SDL_GetTouchFocusWindow(int index) return touch->focus; } -static int SDLCALL -FlushTouchMotion(void *param, SDL_Event * event) -{ - if (event->type == SDL_TOUCHMOTION - && event->motion.which == (Uint8) SDL_current_touch) { - return 0; - } else { - return 1; - } -} - -int -SDL_SetRelativeTouchMode(int index, SDL_bool enabled) -{ - SDL_Touch *touch = SDL_GetTouch(index); - - if (!touch) { - return -1; - } - - /* Flush pending touch motion */ - touch->flush_motion = SDL_TRUE; - SDL_PumpEvents(); - touch->flush_motion = SDL_FALSE; - SDL_FilterEvents(FlushTouchMotion, touch); - - /* Set the relative mode */ - touch->relative_mode = enabled; - - - - if (!enabled) { - /* Restore the expected touch position */ - SDL_WarpTouchInWindow(touch->focus, touch->x, touch->y); - } - return 0; -} - -SDL_bool -SDL_GetRelativeTouchMode(int index) -{ - SDL_Touch *touch = SDL_GetTouch(index); - - if (!touch) { - return SDL_FALSE; - } - return touch->relative_mode; -} - -Uint8 -SDL_GetTouchState(int *x, int *y) -{ - SDL_Touch *touch = SDL_GetTouch(SDL_current_touch); - - if (!touch) { - if (x) { - *x = 0; - } - if (y) { - *y = 0; - } - return 0; - } - - if (x) { - *x = touch->x; - } - if (y) { - *y = touch->y; - } - return touch->buttonstate; -} - -Uint8 -SDL_GetRelativeTouchState(int index, int *x, int *y) -{ - SDL_Touch *touch = SDL_GetTouch(index); - - if (!touch) { - if (x) { - *x = 0; - } - if (y) { - *y = 0; - } - return 0; - } - - if (x) { - *x = touch->xdelta; - } - if (y) { - *y = touch->ydelta; - } - touch->xdelta = 0; - touch->ydelta = 0; - return touch->buttonstate; -} - void SDL_SetTouchFocus(int id, SDL_Window * window) { int index = SDL_GetTouchIndexId(id); - SDL_Touch *touch = SDL_GetTouch(index); + SDL_Touch *touch = SDL_GetTouch(id); int i; SDL_bool focus; @@ -312,7 +198,7 @@ SDL_SetTouchFocus(int id, SDL_Window * window) for (i = 0; i < SDL_num_touch; ++i) { SDL_Touch *check; if (i != index) { - check = SDL_GetTouch(i); + check = SDL_touchPads[i]; if (check && check->focus == touch->focus) { focus = SDL_TRUE; break; @@ -331,7 +217,7 @@ SDL_SetTouchFocus(int id, SDL_Window * window) for (i = 0; i < SDL_num_touch; ++i) { SDL_Touch *check; if (i != index) { - check = SDL_GetTouch(i); + check = SDL_touchPads[i]; if (check && check->focus == touch->focus) { focus = SDL_TRUE; break; @@ -344,43 +230,106 @@ SDL_SetTouchFocus(int id, SDL_Window * window) } } +int +SDL_AddFinger(SDL_Touch* touch,SDL_Finger* finger) +{ + int index; + SDL_Finger **fingers; + size_t length; + + if (SDL_GetFingerIndexId(touch,finger->id) != -1) { + SDL_SetError("Finger ID already in use"); + } + + /* Add the touch to the list of touch */ + fingers = (SDL_Finger **) SDL_realloc(touch->fingers, + (touch->num_fingers + 1) * sizeof(*touch)); + if (!fingers) { + SDL_OutOfMemory(); + return -1; + } + + touch->fingers = fingers; + index = SDL_num_touch++; + + touch->fingers[index] = (SDL_Finger *) SDL_malloc(sizeof(*(touch->fingers[index]))); + if (!touch->fingers[index]) { + SDL_OutOfMemory(); + return -1; + } + *touch->fingers[index] = *finger; + + return index; +} + int -SDL_SendProximity(int id, int x, int y, int type) +SDL_DelFinger(SDL_Touch* touch,int fingerid) { - int index = SDL_GetTouchIndexId(id); - SDL_Touch *touch = SDL_GetTouch(index); - int posted = 0; + int index = SLD_GetFingerIndexId(touch,fingerid); + SDL_Finger* finger = SDL_GetFinger(touch,fingerid); - if (!touch) { - return 0; + if (!finger) { + return; } + - touch->last_x = x; - touch->last_y = y; - if (SDL_GetEventState(type) == SDL_ENABLE) { - SDL_Event event; - event.proximity.which = (Uint8) index; - event.proximity.x = x; - event.proximity.y = y; - event.proximity.cursor = touch->current_end; - event.proximity.type = type; - /* FIXME: is this right? */ - event.proximity.windowID = touch->focus ? touch->focus->id : 0; - posted = (SDL_PushEvent(&event) > 0); - if (type == SDL_PROXIMITYIN) { - touch->proximity = SDL_TRUE; - } else { - touch->proximity = SDL_FALSE; - } + SDL_free(finger); + touch->num_fingers--; + touch->fingers[index] = touch->fingers[touch->num_fingers]; +} + + +int +SDL_SendFingerDown(int id, int fingerid, SDL_bool down, int x, int y, int pressure) +{ + SDL_Touch* touch = SDL_GetTouch(id); + if(down) { + SDL_Finger nf; + nf.id = id; + nf.x = x; + nf.y = y; + nf.pressure = pressure; + nf.xdelta = 0; + nf.ydelta = 0; + nf.last_x = x; + nf.last_y = y; + SDL_AddFinger(touch,&nf); + + posted = 0; + if (SDL_GetEventState(SDL_FINGERDOWN) == SDL_ENABLE) { + SDL_Event event; + event.tfinger.type = SDL_FINGERDOWN; + event.tfinger.touchId = (Uint8) id; + event.tfinger.state = touch->buttonstate; + event.tfinger.windowID = touch->focus ? touch->focus->id : 0; + event.fingerId = id; + posted = (SDL_PushEvent(&event) > 0); + } + return posted; + } + else { + SDL_DelFinger(touch,id); + posted = 0; + if (SDL_GetEventState(SDL_FINGERUP) == SDL_ENABLE) { + SDL_Event event; + event.tfinger.type = SDL_FINGERUP; + event.tfinger.touchId = (Uint8) id; + event.tfinger.state = touch->buttonstate; + event.tfinger.windowID = touch->focus ? touch->focus->id : 0; + event.fingerId = id; + posted = (SDL_PushEvent(&event) > 0); + } + return posted; } - return posted; } int -SDL_SendTouchMotion(int id, int relative, int x, int y, int pressure) +SDL_SendTouchMotion(int id, int fingerid, int relative, + int x, int y, int pressure) { int index = SDL_GetTouchIndexId(id); - SDL_Touch *touch = SDL_GetTouch(index); + SDL_Touch *touch = SDL_GetTouch(id); + SDL_Finger *finger = SDL_GetFinger(touch,fingerid); int posted; int xrel; int yrel; @@ -390,22 +339,15 @@ SDL_SendTouchMotion(int id, int relative, int x, int y, int pressure) return 0; } - /* if the touch is out of proximity we don't to want to have any motion from it */ - if (touch->proximity == SDL_FALSE) { - touch->last_x = x; - touch->last_y = y; - return 0; - } - /* the relative motion is calculated regarding the system cursor last position */ if (relative) { xrel = x; yrel = y; - x = (touch->last_x + x); - y = (touch->last_y + y); + x = (finger->last_x + x); + y = (finger->last_y + y); } else { - xrel = x - touch->last_x; - yrel = y - touch->last_y; + xrel = x - finger->last_x; + yrel = y - finger->last_y; } /* Drop events that don't change state */ @@ -417,18 +359,16 @@ SDL_SendTouchMotion(int id, int relative, int x, int y, int pressure) } /* Update internal touch coordinates */ - if (touch->relative_mode == SDL_FALSE) { - touch->x = x; - touch->y = y; - } else { - touch->x += xrel; - touch->y += yrel; - } - SDL_GetWindowSize(touch->focus, &x_max, &y_max); + finger->x = x; + finger->y = y; + + /*Should scale to window? Normalize? Maintain Aspect?*/ + //SDL_GetWindowSize(touch->focus, &x_max, &y_max); /* make sure that the pointers find themselves inside the windows */ /* only check if touch->xmax is set ! */ + /* if (x_max && touch->x > x_max) { touch->x = x_max; } else if (touch->x < 0) { @@ -440,46 +380,32 @@ SDL_SendTouchMotion(int id, int relative, int x, int y, int pressure) } else if (touch->y < 0) { touch->y = 0; } - - touch->xdelta += xrel; - touch->ydelta += yrel; - touch->pressure = pressure; + */ + finger->xdelta += xrel; + finger->ydelta += yrel; + finger->pressure = pressure; /* Post the event, if desired */ posted = 0; - if (SDL_GetEventState(SDL_TOUCHMOTION) == SDL_ENABLE && - touch->proximity == SDL_TRUE) { + if (SDL_GetEventState(SDL_FINGERMOTION) == SDL_ENABLE) { SDL_Event event; - event.motion.type = SDL_TOUCHMOTION; - event.motion.which = (Uint8) index; - event.motion.state = touch->buttonstate; - event.motion.x = touch->x; - event.motion.y = touch->y; - event.motion.z = touch->z; - event.motion.pressure = touch->pressure; - event.motion.pressure_max = touch->pressure_max; - event.motion.pressure_min = touch->pressure_min; - event.motion.rotation = 0; - event.motion.tilt_x = 0; - event.motion.tilt_y = 0; - event.motion.cursor = touch->current_end; - event.motion.xrel = xrel; - event.motion.yrel = yrel; - event.motion.windowID = touch->focus ? touch->focus->id : 0; + event.tfinger.type = SDL_FINGERMOTION; + event.tfinger.which = (Uint8) index; + event.tfinger.state = touch->buttonstate; + event.tfinger.windowID = touch->focus ? touch->focus->id : 0; posted = (SDL_PushEvent(&event) > 0); } - touch->last_x = touch->x; - touch->last_y = touch->y; + finger->last_x = finger->x; + finger->last_y = finger->y; return posted; } int SDL_SendTouchButton(int id, Uint8 state, Uint8 button) { - int index = SDL_GetTouchIndexId(id); - SDL_Touch *touch = SDL_GetTouch(index); + SDL_Touch *touch = SDL_GetTouch(id); int posted; Uint32 type; @@ -515,61 +441,23 @@ SDL_SendTouchButton(int id, Uint8 state, Uint8 button) if (SDL_GetEventState(type) == SDL_ENABLE) { SDL_Event event; event.type = type; - event.button.which = (Uint8) index; - event.button.state = state; - event.button.button = button; - event.button.x = touch->x; - event.button.y = touch->y; - event.button.windowID = touch->focus ? touch->focus->id : 0; - posted = (SDL_PushEvent(&event) > 0); - } - return posted; -} - -int -SDL_SendTouchWheel(int index, int x, int y) -{ - SDL_Touch *touch = SDL_GetTouch(index); - int posted; - - if (!touch || (!x && !y)) { - return 0; - } - - /* Post the event, if desired */ - posted = 0; - if (SDL_GetEventState(SDL_TOUCHWHEEL) == SDL_ENABLE) { - SDL_Event event; - event.type = SDL_TOUCHWHEEL; - event.wheel.which = (Uint8) index; - event.wheel.x = x; - event.wheel.y = y; - event.wheel.windowID = touch->focus ? touch->focus->id : 0; + event.tbutton.which = (Uint8) index; + event.tbutton.state = state; + event.tbutton.button = button; + event.tbutton.windowID = touch->focus ? touch->focus->id : 0; posted = (SDL_PushEvent(&event) > 0); } return posted; } - char * -SDL_GetTouchName(int index) +SDL_GetTouchName(int id) { - SDL_Touch *touch = SDL_GetTouch(index); + SDL_Touch *touch = SDL_GetTouch(id); if (!touch) { return NULL; } return touch->name; } -void -SDL_ChangeEnd(int id, int end) -{ - int index = SDL_GetTouchIndexId(id); - SDL_Touch *touch = SDL_GetTouch(index); - - if (touch) { - touch->current_end = end; - } -} - /* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/events/SDL_touch_c.h b/src/events/SDL_touch_c.h index 62a950ceb..fdc221d79 100644 --- a/src/events/SDL_touch_c.h +++ b/src/events/SDL_touch_c.h @@ -25,50 +25,51 @@ #define _SDL_touch_c_h typedef struct SDL_Touch SDL_Touch; +typedef struct SDL_Finger SDL_Finger; + +struct SDL_Finger { + int id; + int x; + int y; + int z; /* for future use */ + int xdelta; + int ydelta; + int last_x, last_y; /* the last reported x and y coordinates */ + int pressure; +}; struct SDL_Touch { - /* Warp the touch to (x,y) */ - void (*WarpTouch) (SDL_Touch * touch, SDL_Window * window, int x, - int y); - - /* Free the touch when it's time */ - void (*FreeTouch) (SDL_Touch * touch); - - /* data common for tablets */ - int pressure; - int pressure_max; - int pressure_min; - int tilt; /* for future use */ - int rotation; /* for future use */ - int total_ends; - int current_end; - - /* Data common to all touch */ - int id; - SDL_Window *focus; - int which; - int x; - int y; - int z; /* for future use */ - int xdelta; - int ydelta; - int last_x, last_y; /* the last reported x and y coordinates */ - char *name; - Uint8 buttonstate; - SDL_bool relative_mode; - SDL_bool proximity; - SDL_bool flush_motion; - - SDL_Cursor *cursors; - SDL_Cursor *def_cursor; - SDL_Cursor *cur_cursor; - SDL_bool cursor_shown; - - void *driverdata; + + /* Free the touch when it's time */ + void (*FreeTouch) (SDL_Touch * touch); + + /* data common for tablets */ + int pressure_max; + int pressure_min; + int tilt; /* for future use */ + int rotation; /* for future use */ + + int total_ends; + int current_end; + + /* Data common to all touch */ + int id; + SDL_Window *focus; + + char *name; + Uint8 buttonstate; + SDL_bool relative_mode; + SDL_bool flush_motion; + + int num_fingers; + SDL_Finger** fingers; + + void *driverdata; }; + /* Initialize the touch subsystem */ extern int SDL_TouchInit(void); @@ -84,24 +85,16 @@ extern int SDL_AddTouch(const SDL_Touch * touch, char *name, /* Remove a touch at an index, clearing the slot for later */ extern void SDL_DelTouch(int index); -/* Clear the button state of a touch at an index */ -extern void SDL_ResetTouch(int index); - /* Set the touch focus window */ extern void SDL_SetTouchFocus(int id, SDL_Window * window); /* Send a touch motion event for a touch */ -extern int SDL_SendTouchMotion(int id, int relative, int x, int y, int z); +extern int SDL_SendTouchMotion(int id, int fingerid, + int relative, int x, int y, int z); /* Send a touch button event for a touch */ extern int SDL_SendTouchButton(int id, Uint8 state, Uint8 button); -/* Send a touch wheel event for a touch */ -extern int SDL_SendTouchWheel(int id, int x, int y); - -/* Send a proximity event for a touch */ -extern int SDL_SendProximity(int id, int x, int y, int type); - /* Shutdown the touch subsystem */ extern void SDL_TouchQuit(void); diff --git a/touchTest/touchPong b/touchTest/touchPong index 29e892b462ebea82de922f31e41e8095bcd2283e..16303ab5275a16d28c5fde83735805b32427c8f4 100755 GIT binary patch delta 6577 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

UEZauGTx} z-a!=|`$XbGu0Akl=v_I3qA&JuX1M=VP>>fr+`nPs(20{rkL@`*5}8=oXG(ryw6gzq z6=&{xfGlUBuk*hOvJk0gGr-aU5!bk)`@kYI5c#WPSFvUI#W)_CGptwtp2LO?%^3tH zOCQ*$CEwHgzeoLP+MzW3p_^Jo&cl;+?R=f+-n@p|on4}r@|tLu?u^#RZ=&UOk9Nv$ o;vbCf4!vIVk^F|*&{5F^SeW;4^bLrkW1^=Z9xklV9?1^=KkJAI%K!iX delta 6236 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 IDD4;cAAOm;H2?qr diff --git a/touchTest/touchSimp b/touchTest/touchSimp index 57e1c92596505a47915abd237a5d58eeb272e174..a3fbc3d7c7ef6d760057ff959a07159ba0d19463 100755 GIT binary patch delta 9799 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 From edc9cefb719ace028059cb1d911795ca7a42899d Mon Sep 17 00:00:00 2001 From: Jim Grandpre Date: Fri, 28 May 2010 01:26:52 -0400 Subject: [PATCH 013/169] Added reading of event* for touch events. --- include/SDL_events.h | 2 + src/events/SDL_events.c | 1 + src/events/SDL_touch.c | 183 +++++++++++++++++++-------------- src/events/SDL_touch_c.h | 24 +++-- src/video/x11/SDL_eventtouch.h | 42 ++++++++ src/video/x11/SDL_x11events.c | 68 +++++++++++- src/video/x11/SDL_x11video.h | 1 + touchTest/makefile | 2 + touchTest/touchPong | Bin 29171 -> 29203 bytes touchTest/touchSimp | Bin 28976 -> 29012 bytes touchTest/touchSimp.c | 4 + touchTest/touchTest.c | 168 ++++++++++++++++++++++++++++++ 12 files changed, 407 insertions(+), 88 deletions(-) create mode 100644 src/video/x11/SDL_eventtouch.h create mode 100644 touchTest/touchTest.c diff --git a/include/SDL_events.h b/include/SDL_events.h index 87096d1d6..150f3305c 100644 --- a/include/SDL_events.h +++ b/include/SDL_events.h @@ -310,6 +310,8 @@ typedef struct SDL_TouchFingerEvent Uint8 state; /**< The current button state */ Uint8 fingerId; Uint8 padding1; + int x; + int y; } SDL_TouchFingerEvent; diff --git a/src/events/SDL_events.c b/src/events/SDL_events.c index e99a55d93..ae82171b9 100644 --- a/src/events/SDL_events.c +++ b/src/events/SDL_events.c @@ -254,6 +254,7 @@ SDL_StartEventLoop(Uint32 flags) retcode = 0; retcode += SDL_KeyboardInit(); retcode += SDL_MouseInit(); + retcode += SDL_TouchInit(); retcode += SDL_QuitInit(); if (retcode < 0) { /* We don't expect them to fail, but... */ diff --git a/src/events/SDL_touch.c b/src/events/SDL_touch.c index 88505daec..cce06c586 100644 --- a/src/events/SDL_touch.c +++ b/src/events/SDL_touch.c @@ -36,8 +36,15 @@ static SDL_Touch **SDL_touchPads = NULL; int SDL_TouchInit(void) { + SDL_Touch touch; + touch.pressure_max = 0; + touch.pressure_min = 0; + touch.id = 0; //Should be function? + + SDL_AddTouch(&touch, "Touch1"); return (0); } + SDL_Touch * SDL_GetTouch(int id) { @@ -48,13 +55,13 @@ SDL_GetTouch(int id) return SDL_touchPads[index]; } -SDL_Finger * -SDL_GetFinger(SDL_Touch* touch,int id) +SDL_Touch * +SDL_GetTouchIndex(int index) { - int index = SDL_GetFingerIndexId(touch,id); - if(index < 0 || index >= touch->num_fingers) - return NULL; - return touch->fingers[index]; + if (index < 0 || index >= SDL_num_touch) { + return NULL; + } + return SDL_touchPads[index]; } int @@ -67,6 +74,17 @@ SDL_GetFingerIndexId(SDL_Touch* touch,int fingerid) return -1; } + +SDL_Finger * +SDL_GetFinger(SDL_Touch* touch,int id) +{ + int index = SDL_GetFingerIndexId(touch,id); + if(index < 0 || index >= touch->num_fingers) + return NULL; + return touch->fingers[index]; +} + + int SDL_GetTouchIndexId(int id) { @@ -83,8 +101,7 @@ SDL_GetTouchIndexId(int id) } int -SDL_AddTouch(const SDL_Touch * touch, char *name, int pressure_max, - int pressure_min, int ends) +SDL_AddTouch(const SDL_Touch * touch, char *name) { SDL_Touch **touchPads; int selected_touch; @@ -118,11 +135,13 @@ SDL_AddTouch(const SDL_Touch * touch, char *name, int pressure_max, length = SDL_strlen(name); SDL_touchPads[index]->focus = 0; SDL_touchPads[index]->name = SDL_malloc((length + 2) * sizeof(char)); - SDL_strlcpy(SDL_touchPads[index]->name, name, length + 1); - SDL_touchPads[index]->pressure_max = pressure_max; - SDL_touchPads[index]->pressure_min = pressure_min; - + SDL_strlcpy(SDL_touchPads[index]->name, name, length + 1); + SDL_touchPads[index]->num_fingers = 0; + SDL_touchPads[index]->buttonstate = 0; + SDL_touchPads[index]->relative_mode = SDL_FALSE; + SDL_touchPads[index]->flush_motion = SDL_FALSE; + return index; } @@ -239,7 +258,7 @@ SDL_AddFinger(SDL_Touch* touch,SDL_Finger* finger) if (SDL_GetFingerIndexId(touch,finger->id) != -1) { SDL_SetError("Finger ID already in use"); - } + } /* Add the touch to the list of touch */ fingers = (SDL_Finger **) SDL_realloc(touch->fingers, @@ -250,7 +269,7 @@ SDL_AddFinger(SDL_Touch* touch,SDL_Finger* finger) } touch->fingers = fingers; - index = SDL_num_touch++; + index = touch->num_fingers++; touch->fingers[index] = (SDL_Finger *) SDL_malloc(sizeof(*(touch->fingers[index]))); if (!touch->fingers[index]) { @@ -265,7 +284,7 @@ SDL_AddFinger(SDL_Touch* touch,SDL_Finger* finger) int SDL_DelFinger(SDL_Touch* touch,int fingerid) { - int index = SLD_GetFingerIndexId(touch,fingerid); + int index = SDL_GetFingerIndexId(touch,fingerid); SDL_Finger* finger = SDL_GetFinger(touch,fingerid); if (!finger) { @@ -282,6 +301,7 @@ SDL_DelFinger(SDL_Touch* touch,int fingerid) int SDL_SendFingerDown(int id, int fingerid, SDL_bool down, int x, int y, int pressure) { + int posted; SDL_Touch* touch = SDL_GetTouch(id); if(down) { SDL_Finger nf; @@ -300,9 +320,11 @@ SDL_SendFingerDown(int id, int fingerid, SDL_bool down, int x, int y, int pressu SDL_Event event; event.tfinger.type = SDL_FINGERDOWN; event.tfinger.touchId = (Uint8) id; + event.tfinger.x = x; + event.tfinger.y = y; event.tfinger.state = touch->buttonstate; event.tfinger.windowID = touch->focus ? touch->focus->id : 0; - event.fingerId = id; + event.tfinger.fingerId = id; posted = (SDL_PushEvent(&event) > 0); } return posted; @@ -316,7 +338,7 @@ SDL_SendFingerDown(int id, int fingerid, SDL_bool down, int x, int y, int pressu event.tfinger.touchId = (Uint8) id; event.tfinger.state = touch->buttonstate; event.tfinger.windowID = touch->focus ? touch->focus->id : 0; - event.fingerId = id; + event.tfinger.fingerId = id; posted = (SDL_PushEvent(&event) > 0); } return posted; @@ -339,69 +361,76 @@ SDL_SendTouchMotion(int id, int fingerid, int relative, return 0; } - /* the relative motion is calculated regarding the system cursor last position */ - if (relative) { - xrel = x; - yrel = y; - x = (finger->last_x + x); - y = (finger->last_y + y); - } else { - xrel = x - finger->last_x; - yrel = y - finger->last_y; - } - - /* Drop events that don't change state */ - if (!xrel && !yrel) { + if(finger == NULL) + SDL_SendFingerDown(id,fingerid,SDL_TRUE,x,y,pressure); + else { + /* the relative motion is calculated regarding the last position */ + if (relative) { + xrel = x; + yrel = y; + x = (finger->last_x + x); + y = (finger->last_y + y); + } else { + if(x < 0) x = finger->last_x; /*If movement is only in one axis,*/ + if(y < 0) y = finger->last_y; /*The other is marked as -1*/ + xrel = x - finger->last_x; + yrel = y - finger->last_y; + } + + /* Drop events that don't change state */ + if (!xrel && !yrel) { #if 0 - printf("Touch event didn't change state - dropped!\n"); + printf("Touch event didn't change state - dropped!\n"); #endif - return 0; - } - - /* Update internal touch coordinates */ - - finger->x = x; - finger->y = y; - - /*Should scale to window? Normalize? Maintain Aspect?*/ - //SDL_GetWindowSize(touch->focus, &x_max, &y_max); - - /* make sure that the pointers find themselves inside the windows */ - /* only check if touch->xmax is set ! */ - /* - if (x_max && touch->x > x_max) { - touch->x = x_max; - } else if (touch->x < 0) { - touch->x = 0; - } - - if (y_max && touch->y > y_max) { - touch->y = y_max; - } else if (touch->y < 0) { - touch->y = 0; - } - */ - finger->xdelta += xrel; - finger->ydelta += yrel; - finger->pressure = pressure; - - - - /* Post the event, if desired */ - posted = 0; - if (SDL_GetEventState(SDL_FINGERMOTION) == SDL_ENABLE) { - SDL_Event event; - event.tfinger.type = SDL_FINGERMOTION; - event.tfinger.which = (Uint8) index; - event.tfinger.state = touch->buttonstate; - event.tfinger.windowID = touch->focus ? touch->focus->id : 0; - posted = (SDL_PushEvent(&event) > 0); + return 0; + } + + /* Update internal touch coordinates */ + + finger->x = x; + finger->y = y; + + /*Should scale to window? Normalize? Maintain Aspect?*/ + //SDL_GetWindowSize(touch->focus, &x_max, &y_max); + + /* make sure that the pointers find themselves inside the windows */ + /* only check if touch->xmax is set ! */ + /* + if (x_max && touch->x > x_max) { + touch->x = x_max; + } else if (touch->x < 0) { + touch->x = 0; + } + + if (y_max && touch->y > y_max) { + touch->y = y_max; + } else if (touch->y < 0) { + touch->y = 0; + } + */ + finger->xdelta += xrel; + finger->ydelta += yrel; + finger->pressure = pressure; + + + + /* Post the event, if desired */ + posted = 0; + if (SDL_GetEventState(SDL_FINGERMOTION) == SDL_ENABLE) { + SDL_Event event; + event.tfinger.type = SDL_FINGERMOTION; + event.tfinger.touchId = (Uint8) index; + event.tfinger.x = x; + event.tfinger.y = y; + event.tfinger.state = touch->buttonstate; + event.tfinger.windowID = touch->focus ? touch->focus->id : 0; + posted = (SDL_PushEvent(&event) > 0); + } + finger->last_x = finger->x; + finger->last_y = finger->y; + return posted; } - finger->last_x = finger->x; - finger->last_y = finger->y; - return posted; } - int SDL_SendTouchButton(int id, Uint8 state, Uint8 button) { @@ -441,7 +470,7 @@ SDL_SendTouchButton(int id, Uint8 state, Uint8 button) if (SDL_GetEventState(type) == SDL_ENABLE) { SDL_Event event; event.type = type; - event.tbutton.which = (Uint8) index; + event.tbutton.touchId = (Uint8) index; event.tbutton.state = state; event.tbutton.button = button; event.tbutton.windowID = touch->focus ? touch->focus->id : 0; diff --git a/src/events/SDL_touch_c.h b/src/events/SDL_touch_c.h index fdc221d79..6a0ebf62d 100644 --- a/src/events/SDL_touch_c.h +++ b/src/events/SDL_touch_c.h @@ -51,9 +51,6 @@ struct SDL_Touch int tilt; /* for future use */ int rotation; /* for future use */ - int total_ends; - int current_end; - /* Data common to all touch */ int id; SDL_Window *focus; @@ -73,14 +70,23 @@ struct SDL_Touch /* Initialize the touch subsystem */ extern int SDL_TouchInit(void); -/* Get the touch at an index */ -extern SDL_Touch *SDL_GetTouch(int index); +/*Get the touch at an index */ +extern SDL_Touch *SDL_GetTouchIndex(int index); + +/* Get the touch with id = id */ +extern SDL_Touch *SDL_GetTouch(int id); + +/*Get the finger at an index */ +extern SDL_Finger *SDL_GetFingerIndex(SDL_Touch *touch, int index); + +/* Get the finger with id = id */ +extern SDL_Finger *SDL_GetFinger(SDL_Touch *touch,int id); + /* Add a touch, possibly reattaching at a particular index (or -1), - returning the index of the touch, or -1 if there was an error. - */ -extern int SDL_AddTouch(const SDL_Touch * touch, char *name, - int pressure_max, int pressure_min, int ends); + returning the index of the touch, or -1 if there was an error. */ +extern int SDL_AddTouch(const SDL_Touch * touch, char *name); + /* Remove a touch at an index, clearing the slot for later */ extern void SDL_DelTouch(int index); diff --git a/src/video/x11/SDL_eventtouch.h b/src/video/x11/SDL_eventtouch.h new file mode 100644 index 000000000..44227318c --- /dev/null +++ b/src/video/x11/SDL_eventtouch.h @@ -0,0 +1,42 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2010 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ +#include "SDL_config.h" + +#ifndef _SDL_eventtouch_h +#define _SDL_eventtouch_h + + +//What should this be? +#if SDL_VIDEO_DRIVER_X11_XINPUT +typedef struct EventTouchData +{ + int x,y,pressure,finger; //Temporary Variables until sync + int eventStream; +} EventTouchData; +#endif + +//extern void X11_InitMouse(_THIS); +//extern void X11_QuitMouse(_THIS); + +#endif /* _SDL_eventtouch_h */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/x11/SDL_x11events.c b/src/video/x11/SDL_x11events.c index c65c67d83..c095a4d64 100644 --- a/src/video/x11/SDL_x11events.c +++ b/src/video/x11/SDL_x11events.c @@ -28,9 +28,16 @@ #include "SDL_x11video.h" #include "../../events/SDL_events_c.h" #include "../../events/SDL_mouse_c.h" +#include "../../events/SDL_touch_c.h" #include "SDL_syswm.h" +#include + +//Touch Input/event* includes +#include +#include + static void X11_DispatchEvent(_THIS) { @@ -410,8 +417,65 @@ X11_PumpEvents(_THIS) } - /* Process Touch events - TODO When X gets touch support, REMOVE THIS*/ - + /* Process Touch events - TODO When X gets touch support, use that instead*/ + int i = 0,rd; + char * name[256]; + struct input_event ev[64]; + int size = sizeof (struct input_event); + static int initd = 0; //TODO - HACK! + for(i = 0;i < SDL_GetNumTouch();++i) { + SDL_Touch* touch = SDL_GetTouchIndex(i); + if(!touch) printf("Touch %i/%i DNE\n",i,SDL_GetNumTouch()); + EventTouchData* data; + if(!initd){//data->eventStream <= 0) { + touch->driverdata = SDL_malloc(sizeof(EventTouchData)); + data = (EventTouchData*)(touch->driverdata); + printf("Openning device...\n"); + data->eventStream = open("/dev/input/wacom-touch", + O_RDONLY | O_NONBLOCK); + ioctl (data->eventStream, EVIOCGNAME (sizeof (name)), name); + printf ("Reading From : %s\n", name); + initd = 1; + } + else + data = (EventTouchData*)(touch->driverdata); + if(data->eventStream <= 0) + printf("Error: Couldn't open stream\n"); + rd = read(data->eventStream, ev, size * 64); + //printf("Got %i/%i bytes\n",rd,size); + if(rd >= size) { + for (i = 0; i < rd / sizeof(struct input_event); i++) { + switch (ev[i].type) { + case EV_ABS: + //printf("Got position x: %i!\n",data->x); + if(ev[i].code == ABS_X) + data->x = ev[i].value; + else if (ev[i].code == ABS_Y) + data->y = ev[i].value; + break; + case EV_MSC: + if(ev[i].code == MSC_SERIAL) + data->finger = ev[i].value; + break; + case EV_SYN: + data->finger -= 1; /*Wacom indexes fingers from 1, + I index from 0*/ + if(data->x >= 0 || data->y >= 0) + SDL_SendTouchMotion(touch->id,data->finger, + SDL_FALSE,data->x,data->y, + data->pressure); + + //printf("Synched: %i tx: %i, ty: %i\n", + // data->finger,data->x,data->y); + data->x = -1; + data->y = -1; + data->pressure = -1; + + break; + } + } + } + } } /* This is so wrong it hurts */ diff --git a/src/video/x11/SDL_x11video.h b/src/video/x11/SDL_x11video.h index 1ba0ba392..bf82547f8 100644 --- a/src/video/x11/SDL_x11video.h +++ b/src/video/x11/SDL_x11video.h @@ -53,6 +53,7 @@ #include "SDL_x11keyboard.h" #include "SDL_x11modes.h" #include "SDL_x11mouse.h" +#include "SDL_eventtouch.h" #include "SDL_x11opengl.h" #include "SDL_x11window.h" diff --git a/touchTest/makefile b/touchTest/makefile index 820205541..a244a2982 100644 --- a/touchTest/makefile +++ b/touchTest/makefile @@ -1,3 +1,5 @@ SDLTest : touchSimp.c touchPong.c + gcc touchTest.c -o touchTest `sdl-config --cflags --libs` -g gcc touchSimp.c -o touchSimp `sdl-config --cflags --libs` -g gcc touchPong.c -o touchPong `sdl-config --cflags --libs` -g + diff --git a/touchTest/touchPong b/touchTest/touchPong index 16303ab5275a16d28c5fde83735805b32427c8f4..d2f1862cc97da9ed0cf7c9e26d5fd98846589489 100755 GIT binary patch delta 3652 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 TM`JC1zf&FfZSL7Ux5E8@k9M1{ delta 3645 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 diff --git a/touchTest/touchSimp.c b/touchTest/touchSimp.c index cc3ff292b..fb02a7b8d 100644 --- a/touchTest/touchSimp.c +++ b/touchTest/touchSimp.c @@ -186,6 +186,10 @@ int main(int argc, char* argv[]) case SDL_MOUSEBUTTONUP: bstatus &= ~(1<<(event.button.button-1)); break; + case SDL_FINGERMOTION: + printf("Holy SH!T\n"); + break; + } } diff --git a/touchTest/touchTest.c b/touchTest/touchTest.c new file mode 100644 index 000000000..2c6d926a6 --- /dev/null +++ b/touchTest/touchTest.c @@ -0,0 +1,168 @@ +#include +#include +#include +#include "../src/events/SDL_touch_c.h" //BAD!!! + +#define PI 3.1415926535897 +#define WIDTH 640 +#define HEIGHT 480 +#define BPP 4 +#define DEPTH 32 + +int mousx,mousy; +int keystat[512]; +int bstatus; + + + + +typedef struct { + int x,y; +} Point; + +void handler (int sig) +{ + printf ("\nexiting...(%d)\n", sig); + exit (0); +} + +void perror_exit (char *error) +{ + perror (error); + handler (9); +} + + +void setpix(SDL_Surface *screen, int x, int y, int col) +{ + Uint32 *pixmem32; + Uint32 colour; + + if((unsigned)x > screen->w) return; + if((unsigned)y > screen->h) return; + + colour = SDL_MapRGB( screen->format, (col>>16)&0xFF, (col>>8)&0xFF, col&0xFF); + + pixmem32 = (Uint32*) screen->pixels + y*screen->pitch/BPP + x; + *pixmem32 = colour; +} + +void drawCircle(SDL_Surface* screen,int x,int y,int r,int c) +{ + + float a; + for(a=0;a<2*PI;a+=1.f/(float)r) + { + setpix(screen,(int)(x+r*cos(a)),(int)(y+r*sin(a)),c); + } +} + +void DrawScreen(SDL_Surface* screen, int h) +{ + int x, y, xm,ym,c; + if(SDL_MUSTLOCK(screen)) + { + if(SDL_LockSurface(screen) < 0) return; + } + for(y = 0; y < screen->h; y++ ) + { + for( x = 0; x < screen->w; x++ ) + { + //setpixel(screen, x, y, (x*x)/256+3*y+h, (y*y)/256+x+h, h); + //xm = (x+h)%screen->w; + //ym = (y+h)%screen->w; + //c = sin(h/256*2*PI)*x*y/screen->w/screen->h; + //setpix(screen,x,y,255*sin(xm/screen->w*2*PI),sin(h/255*2*PI)*255*y/screen->h,c); + setpix(screen,x,y,((x%255)<<16) + ((y%255)<<8) + (x+y)%255); + } + } + drawCircle(screen,mousx,mousy,30,0xFFFFFF); + + + if(SDL_MUSTLOCK(screen)) SDL_UnlockSurface(screen); + + SDL_Flip(screen); +} + +SDL_Surface* initScreen(int width,int height) +{ + return SDL_SetVideoMode(width, height, DEPTH, + SDL_HWSURFACE | SDL_RESIZABLE); +} + +int main(int argc, char* argv[]) +{ + SDL_Surface *screen; + SDL_Event event; + + int keypress = 0; + int h=0,s=1,i,j; + + memset(keystat,0,512*sizeof(keystat[0])); + if (SDL_Init(SDL_INIT_VIDEO) < 0 ) return 1; + + if (!(screen = initScreen(WIDTH,HEIGHT))) + { + SDL_Quit(); + return 1; + } + + while(!keystat[27]) { + //Poll SDL + while(SDL_PollEvent(&event)) + { + switch (event.type) + { + case SDL_QUIT: + keystat[27] = 1; + break; + case SDL_KEYDOWN: + //printf("%i\n",event.key.keysym.sym); + keystat[event.key.keysym.sym] = 1; + //keypress = 1; + break; + case SDL_KEYUP: + //printf("%i\n",event.key.keysym.sym); + keystat[event.key.keysym.sym] = 0; + //keypress = 1; + break; + case SDL_VIDEORESIZE: + if (!(screen = initScreen(event.resize.w, + event.resize.h))) + { + SDL_Quit(); + return 1; + } + break; + case SDL_MOUSEMOTION: + mousx = event.motion.x; + mousy = event.motion.y; + break; + case SDL_MOUSEBUTTONDOWN: + bstatus |= (1<<(event.button.button-1)); + break; + case SDL_MOUSEBUTTONUP: + bstatus &= ~(1<<(event.button.button-1)); + break; + case SDL_FINGERMOTION: + i = 1; + + + printf("Finger: %i,x: %i, y: %i\n",event.tfinger.fingerId, + event.tfinger.x,event.tfinger.y); + + break; + } + } + //And draw + DrawScreen(screen,h); + /* + for(i=0;i<512;i++) + if(keystat[i]) printf("%i\n",i); + printf("Buttons:%i\n",bstatus); + */ + } + SDL_Quit(); + + return 0; +} From f3d4dc95b25131f62946ebcfacaff543d9dec338 Mon Sep 17 00:00:00 2001 From: Sunny Sachanandani Date: Fri, 28 May 2010 20:40:09 +0530 Subject: [PATCH 014/169] Completed work on X11_CreateTexture. Added lots of safety features. These include support for drawing a texture using the core protocol while other textures are drawn using Xrender if Xrender does not support the color format of the said texture or any other fault with Xrender. --- src/video/x11/SDL_x11render.c | 87 +++++++++++++++++++++++++++++------ 1 file changed, 72 insertions(+), 15 deletions(-) diff --git a/src/video/x11/SDL_x11render.c b/src/video/x11/SDL_x11render.c index 30421b61f..4a8d3dca7 100644 --- a/src/video/x11/SDL_x11render.c +++ b/src/video/x11/SDL_x11render.c @@ -122,6 +122,7 @@ typedef struct XRenderPictFormat* picture_fmt; XRenderPictureAttributes picture_attr; unsigned int picture_attr_valuemask; + SDL_bool xrender_available; #endif XImage *image; #ifndef NO_SHARED_MEMORY @@ -218,10 +219,16 @@ X11_CreateRenderer(SDL_Window * window, Uint32 flags) if(XRenderQueryExtension(data->display, &event_basep, &error_basep) == True) { data->xrender_available = SDL_TRUE; data->xwindow_pict_fmt = XRenderFindVisualFormat(data->display, data->visual); + if(!xwindow_pict_fmt) { + data->xrender_available = SDL_FALSE; + } data->xwindow_pict_attr.graphics_exposures = False; data->xwindow_pict_attr_valuemask = CPGraphicsExposure; data->xwindow_pict = XRenderCreatePicture(data->display, data->xwindow, data->xwindow_pict_fmt, data->xwindow_pict_attr_valuemask, &data->xwindow_pict_attr); + if(!data->xwindow_pict) { + data->xrender_available = SDL_FALSE; + } } else { data->xrender_available = SDL_FALSE; @@ -275,9 +282,16 @@ X11_CreateRenderer(SDL_Window * window, Uint32 flags) SDL_SetError("XCreatePixmap() failed"); return NULL; } - data->pixmap_picts[i] = - XCreatePicture(data->display, data->pixmap[i], data->xwindow_pict_fmt, - data->xwindow_pict_attr_valuemask, &xwindow_pict_attr); +#ifdef SDL_VIDEO_DRIVER_X11_XRENDER + if(data->xrender_available == SDL_TRUE) { + data->pixmap_picts[i] = + XCreatePicture(data->display, data->pixmap[i], data->xwindow_pict_fmt, + data->xwindow_pict_attr_valuemask, &xwindow_pict_attr); + if(!data->pixmap_picts[i]) { + data->xrender_available = SDL_FALSE; + } + } +#endif } if (n > 0) { data->drawable = data->pixmaps[0]; @@ -353,9 +367,14 @@ X11_DisplayModeChanged(SDL_Renderer * renderer) return -1; } #ifdef SDL_VIDEO_DRIVER_X11_XRENDER - data->pictures[i] = - XCreatePicture(data->display, data->pixmap[i], data->xwindow_pict_fmt, - data->xwindow_pict_attr_valuemask, &data->xwindow_pict_attr); + if(data->xrender_available == SDL_TRUE) { + data->pictures[i] = + XCreatePicture(data->display, data->pixmap[i], data->xwindow_pict_fmt, + data->xwindow_pict_attr_valuemask, &data->xwindow_pict_attr); + if(!data->pictures[i]) { + data->xrender_available = SDL_FALSE; + } + } #endif } if (n > 0) { @@ -378,6 +397,7 @@ X11_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture) X11_TextureData *data; int pitch_alignmask = ((renderdata->scanline_pad / 8) - 1); + data = (X11_TextureData *) SDL_calloc(1, sizeof(*data)); if (!data) { SDL_OutOfMemory(); @@ -393,10 +413,10 @@ X11_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture) } data->format = display->current_mode.format; } else { - /* The image/pixmap depth must be the same as the window or you - get a BadMatch error when trying to putimage or copyarea. - This BadMatch error - */ + /* If Xrender support is builtin we only need to check whether + Xrender is available at runtime. If it is available there + can be no BadMatch error since Xrender takes care of that. + */ #ifdef SDL_VIDEO_DRIVER_X11_XRENDER if(renderdata->xrender_available == SDL_False) { if (texture->format != display->current_mode.format) { @@ -405,6 +425,10 @@ X11_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture) } } #else + /* The image/pixmap depth must be the same as the window or you + get a BadMatch error when trying to putimage or copyarea. + This BadMatch error + */ if (texture->format != display->current_mode.format) { SDL_SetError("Texture format doesn't match window format"); return -1; @@ -491,11 +515,44 @@ X11_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture) } #ifdef SDL_VIDEO_DRIVER_X11_XRENDER - data->picture_fmt = - XRenderFindVisualFormat(renderdata->display, - data->picture = - XCreatePicture(renderdata->display, data->pixmap, - + if(renderdata->xrender_available) { + data->xrender_available = SDL_TRUE; + unsigned long x11_fmt_mask; // Format mask + XRenderPictFormat x11_templ_fmt; // Format template + x11_fmt_mask = + (PictFormatDepth | PictFormatRedMask | PictFormatGreenMask + | PictFormatBlueMask); + x11_templ_fmt.depth = (data->format).BitsPerPixel; + x11_temp_fmt.direct.redMask = (data->format).Rmask; + x11_temp_fmt.direct.greenMask = (data->format).Gmask; + x11_temp_fmt.direct.blueMask = (data->format).Bmask; + x11_temp_fmt.direct.alphaMask = (data->format).Amask; + /* Return one matching XRenderPictFormat */ + data->pict_fmt = + XRenderFindFormat(renderdata->display, x11_fmt_mask, &x11_templ_fmt, 1); + if(!data->pict_fmt) { + data->xrender_available = SDL_FALSE; + } + data->picture_attr_valuemask = CPGraphicsExposure; + (data->picture_attr).graphics_exposures = False; + data->picture = + XCreatePicture(renderdata->display, data->pixmap, data->picture_fmt, + data->picture_attr_valuemask, &(data->picture_attr)); + if(!data->picture) { + data->xrender_available = SDL_FALSE; + } + } + /* We thought we could render the texture with Xrender but this was + not possible for some reason. Now we must ensure that texture + format and window format match to avoid a BadMatch error. + */ + if(data->xrender_available == SDL_FALSE) { + if (texture->format != display->current_mode.format) { + SDL_SetError("Texture format doesn't match window format"); + return -1; + } + } +#endif data->image = XCreateImage(renderdata->display, renderdata->visual, renderdata->depth, ZPixmap, 0, NULL, texture->w, From d4d53a4609c3f9fb72f45334618a6e3555779280 Mon Sep 17 00:00:00 2001 From: Sunny Sachanandani Date: Fri, 28 May 2010 20:47:24 +0530 Subject: [PATCH 015/169] Fix initial value of the xrender_available boolean in X11_CreateTexture. --- src/video/x11/SDL_x11render.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/video/x11/SDL_x11render.c b/src/video/x11/SDL_x11render.c index 4a8d3dca7..db2e42c07 100644 --- a/src/video/x11/SDL_x11render.c +++ b/src/video/x11/SDL_x11render.c @@ -397,7 +397,6 @@ X11_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture) X11_TextureData *data; int pitch_alignmask = ((renderdata->scanline_pad / 8) - 1); - data = (X11_TextureData *) SDL_calloc(1, sizeof(*data)); if (!data) { SDL_OutOfMemory(); @@ -418,6 +417,8 @@ X11_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture) can be no BadMatch error since Xrender takes care of that. */ #ifdef SDL_VIDEO_DRIVER_X11_XRENDER + // Assume the texture is supported by Xrender + data->xrender_available = TRUE if(renderdata->xrender_available == SDL_False) { if (texture->format != display->current_mode.format) { SDL_SetError("Texture format doesn't match window format"); From c8d828b8da2e7c5a106ddba5289f208573912587 Mon Sep 17 00:00:00 2001 From: Sunny Sachanandani Date: Fri, 28 May 2010 20:48:58 +0530 Subject: [PATCH 016/169] Fix typo. --- src/video/x11/SDL_x11render.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/video/x11/SDL_x11render.c b/src/video/x11/SDL_x11render.c index db2e42c07..939330687 100644 --- a/src/video/x11/SDL_x11render.c +++ b/src/video/x11/SDL_x11render.c @@ -418,7 +418,7 @@ X11_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture) */ #ifdef SDL_VIDEO_DRIVER_X11_XRENDER // Assume the texture is supported by Xrender - data->xrender_available = TRUE + data->xrender_available = SDL_TRUE; if(renderdata->xrender_available == SDL_False) { if (texture->format != display->current_mode.format) { SDL_SetError("Texture format doesn't match window format"); From 632271c373c28e1f7e3e39809abc793fce6d759c Mon Sep 17 00:00:00 2001 From: Jim Grandpre Date: Sat, 29 May 2010 01:47:19 -0400 Subject: [PATCH 017/169] Bug fixes. Basic touch events (finger up, finger down, finger move) supported. --- src/events/SDL_touch.c | 14 ++++++++------ src/video/x11/SDL_eventtouch.h | 1 + src/video/x11/SDL_x11events.c | 17 ++++++++++++----- touchTest/touchTest.c | 32 ++++++++++++++++++++++++++------ 4 files changed, 47 insertions(+), 17 deletions(-) diff --git a/src/events/SDL_touch.c b/src/events/SDL_touch.c index cce06c586..abab0b435 100644 --- a/src/events/SDL_touch.c +++ b/src/events/SDL_touch.c @@ -301,11 +301,12 @@ SDL_DelFinger(SDL_Touch* touch,int fingerid) int SDL_SendFingerDown(int id, int fingerid, SDL_bool down, int x, int y, int pressure) { - int posted; + int posted; SDL_Touch* touch = SDL_GetTouch(id); + if(down) { SDL_Finger nf; - nf.id = id; + nf.id = fingerid; nf.x = x; nf.y = y; nf.pressure = pressure; @@ -324,13 +325,13 @@ SDL_SendFingerDown(int id, int fingerid, SDL_bool down, int x, int y, int pressu event.tfinger.y = y; event.tfinger.state = touch->buttonstate; event.tfinger.windowID = touch->focus ? touch->focus->id : 0; - event.tfinger.fingerId = id; + event.tfinger.fingerId = fingerid; posted = (SDL_PushEvent(&event) > 0); } return posted; } else { - SDL_DelFinger(touch,id); + SDL_DelFinger(touch,fingerid); posted = 0; if (SDL_GetEventState(SDL_FINGERUP) == SDL_ENABLE) { SDL_Event event; @@ -338,7 +339,7 @@ SDL_SendFingerDown(int id, int fingerid, SDL_bool down, int x, int y, int pressu event.tfinger.touchId = (Uint8) id; event.tfinger.state = touch->buttonstate; event.tfinger.windowID = touch->focus ? touch->focus->id : 0; - event.tfinger.fingerId = id; + event.tfinger.fingerId = fingerid; posted = (SDL_PushEvent(&event) > 0); } return posted; @@ -419,7 +420,8 @@ SDL_SendTouchMotion(int id, int fingerid, int relative, if (SDL_GetEventState(SDL_FINGERMOTION) == SDL_ENABLE) { SDL_Event event; event.tfinger.type = SDL_FINGERMOTION; - event.tfinger.touchId = (Uint8) index; + event.tfinger.touchId = (Uint8) id; + event.tfinger.fingerId = (Uint8) fingerid; event.tfinger.x = x; event.tfinger.y = y; event.tfinger.state = touch->buttonstate; diff --git a/src/video/x11/SDL_eventtouch.h b/src/video/x11/SDL_eventtouch.h index 44227318c..debdb59ae 100644 --- a/src/video/x11/SDL_eventtouch.h +++ b/src/video/x11/SDL_eventtouch.h @@ -31,6 +31,7 @@ typedef struct EventTouchData { int x,y,pressure,finger; //Temporary Variables until sync int eventStream; + SDL_bool up; } EventTouchData; #endif diff --git a/src/video/x11/SDL_x11events.c b/src/video/x11/SDL_x11events.c index c095a4d64..01a944b40 100644 --- a/src/video/x11/SDL_x11events.c +++ b/src/video/x11/SDL_x11events.c @@ -419,7 +419,7 @@ X11_PumpEvents(_THIS) /* Process Touch events - TODO When X gets touch support, use that instead*/ int i = 0,rd; - char * name[256]; + char name[256]; struct input_event ev[64]; int size = sizeof (struct input_event); static int initd = 0; //TODO - HACK! @@ -431,7 +431,7 @@ X11_PumpEvents(_THIS) touch->driverdata = SDL_malloc(sizeof(EventTouchData)); data = (EventTouchData*)(touch->driverdata); printf("Openning device...\n"); - data->eventStream = open("/dev/input/wacom-touch", + data->eventStream = open("/dev/input/wacom", O_RDONLY | O_NONBLOCK); ioctl (data->eventStream, EVIOCGNAME (sizeof (name)), name); printf ("Reading From : %s\n", name); @@ -452,24 +452,31 @@ X11_PumpEvents(_THIS) data->x = ev[i].value; else if (ev[i].code == ABS_Y) data->y = ev[i].value; + else if (ev[i].code == ABS_MISC) { + data->up = SDL_TRUE; + data->finger = ev[i].value; + } break; case EV_MSC: if(ev[i].code == MSC_SERIAL) data->finger = ev[i].value; break; case EV_SYN: - data->finger -= 1; /*Wacom indexes fingers from 1, - I index from 0*/ if(data->x >= 0 || data->y >= 0) SDL_SendTouchMotion(touch->id,data->finger, SDL_FALSE,data->x,data->y, data->pressure); - + if(data->up) + SDL_SendFingerDown(touch->id,data->finger, + SDL_FALSE,data->x,data->y, + data->pressure); //printf("Synched: %i tx: %i, ty: %i\n", // data->finger,data->x,data->y); data->x = -1; data->y = -1; data->pressure = -1; + data->finger = 0; + data->up = SDL_FALSE; break; } diff --git a/touchTest/touchTest.c b/touchTest/touchTest.c index 2c6d926a6..d041d22e1 100644 --- a/touchTest/touchTest.c +++ b/touchTest/touchTest.c @@ -9,6 +9,8 @@ #define BPP 4 #define DEPTH 32 +#define MAXFINGERS 3 + int mousx,mousy; int keystat[512]; int bstatus; @@ -20,6 +22,9 @@ typedef struct { int x,y; } Point; + +Point finger[MAXFINGERS]; + void handler (int sig) { printf ("\nexiting...(%d)\n", sig); @@ -78,6 +83,10 @@ void DrawScreen(SDL_Surface* screen, int h) } drawCircle(screen,mousx,mousy,30,0xFFFFFF); + int i; + for(i=0;i= 0 && finger[i].y >= 0) + drawCircle(screen,finger[i].x,finger[i].y,20,0xFF6600); if(SDL_MUSTLOCK(screen)) SDL_UnlockSurface(screen); @@ -144,14 +153,25 @@ int main(int argc, char* argv[]) case SDL_MOUSEBUTTONUP: bstatus &= ~(1<<(event.button.button-1)); break; - case SDL_FINGERMOTION: - i = 1; + case SDL_FINGERMOTION: - - printf("Finger: %i,x: %i, y: %i\n",event.tfinger.fingerId, - event.tfinger.x,event.tfinger.y); - + //printf("Finger: %i,x: %i, y: %i\n",event.tfinger.fingerId, + // event.tfinger.x,event.tfinger.y); + finger[event.tfinger.fingerId].x = event.tfinger.x; + finger[event.tfinger.fingerId].y = event.tfinger.y; break; + case SDL_FINGERDOWN: + printf("Figner: %i down - x: %i, y: %i\n",event.tfinger.fingerId, + event.tfinger.x,event.tfinger.y); + finger[event.tfinger.fingerId].x = event.tfinger.x; + finger[event.tfinger.fingerId].y = event.tfinger.y; + break; + case SDL_FINGERUP: + printf("Figner: %i up - x: %i, y: %i\n",event.tfinger.fingerId, + event.tfinger.x,event.tfinger.y); + finger[event.tfinger.fingerId].x = -1; + finger[event.tfinger.fingerId].y = -1; + break; } } //And draw From ec612e614dde272307b06cd286b994781b30fca4 Mon Sep 17 00:00:00 2001 From: Jim Grandpre Date: Sat, 29 May 2010 02:09:16 -0400 Subject: [PATCH 018/169] Added pressure support for touch events. --- include/SDL_events.h | 1 + src/events/SDL_touch.c | 1 + src/video/x11/SDL_x11events.c | 23 +++++++++++++++-------- touchTest/touchPong | Bin 29203 -> 29219 bytes touchTest/touchSimp | Bin 29012 -> 29024 bytes touchTest/touchTest.c | 31 +++++++++++++++++++++---------- 6 files changed, 38 insertions(+), 18 deletions(-) diff --git a/include/SDL_events.h b/include/SDL_events.h index 150f3305c..0e19359b0 100644 --- a/include/SDL_events.h +++ b/include/SDL_events.h @@ -312,6 +312,7 @@ typedef struct SDL_TouchFingerEvent Uint8 padding1; int x; int y; + int pressure; } SDL_TouchFingerEvent; diff --git a/src/events/SDL_touch.c b/src/events/SDL_touch.c index abab0b435..af78ac1ea 100644 --- a/src/events/SDL_touch.c +++ b/src/events/SDL_touch.c @@ -424,6 +424,7 @@ SDL_SendTouchMotion(int id, int fingerid, int relative, event.tfinger.fingerId = (Uint8) fingerid; event.tfinger.x = x; event.tfinger.y = y; + event.tfinger.pressure = pressure; event.tfinger.state = touch->buttonstate; event.tfinger.windowID = touch->focus ? touch->focus->id : 0; posted = (SDL_PushEvent(&event) > 0); diff --git a/src/video/x11/SDL_x11events.c b/src/video/x11/SDL_x11events.c index 01a944b40..4e5934a98 100644 --- a/src/video/x11/SDL_x11events.c +++ b/src/video/x11/SDL_x11events.c @@ -448,14 +448,21 @@ X11_PumpEvents(_THIS) switch (ev[i].type) { case EV_ABS: //printf("Got position x: %i!\n",data->x); - if(ev[i].code == ABS_X) - data->x = ev[i].value; - else if (ev[i].code == ABS_Y) - data->y = ev[i].value; - else if (ev[i].code == ABS_MISC) { - data->up = SDL_TRUE; - data->finger = ev[i].value; - } + switch (ev[i].code) { + case ABS_X: + data->x = ev[i].value; + break; + case ABS_Y: + data->y = ev[i].value; + break; + case ABS_PRESSURE: + data->pressure = ev[i].value; + break; + case ABS_MISC: + data->up = SDL_TRUE; + data->finger = ev[i].value; + break; + } break; case EV_MSC: if(ev[i].code == MSC_SERIAL) diff --git a/touchTest/touchPong b/touchTest/touchPong index d2f1862cc97da9ed0cf7c9e26d5fd98846589489..f969adce99dec05d063dee650e79933de5a6813b 100755 GIT binary patch delta 1506 zcmX|BZERCz6h5aPaM$(S?rnRwt{rY=ks4z#G6wCoxMg&FCkCf60b$nBudVBr_QFOs zEx`>X8D#Sn6@iTb$w-jMT+|s&jNylb7-L2>5{Z5AezZoUBK6KJW^9emZ_nU(W8?bZ5@>_^VjsP;IE~lZ6Qk)a4z10BAaWq69y`&_BDJaasXehB*O*>KeVK!I6ls}yjpihF7O6x1jJg%OnC3~V95gN@ z_TY6c`Y~afcoADyi*}WYg2qnq64sH=^{)lMBlhF$YT$uVVBvJHuAXk*Nofa*O)Bc2 zlpzk`7?|~)>OG}vIR?FMUbhREPIgk7Cx_6UY_&d#%Ew3M!%;Gw=zoRh6E#W#!8PP^ggJg%_L zzID8t6F6e(u;ZD2 z&L!NwU{)@}f>|4B*vMHsuce_)Tk-#pX=7qA+)6@L>=5KoUwYs*=EjymJC@;(Y~1IGmY>y_4=jtNmY@wd< z367(jl{115T5H0;=0W zw5v!J^*Yrfy72+SYgJ$1!`q9rLcQoEx}!*K>St7sc)Ca{!NGaNE76sNQ zOB{n0B7w_pbz`yCqbV*PrdRiQ3~9Ym%j!5 z__bUc+HChzxdn4)UJish&@WGhTI~GB7tGu9@~hCGljZ(-#k!lm*Jx4i*2yQ@gT4U0 zz#bd*8HbH+J_ep1gR#S;*VjiT023W@v3bofcI&C$<*ywc&%@ZU@mTmM67G|{lonIRKe%x9Ms zYvT~L30-_8vdodicArA=Uyu=sGzU42_tS#rgB8+jrke3VK1Z6P9OV$*scgxT1<-*H zRkhnKzXLsrIbB}#mJb_J(g{yS{0Y5-0 zp6TsRWTB1l!9+GYnBAWkN#`L&JeSBHOpm~Ig1y=Ja7Q}Z)1QE?0f0`TJA1N;LhIlJ3C$sxk1;8OX(BlPAr_JQ(#4vIo zs9r14t_roNKT<2=NqoTYD(Wr{-dv$Jb-teHmI}42?^0)CE7JmL)qsl&iS4++Mb8qp zh;D3MD!Q{;6kO~SPh%tb+<%(@yka-bEd}nW29{6v{L<;pJ1A{$rAbBog)+oGJO)O6 zhx$A7{mkh&D!5o#9KbDPcKLjSd+=kzPR8ioL%k`Y4{wpFJeB@xUC%%+31Yx-nL-v= zW_gD-I74Lc6TS^I|n!9pj-Msm#ezp5oC8wStRtMFH=#&h`f0%@~dv zI_!90+FYfoWe71!gDNi8clQ&w7V23&KUPV8>E)SjInC%GKxSg}OjYap; z3B?@Fa_%kO+PrabwJW^*3&y~;&Siuz8bbpY^=}2SfD>}@iKdR*lw$jV8g%+*jEev^ z9*NUGMGjL)vGFBx2FlECTWu#+d)n|hz^`CH_~n|&D!eUsL;~0*Q;{&H=PRO(mL1o7o@`A5qU?E-biX*GQmyb0_l=&xIj#Wr~PThqwa{}5LE zNs~wSA^Byj!7oUMzc)q-`S!6~aG`iVcF$bAw@GcrtJ0>2&@Ug+!+1&V(!(Z8n>?yF l<8SgjneNDM^ssf+0f1-ZI^823NtH&}kPPFsVpq~>{~sFi2S@+_ delta 1402 zcmX|BduUr_6h9}A?Iz9F+&pd)``E03#xiu4Oih}?WNF=~Oqpd!-PVz9Ng9);Be`oc zbw;~RrEJ*l^RY+QtpgRtz>R=T91JO9g@Gcz>0qr75J7N%$ncNOb8eCblKg((`F`hp z@9ky$ZW*WU$K2Jn=g=FrEj_YuZ0?WWC;Fex9{usv&wu!|yK)@c)|YQI0oeQiLy7!> zT(SV2gbyYQg^|MEWGSP=0P$i{KbR@O*8~p~5@Yd9VSg?OT>*d|qW${|$z&d`5zXW? zdX3&8I-JPlAx;5?M-CNBu(O5^Ly1r}dAO)2*6A=wWFJBOP!TQ@PG$0GN`yb3Rr=c8 z9;;V$;*?Bm8Y_b<+5jM8*ysUp|E2&q#1^!80o2oGGQ=^20Hz?QUMta_8nvjuQ0}4^ z*BDks-N~1qtWleKv6<-B8nvq*QSM?}jW&Rb>xS2P?!dULox6 zHPkO+hgMg=R9CCxWp3)rwZ>SgT|82wR&cRayn=tTpQl=RHm_lB)z5g{k7o?T(OR(< z&k%@-dgb6^nK*`zlFIuHx$72h;V6}*8RIQa89uZY4m6Eh1b~nB2*gRePFPcU$`T)J zB>V|4%G-F6aXZiV9lYWsY|Q#y+@umt^PTtb8sh~X`YHU_MR+6Q(-?6R-p=?8o?~2| zV@GGvMBAtRLpQ~Yu?N}+l`PH~qt>po(^*`mBke4ga~}KH=^n~ZT)-*T{>4+9GZt6- zl866+(QvJ2E#VK1rh$v=7niU^y|8{kBX9J}rN{m8TcovpPn9}-v&M#ijho~2kCTDc z$Hv>_3{;uj)?p`h-wDI!0KbBP6`zbn9>802FcQE{ITi`wfIJ@wIp)b}(=7SI4fFEb zNEpA8Yod=i!qkE4adcj8i^ec4C!#?IKk(J#_`Iw{Q*M@9Pgs z{VOElH;o}7+aSAZnW;Fs@0zK4s92s*+wq3fQbAN?G!??jGLZ_I?rxTosdikHSLtY3 W{!G6= 0 && finger[i].y >= 0) - drawCircle(screen,finger[i].x,finger[i].y,20,0xFF6600); + if(finger[i].p.x >= 0 && finger[i].p.y >= 0) + drawCircle(screen,finger[i].p.x,finger[i].p.y,20,0xFF6600-finger[i].pressure); if(SDL_MUSTLOCK(screen)) SDL_UnlockSurface(screen); @@ -157,20 +165,23 @@ int main(int argc, char* argv[]) //printf("Finger: %i,x: %i, y: %i\n",event.tfinger.fingerId, // event.tfinger.x,event.tfinger.y); - finger[event.tfinger.fingerId].x = event.tfinger.x; - finger[event.tfinger.fingerId].y = event.tfinger.y; + finger[event.tfinger.fingerId].p.x = event.tfinger.x; + finger[event.tfinger.fingerId].p.y = event.tfinger.y; + finger[event.tfinger.fingerId].pressure = event.tfinger.pressure; + printf("Finger: %i, pressure: %i\n",event.tfinger.fingerId, + event.tfinger.pressure); break; case SDL_FINGERDOWN: printf("Figner: %i down - x: %i, y: %i\n",event.tfinger.fingerId, event.tfinger.x,event.tfinger.y); - finger[event.tfinger.fingerId].x = event.tfinger.x; - finger[event.tfinger.fingerId].y = event.tfinger.y; + finger[event.tfinger.fingerId].p.x = event.tfinger.x; + finger[event.tfinger.fingerId].p.y = event.tfinger.y; break; case SDL_FINGERUP: printf("Figner: %i up - x: %i, y: %i\n",event.tfinger.fingerId, event.tfinger.x,event.tfinger.y); - finger[event.tfinger.fingerId].x = -1; - finger[event.tfinger.fingerId].y = -1; + finger[event.tfinger.fingerId].p.x = -1; + finger[event.tfinger.fingerId].p.y = -1; break; } } From 54edf7b933d2dcadc705a50cd635232c20a5323a Mon Sep 17 00:00:00 2001 From: Sunny Sachanandani Date: Sun, 30 May 2010 20:06:30 +0530 Subject: [PATCH 019/169] Add Xrender support to X11_FillRectangles. --- src/video/x11/SDL_x11render.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/video/x11/SDL_x11render.c b/src/video/x11/SDL_x11render.c index 939330687..0111ccacd 100644 --- a/src/video/x11/SDL_x11render.c +++ b/src/video/x11/SDL_x11render.c @@ -98,7 +98,7 @@ typedef struct #ifdef SDL_VIDEO_DRIVER_X11_XRENDER Picture xwindow_pict; Picture pixmap_picts[3]; - Picture * drawable_pict; + Picture drawable_pict; XRenderPictFormat* xwindow_pict_fmt; XRenderPictureAttributes xwindow_pict_attr; unsigned int xwindow_pict_attr_valuemask; @@ -297,14 +297,14 @@ X11_CreateRenderer(SDL_Window * window, Uint32 flags) data->drawable = data->pixmaps[0]; #ifdef SDL_VIDEO_DRIVER_X11_XRENDER if(data->xrender_available == SDL_TRUE) - data->drawable_pict = &(data->pixmap_picts[0]); + data->drawable_pict = data->pixmap_picts[0]; #endif data->makedirty = SDL_TRUE; } else { data->drawable = data->xwindow; #ifdef SDL_VIDEO_DRIVER_X11_XRENDER if(data->xrender_available == SDL_TRUE) - data->drawable_pict = &(data->xwindow_pict); + data->drawable_pict = data->xwindow_pict; #endif data->makedirty = SDL_FALSE; } @@ -380,7 +380,7 @@ X11_DisplayModeChanged(SDL_Renderer * renderer) if (n > 0) { data->drawable = data->pixmaps[0]; #ifdef SDL_VIDEO_DRIVER_X11_XRENDER - data->drawable_pict = &(data->pictures[0]); + data->drawable_pict = data->pictures[0]; #endif } data->current_pixmap = 0; @@ -994,8 +994,18 @@ X11_RenderFillRects(SDL_Renderer * renderer, const SDL_Rect ** rects, int count) } } if (xcount > 0) { +#ifdef SDL_VIDEO_DRIVER_X11_XRENDER + if(data->xrender_available == SDL_TRUE) + { + XRenderFillRectangles(data->display, PictOpSrc, data->drawable_pict, + (XRenderColor)foreground, xrects, xcount); + } + else +#endif + { XFillRectangles(data->display, data->drawable, data->gc, xrects, xcount); + } } SDL_stack_free(xpoints); From e36fc80c35b2e9feb3cc0dcb5b3880deb92d9756 Mon Sep 17 00:00:00 2001 From: Jim Grandpre Date: Mon, 31 May 2010 00:24:37 -0400 Subject: [PATCH 020/169] Auto-detects Wacom touch devices. --- src/events/SDL_touch.c | 27 ++++++--- src/events/SDL_touch_c.h | 1 + src/video/x11/SDL_eventtouch.c | 100 +++++++++++++++++++++++++++++++++ src/video/x11/SDL_eventtouch.h | 4 +- src/video/x11/SDL_x11events.c | 19 ++----- src/video/x11/SDL_x11video.c | 3 + touchTest/makefile | 2 + touchTest/parseDevicesTest.c | 50 +++++++++++++++++ 8 files changed, 182 insertions(+), 24 deletions(-) create mode 100644 src/video/x11/SDL_eventtouch.c create mode 100644 touchTest/parseDevicesTest.c diff --git a/src/events/SDL_touch.c b/src/events/SDL_touch.c index af78ac1ea..0b4957701 100644 --- a/src/events/SDL_touch.c +++ b/src/events/SDL_touch.c @@ -36,12 +36,7 @@ static SDL_Touch **SDL_touchPads = NULL; int SDL_TouchInit(void) { - SDL_Touch touch; - touch.pressure_max = 0; - touch.pressure_min = 0; - touch.id = 0; //Should be function? - SDL_AddTouch(&touch, "Touch1"); return (0); } @@ -138,6 +133,9 @@ SDL_AddTouch(const SDL_Touch * touch, char *name) SDL_strlcpy(SDL_touchPads[index]->name, name, length + 1); SDL_touchPads[index]->num_fingers = 0; + SDL_touchPads[index]->max_fingers = 0; + SDL_touchPads[index]->fingers = NULL; + SDL_touchPads[index]->buttonstate = 0; SDL_touchPads[index]->relative_mode = SDL_FALSE; SDL_touchPads[index]->flush_motion = SDL_FALSE; @@ -261,16 +259,27 @@ SDL_AddFinger(SDL_Touch* touch,SDL_Finger* finger) } /* Add the touch to the list of touch */ - fingers = (SDL_Finger **) SDL_realloc(touch->fingers, - (touch->num_fingers + 1) * sizeof(*touch)); + if(touch->num_fingers >= touch->max_fingers){ + if(fingers == NULL) { + touch->max_fingers = 1; + fingers = (SDL_Finger **) SDL_malloc(sizeof(finger)); + } + else { + fingers = (SDL_Finger **) SDL_realloc(touch->fingers, + (touch->num_fingers + 1) * sizeof(finger)); + touch->max_fingers = touch->num_fingers+1; + } + + } + if (!fingers) { SDL_OutOfMemory(); return -1; } touch->fingers = fingers; - index = touch->num_fingers++; - + index = touch->num_fingers; + touch->num_fingers++; touch->fingers[index] = (SDL_Finger *) SDL_malloc(sizeof(*(touch->fingers[index]))); if (!touch->fingers[index]) { SDL_OutOfMemory(); diff --git a/src/events/SDL_touch_c.h b/src/events/SDL_touch_c.h index 6a0ebf62d..eb2a0cbbb 100644 --- a/src/events/SDL_touch_c.h +++ b/src/events/SDL_touch_c.h @@ -61,6 +61,7 @@ struct SDL_Touch SDL_bool flush_motion; int num_fingers; + int max_fingers; SDL_Finger** fingers; void *driverdata; diff --git a/src/video/x11/SDL_eventtouch.c b/src/video/x11/SDL_eventtouch.c new file mode 100644 index 000000000..691169e56 --- /dev/null +++ b/src/video/x11/SDL_eventtouch.c @@ -0,0 +1,100 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2010 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ +#include "SDL_config.h" +#include "SDL_x11video.h" +#include "SDL_eventtouch.h" +#include "../../events/SDL_touch_c.h" + +#include +#include + +void +X11_InitTouch(_THIS) +{ + printf("Initializing touch...\n"); + + FILE *fd; + fd = fopen("/proc/bus/input/devices","r"); + + char c; + int i = 0; + char line[256]; + char tstr[256]; + int vendor = -1,product = -1,event = -1; + while(!feof(fd)) { + if(fgets(line,256,fd) <=0) continue; + //printf("%s",line); + if(line[0] == '\n') { + if(vendor == 1386){ + printf("Wacom... Assuming it is a touch device\n"); + sprintf(tstr,"/dev/input/event%i",event); + printf("At location: %s\n",tstr); + + SDL_Touch touch; + touch.pressure_max = 0; + touch.pressure_min = 0; + touch.id = event; + + + + touch.driverdata = SDL_malloc(sizeof(EventTouchData)); + EventTouchData* data = (EventTouchData*)(touch.driverdata); + printf("Opening device...\n"); + //printf("New Touch - DataPtr: %i\n",data); + data->eventStream = open(tstr, + O_RDONLY | O_NONBLOCK); + ioctl (data->eventStream, EVIOCGNAME (sizeof (tstr)), tstr); + printf ("Reading From : %s\n", tstr); + SDL_AddTouch(&touch, tstr); + + } + vendor = -1; + product = -1; + event = -1; + } + else if(line[0] == 'I') { + i = 1; + while(line[i]) { + sscanf(&line[i],"Vendor=%x",&vendor); + sscanf(&line[i],"Product=%x",&product); + i++; + } + } + else if(line[0] == 'H') { + i = 1; + while(line[i]) { + sscanf(&line[i],"event%d",&event); + i++; + } + } + } + + close(fd); +} + +void +X11_QuitTouch(_THIS) +{ + SDL_TouchQuit(); +} + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/x11/SDL_eventtouch.h b/src/video/x11/SDL_eventtouch.h index debdb59ae..1cee9ec0a 100644 --- a/src/video/x11/SDL_eventtouch.h +++ b/src/video/x11/SDL_eventtouch.h @@ -35,8 +35,8 @@ typedef struct EventTouchData } EventTouchData; #endif -//extern void X11_InitMouse(_THIS); -//extern void X11_QuitMouse(_THIS); +extern void X11_InitTouch(_THIS); +extern void X11_QuitTouch(_THIS); #endif /* _SDL_eventtouch_h */ diff --git a/src/video/x11/SDL_x11events.c b/src/video/x11/SDL_x11events.c index 4e5934a98..8c5ec04c8 100644 --- a/src/video/x11/SDL_x11events.c +++ b/src/video/x11/SDL_x11events.c @@ -109,7 +109,6 @@ X11_DispatchEvent(_THIS) #endif } break; - /* Losing mouse coverage? */ case LeaveNotify:{ #ifdef DEBUG_XEVENTS @@ -422,23 +421,16 @@ X11_PumpEvents(_THIS) char name[256]; struct input_event ev[64]; int size = sizeof (struct input_event); - static int initd = 0; //TODO - HACK! + for(i = 0;i < SDL_GetNumTouch();++i) { SDL_Touch* touch = SDL_GetTouchIndex(i); if(!touch) printf("Touch %i/%i DNE\n",i,SDL_GetNumTouch()); EventTouchData* data; - if(!initd){//data->eventStream <= 0) { - touch->driverdata = SDL_malloc(sizeof(EventTouchData)); - data = (EventTouchData*)(touch->driverdata); - printf("Openning device...\n"); - data->eventStream = open("/dev/input/wacom", - O_RDONLY | O_NONBLOCK); - ioctl (data->eventStream, EVIOCGNAME (sizeof (name)), name); - printf ("Reading From : %s\n", name); - initd = 1; + data = (EventTouchData*)(touch->driverdata); + if(data == NULL) { + printf("No driver data\n"); + continue; } - else - data = (EventTouchData*)(touch->driverdata); if(data->eventStream <= 0) printf("Error: Couldn't open stream\n"); rd = read(data->eventStream, ev, size * 64); @@ -469,6 +461,7 @@ X11_PumpEvents(_THIS) data->finger = ev[i].value; break; case EV_SYN: + printf("Id: %i\n",touch->id); if(data->x >= 0 || data->y >= 0) SDL_SendTouchMotion(touch->id,data->finger, SDL_FALSE,data->x,data->y, diff --git a/src/video/x11/SDL_x11video.c b/src/video/x11/SDL_x11video.c index 2494bce39..4575b634e 100644 --- a/src/video/x11/SDL_x11video.c +++ b/src/video/x11/SDL_x11video.c @@ -23,6 +23,7 @@ #include "SDL_video.h" #include "SDL_mouse.h" +#include "SDL_eventtouch.h" #include "../SDL_sysvideo.h" #include "../SDL_pixels_c.h" @@ -269,6 +270,7 @@ X11_VideoInit(_THIS) } X11_InitMouse(_this); + X11_InitTouch(_this); return 0; } @@ -289,6 +291,7 @@ X11_VideoQuit(_THIS) X11_QuitModes(_this); X11_QuitKeyboard(_this); X11_QuitMouse(_this); + X11_QuitTouch(_this); } SDL_bool diff --git a/touchTest/makefile b/touchTest/makefile index a244a2982..50bce657c 100644 --- a/touchTest/makefile +++ b/touchTest/makefile @@ -2,4 +2,6 @@ SDLTest : touchSimp.c touchPong.c gcc touchTest.c -o touchTest `sdl-config --cflags --libs` -g gcc touchSimp.c -o touchSimp `sdl-config --cflags --libs` -g gcc touchPong.c -o touchPong `sdl-config --cflags --libs` -g + gcc parseDevicesTest.c -o parseDevicesTest -g + diff --git a/touchTest/parseDevicesTest.c b/touchTest/parseDevicesTest.c new file mode 100644 index 000000000..85d4ffef3 --- /dev/null +++ b/touchTest/parseDevicesTest.c @@ -0,0 +1,50 @@ +#include +#include +#include + + +int main(int agrc,char **argv) +{ + FILE *fd; + fd = fopen("/proc/bus/input/devices","r"); + + char c; + int i = 0; + char line[256]; + char tstr[256]; + int vendor = -1,product = -1,event = -1; + while(!feof(fd)) { + fgets(line,256,fd); + //printf("%s",line); + if(line[0] == '\n') { + if(vendor == 1386){ + printf("Wacom... Assuming it is a touch device\n"); + sprintf(tstr,"/dev/input/event%i",event); + printf("At location: %s\n",tstr); + + + } + vendor = -1; + product = -1; + event = -1; + } + else if(line[0] == 'I') { + i = 1; + while(line[i]) { + sscanf(&line[i],"Vendor=%x",&vendor); + sscanf(&line[i],"Product=%x",&product); + i++; + } + } + else if(line[0] == 'H') { + i = 1; + while(line[i]) { + sscanf(&line[i],"event%d",&event); + i++; + } + } + } + + close(fd); + return 0; +} From 941436daab31addb7706293e74383dfd1ba789de Mon Sep 17 00:00:00 2001 From: Sunny Sachanandani Date: Mon, 31 May 2010 13:27:27 +0530 Subject: [PATCH 021/169] Modified configure.in to allow building with Xrender. Fixed all problems that prevented compilation. Builds fine now :) --- configure.in | 33 ++++++++++++++++++++++---- include/SDL_config.h.in | 2 ++ src/video/x11/SDL_x11render.c | 44 +++++++++++++++++++++-------------- 3 files changed, 56 insertions(+), 23 deletions(-) diff --git a/configure.in b/configure.in index 00c15101d..bc901943b 100644 --- a/configure.in +++ b/configure.in @@ -1128,16 +1128,13 @@ AC_HELP_STRING([--enable-video-x11-xrandr], [enable X11 Xrandr extension for ful ]) if test x$have_xrandr_h_hdr = xyes; then if test x$enable_x11_shared = xyes && test x$xrandr_lib != x ; then - echo "-- dynamic libXrender -> $xrender_lib" echo "-- dynamic libXrandr -> $xrandr_lib" - AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XRENDER, "$xrender_lib") AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR, "$xrandr_lib") definitely_enable_video_x11_xrandr=yes else - AC_CHECK_LIB(Xrender, XRenderQueryExtension, have_xrender_lib=yes) AC_CHECK_LIB(Xrandr, XRRQueryExtension, have_xrandr_lib=yes) - if test x$have_xrender_lib = xyes && test x$have_xrandr_lib = xyes ; then - EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lXrandr -lXrender" + if test x$have_xrandr_lib = xyes ; then + EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lXrandr" definitely_enable_video_x11_xrandr=yes fi fi @@ -1199,6 +1196,32 @@ AC_HELP_STRING([--enable-video-x11-scrnsaver], [enable X11 screensaver extension if test x$definitely_enable_video_x11_scrnsaver = xyes; then AC_DEFINE(SDL_VIDEO_DRIVER_X11_SCRNSAVER) fi + AC_ARG_ENABLE(video-x11-xrender, +AC_HELP_STRING([--enable-video-x11-xrender], [enable X11 Xrender extension [[default=yes]]]), + , enable_video_x11_xrender=yes) + if test x$enable_video_x11_xrender = xyes; then + AC_CHECK_HEADER(X11/extensions/Xrender.h, + have_xrender_h_hdr=yes, + have_xrender_h_hdr=no, + [#include + ]) + if test x$have_xrender_h_hdr = xyes; then + if test x$enable_x11_shared = xyes && test x$xrender_lib != x ; then + echo "-- dynamic libXrender -> $xrender_lib" + AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XRENDER, "$xrender_lib") + definitely_enable_video_x11_xrender=yes + else + AC_CHECK_LIB(Xrender, XRenderQueryExtension, have_xrender_lib=yes) + if test x$have_xrender_lib = xyes ; then + EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lXrender" + definitely_enable_video_x11_xrender=yes + fi + fi + fi + fi + if test x$definitely_enable_video_x11_xrender = xyes; then + AC_DEFINE(SDL_VIDEO_DRIVER_X11_XRENDER) + fi AC_ARG_ENABLE(render-x11, AC_HELP_STRING([--enable-render-x11], [enable the X11 render driver [[default=yes]]]), diff --git a/include/SDL_config.h.in b/include/SDL_config.h.in index 473a0f323..b9e1ef300 100644 --- a/include/SDL_config.h.in +++ b/include/SDL_config.h.in @@ -280,6 +280,8 @@ #undef SDL_VIDEO_DRIVER_X11_XV #undef SDL_VIDEO_DRIVER_X11_XRENDER +#undef SDL_VIDEO_RENDER_X11 + #undef SDL_VIDEO_RENDER_D3D #undef SDL_VIDEO_RENDER_GDI #undef SDL_VIDEO_RENDER_OGL diff --git a/src/video/x11/SDL_x11render.c b/src/video/x11/SDL_x11render.c index 0111ccacd..d5631197c 100644 --- a/src/video/x11/SDL_x11render.c +++ b/src/video/x11/SDL_x11render.c @@ -219,7 +219,7 @@ X11_CreateRenderer(SDL_Window * window, Uint32 flags) if(XRenderQueryExtension(data->display, &event_basep, &error_basep) == True) { data->xrender_available = SDL_TRUE; data->xwindow_pict_fmt = XRenderFindVisualFormat(data->display, data->visual); - if(!xwindow_pict_fmt) { + if(!data->xwindow_pict_fmt) { data->xrender_available = SDL_FALSE; } data->xwindow_pict_attr.graphics_exposures = False; @@ -285,8 +285,8 @@ X11_CreateRenderer(SDL_Window * window, Uint32 flags) #ifdef SDL_VIDEO_DRIVER_X11_XRENDER if(data->xrender_available == SDL_TRUE) { data->pixmap_picts[i] = - XCreatePicture(data->display, data->pixmap[i], data->xwindow_pict_fmt, - data->xwindow_pict_attr_valuemask, &xwindow_pict_attr); + XRenderCreatePicture(data->display, data->pixmaps[i], data->xwindow_pict_fmt, + data->xwindow_pict_attr_valuemask, &data->xwindow_pict_attr); if(!data->pixmap_picts[i]) { data->xrender_available = SDL_FALSE; } @@ -354,7 +354,7 @@ X11_DisplayModeChanged(SDL_Renderer * renderer) XFreePixmap(data->display, data->pixmaps[i]); data->pixmaps[i] = None; #ifdef SDL_VIDEO_DRIVER_X11_XRENDER - data->pictures[i] = None; + data->pixmap_picts[i] = None; #endif } } @@ -368,10 +368,10 @@ X11_DisplayModeChanged(SDL_Renderer * renderer) } #ifdef SDL_VIDEO_DRIVER_X11_XRENDER if(data->xrender_available == SDL_TRUE) { - data->pictures[i] = - XCreatePicture(data->display, data->pixmap[i], data->xwindow_pict_fmt, + data->pixmap_picts[i] = + XRenderCreatePicture(data->display, data->pixmaps[i], data->xwindow_pict_fmt, data->xwindow_pict_attr_valuemask, &data->xwindow_pict_attr); - if(!data->pictures[i]) { + if(!data->pixmap_picts[i]) { data->xrender_available = SDL_FALSE; } } @@ -380,7 +380,7 @@ X11_DisplayModeChanged(SDL_Renderer * renderer) if (n > 0) { data->drawable = data->pixmaps[0]; #ifdef SDL_VIDEO_DRIVER_X11_XRENDER - data->drawable_pict = data->pictures[0]; + data->drawable_pict = data->pixmap_picts[0]; #endif } data->current_pixmap = 0; @@ -419,7 +419,7 @@ X11_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture) #ifdef SDL_VIDEO_DRIVER_X11_XRENDER // Assume the texture is supported by Xrender data->xrender_available = SDL_TRUE; - if(renderdata->xrender_available == SDL_False) { + if(renderdata->xrender_available == SDL_FALSE) { if (texture->format != display->current_mode.format) { SDL_SetError("Texture format doesn't match window format"); return -1; @@ -523,21 +523,24 @@ X11_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture) x11_fmt_mask = (PictFormatDepth | PictFormatRedMask | PictFormatGreenMask | PictFormatBlueMask); - x11_templ_fmt.depth = (data->format).BitsPerPixel; - x11_temp_fmt.direct.redMask = (data->format).Rmask; - x11_temp_fmt.direct.greenMask = (data->format).Gmask; - x11_temp_fmt.direct.blueMask = (data->format).Bmask; - x11_temp_fmt.direct.alphaMask = (data->format).Amask; + Uint32 Rmask, Gmask, Bmask, Amask; + int bpp; + SDL_PixelFormatEnumToMasks(data->format, &bpp, &Rmask, &Gmask, &Bmask, &Amask); + x11_templ_fmt.depth = bpp; + x11_templ_fmt.direct.redMask = Rmask; + x11_templ_fmt.direct.greenMask = Gmask; + x11_templ_fmt.direct.blueMask = Bmask; + x11_templ_fmt.direct.alphaMask = Amask; /* Return one matching XRenderPictFormat */ - data->pict_fmt = + data->picture_fmt = XRenderFindFormat(renderdata->display, x11_fmt_mask, &x11_templ_fmt, 1); - if(!data->pict_fmt) { + if(!data->picture_fmt) { data->xrender_available = SDL_FALSE; } data->picture_attr_valuemask = CPGraphicsExposure; (data->picture_attr).graphics_exposures = False; data->picture = - XCreatePicture(renderdata->display, data->pixmap, data->picture_fmt, + XRenderCreatePicture(renderdata->display, data->pixmap, data->picture_fmt, data->picture_attr_valuemask, &(data->picture_attr)); if(!data->picture) { data->xrender_available = SDL_FALSE; @@ -997,8 +1000,13 @@ X11_RenderFillRects(SDL_Renderer * renderer, const SDL_Rect ** rects, int count) #ifdef SDL_VIDEO_DRIVER_X11_XRENDER if(data->xrender_available == SDL_TRUE) { + XRenderColor xrender_foreground_color; + xrender_foreground_color.red = renderer->r; + xrender_foreground_color.green = renderer->g; + xrender_foreground_color.blue = renderer->b; + xrender_foreground_color.alpha = renderer->a; XRenderFillRectangles(data->display, PictOpSrc, data->drawable_pict, - (XRenderColor)foreground, xrects, xcount); + &xrender_foreground_color, xrects, xcount); } else #endif From bb399ee9cf91e1512347d642add140c2446af276 Mon Sep 17 00:00:00 2001 From: Sunny Sachanandani Date: Mon, 31 May 2010 15:09:36 +0530 Subject: [PATCH 022/169] Xrender uses 16 bit color per channel. Fixed the color handling in X11_RenderFillRects to match this. Xrender just works now for filling rectangles :D . --- src/video/x11/SDL_x11render.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/video/x11/SDL_x11render.c b/src/video/x11/SDL_x11render.c index d5631197c..b30336290 100644 --- a/src/video/x11/SDL_x11render.c +++ b/src/video/x11/SDL_x11render.c @@ -1001,10 +1001,10 @@ X11_RenderFillRects(SDL_Renderer * renderer, const SDL_Rect ** rects, int count) if(data->xrender_available == SDL_TRUE) { XRenderColor xrender_foreground_color; - xrender_foreground_color.red = renderer->r; - xrender_foreground_color.green = renderer->g; - xrender_foreground_color.blue = renderer->b; - xrender_foreground_color.alpha = renderer->a; + xrender_foreground_color.red = (unsigned short) ((renderer->r / 255.0) * 0xFFFF); + xrender_foreground_color.green = (unsigned short) ((renderer->g / 255.0) * 0xFFFF); + xrender_foreground_color.blue = (unsigned short) ((renderer->b / 255.0) * 0xFFFF); + xrender_foreground_color.alpha = (unsigned short) ((renderer->a / 255.0) * 0xFFFF); XRenderFillRectangles(data->display, PictOpSrc, data->drawable_pict, &xrender_foreground_color, xrects, xcount); } From 83d881011d5c0a80d083433916fbbdf5f4e8ccaf Mon Sep 17 00:00:00 2001 From: Sunny Sachanandani Date: Mon, 31 May 2010 17:04:20 +0530 Subject: [PATCH 023/169] X11_RenderPresent now uses XRender to blit back-buffers to the screen. --- src/video/x11/SDL_x11render.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/video/x11/SDL_x11render.c b/src/video/x11/SDL_x11render.c index b30336290..184f7479a 100644 --- a/src/video/x11/SDL_x11render.c +++ b/src/video/x11/SDL_x11render.c @@ -1205,9 +1205,19 @@ X11_RenderPresent(SDL_Renderer * renderer) if (!(renderer->info.flags & SDL_RENDERER_SINGLEBUFFER)) { for (dirty = data->dirty.list; dirty; dirty = dirty->next) { const SDL_Rect *rect = &dirty->rect; +#ifdef SDL_VIDEO_DRIVER_X11_XRENDER + if(data->xrender_available == SDL_TRUE) + { + XRenderComposite(data->display, PictOpSrc, data->drawable_pict, None, data->xwindow_pict, + rect->x, rect->y, 0, 0, rect->x, rect->y, rect->w, rect->h); + } + else +#endif + { XCopyArea(data->display, data->drawable, data->xwindow, data->gc, rect->x, rect->y, rect->w, rect->h, rect->x, rect->y); + } } SDL_ClearDirtyRects(&data->dirty); } @@ -1217,9 +1227,15 @@ X11_RenderPresent(SDL_Renderer * renderer) if (renderer->info.flags & SDL_RENDERER_PRESENTFLIP2) { data->current_pixmap = (data->current_pixmap + 1) % 2; data->drawable = data->pixmaps[data->current_pixmap]; +#ifdef SDL_VIDEO_DRIVER_X11_XRENDER + data->drawable_pict = data->pixmap_picts[data->current_pixmap]; +#endif } else if (renderer->info.flags & SDL_RENDERER_PRESENTFLIP3) { data->current_pixmap = (data->current_pixmap + 1) % 3; data->drawable = data->pixmaps[data->current_pixmap]; +#ifdef SDL_VIDEO_DRIVER_X11_XRENDER + data->drawable_pict = data->pixmap_picts[data->current_pixmap]; +#endif } } From 02f0a3b7c364ba7a011b7137de124d2c261012d7 Mon Sep 17 00:00:00 2001 From: Jim Grandpre Date: Tue, 1 Jun 2010 02:54:33 -0400 Subject: [PATCH 024/169] Added include/touch.h Now reading in resolution of touch pad. --- include/SDL_touch.h | 118 +++++++++++++++++++++++++++++++++ src/events/SDL_touch.c | 51 +++++++------- src/events/SDL_touch_c.h | 43 +----------- src/video/x11/SDL_eventtouch.c | 22 +++++- src/video/x11/SDL_x11events.c | 3 +- touchTest/parseDevicesTest.c | 17 +++++ touchTest/touchTest.c | 54 +++++++++++---- 7 files changed, 226 insertions(+), 82 deletions(-) create mode 100644 include/SDL_touch.h diff --git a/include/SDL_touch.h b/include/SDL_touch.h new file mode 100644 index 000000000..359748ccb --- /dev/null +++ b/include/SDL_touch.h @@ -0,0 +1,118 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2010 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ + +/** + * \file SDL_touch.h + * + * Include file for SDL mouse event handling. + */ + +#ifndef _SDL_touch_h +#define _SDL_touch_h + +#include "SDL_stdinc.h" +#include "SDL_error.h" +#include "SDL_video.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +/* *INDENT-OFF* */ +extern "C" { +/* *INDENT-ON* */ +#endif + +typedef struct SDL_Touch SDL_Touch; +typedef struct SDL_Finger SDL_Finger; + +struct SDL_Finger { + int id; + int x; + int y; + int z; /* for future use */ + int xdelta; + int ydelta; + int last_x, last_y,last_pressure; /* the last reported coordinates */ + int pressure; +}; + + +struct SDL_Touch +{ + + /* Free the touch when it's time */ + void (*FreeTouch) (SDL_Touch * touch); + + /* data common for tablets */ + int pressure_max, pressure_min; + int x_max,x_min; + int y_max,y_min; + int xres,yres,pressureres; + int tilt; /* for future use */ + int rotation; /* for future use */ + + /* Data common to all touch */ + int id; + SDL_Window *focus; + + char *name; + Uint8 buttonstate; + SDL_bool relative_mode; + SDL_bool flush_motion; + + int num_fingers; + int max_fingers; + SDL_Finger** fingers; + + void *driverdata; +}; + + +/* Function prototypes */ + +/** + * \brief Get the touch object at the given id. + * + * + */ + extern DECLSPEC SDL_Touch* SDLCALL SDL_GetTouch(int id); + + + +/** + * \brief Get the finger object of the given touch, at the given id. + * + * + */ + extern DECLSPEC SDL_Finger* SDLCALL SDL_GetFinger(SDL_Touch *touch, int id); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +/* *INDENT-OFF* */ +} +/* *INDENT-ON* */ +#endif +#include "close_code.h" + +#endif /* _SDL_mouse_h */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/events/SDL_touch.c b/src/events/SDL_touch.c index 0b4957701..571d3d4af 100644 --- a/src/events/SDL_touch.c +++ b/src/events/SDL_touch.c @@ -133,9 +133,9 @@ SDL_AddTouch(const SDL_Touch * touch, char *name) SDL_strlcpy(SDL_touchPads[index]->name, name, length + 1); SDL_touchPads[index]->num_fingers = 0; - SDL_touchPads[index]->max_fingers = 0; - SDL_touchPads[index]->fingers = NULL; - + SDL_touchPads[index]->max_fingers = 1; + SDL_touchPads[index]->fingers = (SDL_Finger **) SDL_malloc(sizeof(SDL_Finger*)); + SDL_touchPads[index]->fingers[0] = NULL; SDL_touchPads[index]->buttonstate = 0; SDL_touchPads[index]->relative_mode = SDL_FALSE; SDL_touchPads[index]->flush_motion = SDL_FALSE; @@ -253,39 +253,37 @@ SDL_AddFinger(SDL_Touch* touch,SDL_Finger* finger) int index; SDL_Finger **fingers; size_t length; - + //printf("Adding Finger...\n"); if (SDL_GetFingerIndexId(touch,finger->id) != -1) { SDL_SetError("Finger ID already in use"); } /* Add the touch to the list of touch */ - if(touch->num_fingers >= touch->max_fingers){ - if(fingers == NULL) { - touch->max_fingers = 1; - fingers = (SDL_Finger **) SDL_malloc(sizeof(finger)); - } - else { - fingers = (SDL_Finger **) SDL_realloc(touch->fingers, - (touch->num_fingers + 1) * sizeof(finger)); + if(touch->num_fingers >= touch->max_fingers){ + printf("Making room for it!\n"); + fingers = (SDL_Finger **) SDL_realloc(touch->fingers, + (touch->num_fingers + 1) * sizeof(SDL_Finger *)); touch->max_fingers = touch->num_fingers+1; - } - - } - - if (!fingers) { - SDL_OutOfMemory(); - return -1; + if (!fingers) { + SDL_OutOfMemory(); + return -1; + } + else { + touch->max_fingers = touch->num_fingers+1; + touch->fingers = fingers; + } } - touch->fingers = fingers; index = touch->num_fingers; - touch->num_fingers++; - touch->fingers[index] = (SDL_Finger *) SDL_malloc(sizeof(*(touch->fingers[index]))); + //printf("Max_Fingers: %i Index: %i\n",touch->max_fingers,index); + + touch->fingers[index] = (SDL_Finger *) SDL_malloc(sizeof(SDL_Finger)); if (!touch->fingers[index]) { SDL_OutOfMemory(); return -1; } - *touch->fingers[index] = *finger; + *(touch->fingers[index]) = *finger; + touch->num_fingers++; return index; } @@ -323,6 +321,7 @@ SDL_SendFingerDown(int id, int fingerid, SDL_bool down, int x, int y, int pressu nf.ydelta = 0; nf.last_x = x; nf.last_y = y; + nf.last_pressure = pressure; SDL_AddFinger(touch,&nf); posted = 0; @@ -383,6 +382,7 @@ SDL_SendTouchMotion(int id, int fingerid, int relative, } else { if(x < 0) x = finger->last_x; /*If movement is only in one axis,*/ if(y < 0) y = finger->last_y; /*The other is marked as -1*/ + if(pressure < 0) pressure = finger->last_pressure; xrel = x - finger->last_x; yrel = y - finger->last_y; } @@ -418,8 +418,8 @@ SDL_SendTouchMotion(int id, int fingerid, int relative, touch->y = 0; } */ - finger->xdelta += xrel; - finger->ydelta += yrel; + finger->xdelta = xrel; + finger->ydelta = yrel; finger->pressure = pressure; @@ -440,6 +440,7 @@ SDL_SendTouchMotion(int id, int fingerid, int relative, } finger->last_x = finger->x; finger->last_y = finger->y; + finger->last_pressure = finger->pressure; return posted; } } diff --git a/src/events/SDL_touch_c.h b/src/events/SDL_touch_c.h index eb2a0cbbb..1c61bc948 100644 --- a/src/events/SDL_touch_c.h +++ b/src/events/SDL_touch_c.h @@ -20,52 +20,11 @@ slouken@libsdl.org */ #include "SDL_config.h" +#include "../../include/SDL_touch.h" #ifndef _SDL_touch_c_h #define _SDL_touch_c_h -typedef struct SDL_Touch SDL_Touch; -typedef struct SDL_Finger SDL_Finger; - -struct SDL_Finger { - int id; - int x; - int y; - int z; /* for future use */ - int xdelta; - int ydelta; - int last_x, last_y; /* the last reported x and y coordinates */ - int pressure; -}; - - -struct SDL_Touch -{ - - /* Free the touch when it's time */ - void (*FreeTouch) (SDL_Touch * touch); - - /* data common for tablets */ - int pressure_max; - int pressure_min; - int tilt; /* for future use */ - int rotation; /* for future use */ - - /* Data common to all touch */ - int id; - SDL_Window *focus; - - char *name; - Uint8 buttonstate; - SDL_bool relative_mode; - SDL_bool flush_motion; - - int num_fingers; - int max_fingers; - SDL_Finger** fingers; - - void *driverdata; -}; /* Initialize the touch subsystem */ diff --git a/src/video/x11/SDL_eventtouch.c b/src/video/x11/SDL_eventtouch.c index 691169e56..1c74779b3 100644 --- a/src/video/x11/SDL_eventtouch.c +++ b/src/video/x11/SDL_eventtouch.c @@ -53,7 +53,9 @@ X11_InitTouch(_THIS) touch.pressure_max = 0; touch.pressure_min = 0; touch.id = event; - + + + touch.driverdata = SDL_malloc(sizeof(EventTouchData)); @@ -64,6 +66,24 @@ X11_InitTouch(_THIS) O_RDONLY | O_NONBLOCK); ioctl (data->eventStream, EVIOCGNAME (sizeof (tstr)), tstr); printf ("Reading From : %s\n", tstr); + + + + int abs[5]; + ioctl(data->eventStream,EVIOCGABS(0),abs); + touch.x_min = abs[1]; + touch.x_max = abs[2]; + touch.xres = touch.x_max - touch.x_min; + ioctl(data->eventStream,EVIOCGABS(ABS_Y),abs); + touch.y_min = abs[1]; + touch.y_max = abs[2]; + touch.yres = touch.y_max - touch.y_min; + ioctl(data->eventStream,EVIOCGABS(ABS_PRESSURE),abs); + touch.pressure_min = abs[1]; + touch.pressure_max = abs[2]; + touch.pressureres = touch.pressure_max - touch.pressure_min; + + SDL_AddTouch(&touch, tstr); } diff --git a/src/video/x11/SDL_x11events.c b/src/video/x11/SDL_x11events.c index 8c5ec04c8..85db7725f 100644 --- a/src/video/x11/SDL_x11events.c +++ b/src/video/x11/SDL_x11events.c @@ -449,6 +449,7 @@ X11_PumpEvents(_THIS) break; case ABS_PRESSURE: data->pressure = ev[i].value; + if(data->pressure < 0) data->pressure = 0; break; case ABS_MISC: data->up = SDL_TRUE; @@ -461,7 +462,7 @@ X11_PumpEvents(_THIS) data->finger = ev[i].value; break; case EV_SYN: - printf("Id: %i\n",touch->id); + //printf("Id: %i\n",touch->id); if(data->x >= 0 || data->y >= 0) SDL_SendTouchMotion(touch->id,data->finger, SDL_FALSE,data->x,data->y, diff --git a/touchTest/parseDevicesTest.c b/touchTest/parseDevicesTest.c index 85d4ffef3..28ef82e06 100644 --- a/touchTest/parseDevicesTest.c +++ b/touchTest/parseDevicesTest.c @@ -1,6 +1,7 @@ #include #include #include +#include int main(int agrc,char **argv) @@ -22,7 +23,23 @@ int main(int agrc,char **argv) sprintf(tstr,"/dev/input/event%i",event); printf("At location: %s\n",tstr); + int inFile = open(tstr,O_RDONLY); + unsigned long bits[4]; + int abs[5]; + ioctl(inFile,EVIOCGABS(ABS_X),abs); + int minx,maxx,miny,maxy,minp,maxp; + minx = abs[1]; + maxx = abs[2]; + ioctl(inFile,EVIOCGABS(ABS_Y),abs); + miny = abs[1]; + maxy = abs[2]; + ioctl(inFile,EVIOCGABS(ABS_PRESSURE),abs); + minp = abs[1]; + maxp = abs[2]; + + + close(inFile); } vendor = -1; product = -1; diff --git a/touchTest/touchTest.c b/touchTest/touchTest.c index f169c3574..b77a00e5c 100644 --- a/touchTest/touchTest.c +++ b/touchTest/touchTest.c @@ -1,7 +1,7 @@ #include #include #include -#include "../src/events/SDL_touch_c.h" //BAD!!! +#include #define PI 3.1415926535897 #define WIDTH 640 @@ -19,12 +19,12 @@ int bstatus; typedef struct { - int x,y; + float x,y; } Point; typedef struct { Point p; - int pressure; + float pressure; } Finger; @@ -32,7 +32,7 @@ Finger finger[MAXFINGERS]; void handler (int sig) { - printf ("\nexiting...(%d)\n", sig); + printf ("\exiting...(%d)\n", sig); exit (0); } @@ -61,8 +61,17 @@ void drawCircle(SDL_Surface* screen,int x,int y,int r,int c) { float a; - for(a=0;a 0) { //r<0 ==> unfilled circle + for(tx=x-r*cos(a);tx= 0 && finger[i].p.y >= 0) - drawCircle(screen,finger[i].p.x,finger[i].p.y,20,0xFF6600-finger[i].pressure); + if(finger[i].pressure > 0) + drawCircle(screen,finger[i].p.x*screen->w,finger[i].p.y*screen->h + ,20,0xFF*finger[i].pressure); + else + drawCircle(screen,finger[i].p.x*screen->w,finger[i].p.y*screen->h + ,20,0xFF); if(SDL_MUSTLOCK(screen)) SDL_UnlockSurface(screen); @@ -162,14 +176,28 @@ int main(int argc, char* argv[]) bstatus &= ~(1<<(event.button.button-1)); break; case SDL_FINGERMOTION: - + ; //printf("Finger: %i,x: %i, y: %i\n",event.tfinger.fingerId, // event.tfinger.x,event.tfinger.y); - finger[event.tfinger.fingerId].p.x = event.tfinger.x; - finger[event.tfinger.fingerId].p.y = event.tfinger.y; - finger[event.tfinger.fingerId].pressure = event.tfinger.pressure; - printf("Finger: %i, pressure: %i\n",event.tfinger.fingerId, - event.tfinger.pressure); + SDL_Touch* inTouch = SDL_GetTouch(event.tfinger.touchId); + SDL_Finger* inFinger = SDL_GetFinger(inTouch,event.tfinger.fingerId); + + finger[event.tfinger.fingerId].p.x = ((float)event.tfinger.x)/ + inTouch->xres; + finger[event.tfinger.fingerId].p.y = ((float)event.tfinger.y)/ + inTouch->yres; + + finger[event.tfinger.fingerId].pressure = + ((float)event.tfinger.pressure)/inTouch->pressureres; + + printf("Finger: %i, Pressure: %f Pressureres: %i\n", + event.tfinger.fingerId, + finger[event.tfinger.fingerId].pressure, + inTouch->pressureres); + //printf("Finger: %i, pressure: %f\n",event.tfinger.fingerId, + // finger[event.tfinger.fingerId].pressure); + + break; case SDL_FINGERDOWN: printf("Figner: %i down - x: %i, y: %i\n",event.tfinger.fingerId, From 181aedae38682b63a7a1cb015fb065b02476ff96 Mon Sep 17 00:00:00 2001 From: Sunny Sachanandani Date: Wed, 2 Jun 2010 09:01:37 +0530 Subject: [PATCH 025/169] Fix the rendering color channels to be premultiplied with the alpha channel as thats what Xrender expects. Small fixes in X11_CreateTexture. Add some new functions in SDL_x11sym.h as well as support for Xrender. --- src/video/x11/SDL_x11dyn.h | 2 +- src/video/x11/SDL_x11render.c | 137 +++++++++++++++++++++------------- src/video/x11/SDL_x11sym.h | 11 +++ src/video/x11/SDL_x11video.h | 3 +- 4 files changed, 98 insertions(+), 55 deletions(-) diff --git a/src/video/x11/SDL_x11dyn.h b/src/video/x11/SDL_x11dyn.h index c06a2d6fe..f8b3114fd 100644 --- a/src/video/x11/SDL_x11dyn.h +++ b/src/video/x11/SDL_x11dyn.h @@ -53,7 +53,7 @@ #endif #if SDL_VIDEO_DRIVER_X11_XRENDER -#include +#include #endif /* diff --git a/src/video/x11/SDL_x11render.c b/src/video/x11/SDL_x11render.c index 184f7479a..019845e12 100644 --- a/src/video/x11/SDL_x11render.c +++ b/src/video/x11/SDL_x11render.c @@ -473,7 +473,13 @@ X11_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture) XShmCreateImage(renderdata->display, renderdata->visual, renderdata->depth, ZPixmap, shminfo->shmaddr, shminfo, texture->w, texture->h); - if (!data->image) { + + // This Pixmap is used by Xrender + data->pixmap = + XShmCreatePixmap(renderdata->display, renderdata->xwindow, shminfo->shmaddr, + shminfo, texture->w, texture->h, renderdata->depth); + + if (!(data->pixmap && data->image)) { XShmDetach(renderdata->display, shminfo); XSync(renderdata->display, False); shmdt(shminfo->shmaddr); @@ -486,6 +492,14 @@ X11_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture) if (!data->image) #endif /* not NO_SHARED_MEMORY */ { + /* This is the case where the server does not have + shared memory support and the texture is streaming. + It does not make sense to use Xrender here because + we would have to copy the data onto a server side + pixmap with XPutImage first and only then can we + use Xrender + */ + data->pixels = SDL_malloc(texture->h * data->pitch); if (!data->pixels) { X11_DestroyTexture(renderer, texture); @@ -505,7 +519,8 @@ X11_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture) return -1; } } - } else { + } + else { data->pixmap = XCreatePixmap(renderdata->display, renderdata->xwindow, texture->w, texture->h, renderdata->depth); @@ -514,53 +529,11 @@ X11_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture) SDL_SetError("XCreatePixmap() failed"); return -1; } - -#ifdef SDL_VIDEO_DRIVER_X11_XRENDER - if(renderdata->xrender_available) { - data->xrender_available = SDL_TRUE; - unsigned long x11_fmt_mask; // Format mask - XRenderPictFormat x11_templ_fmt; // Format template - x11_fmt_mask = - (PictFormatDepth | PictFormatRedMask | PictFormatGreenMask - | PictFormatBlueMask); - Uint32 Rmask, Gmask, Bmask, Amask; - int bpp; - SDL_PixelFormatEnumToMasks(data->format, &bpp, &Rmask, &Gmask, &Bmask, &Amask); - x11_templ_fmt.depth = bpp; - x11_templ_fmt.direct.redMask = Rmask; - x11_templ_fmt.direct.greenMask = Gmask; - x11_templ_fmt.direct.blueMask = Bmask; - x11_templ_fmt.direct.alphaMask = Amask; - /* Return one matching XRenderPictFormat */ - data->picture_fmt = - XRenderFindFormat(renderdata->display, x11_fmt_mask, &x11_templ_fmt, 1); - if(!data->picture_fmt) { - data->xrender_available = SDL_FALSE; - } - data->picture_attr_valuemask = CPGraphicsExposure; - (data->picture_attr).graphics_exposures = False; - data->picture = - XRenderCreatePicture(renderdata->display, data->pixmap, data->picture_fmt, - data->picture_attr_valuemask, &(data->picture_attr)); - if(!data->picture) { - data->xrender_available = SDL_FALSE; - } - } - /* We thought we could render the texture with Xrender but this was - not possible for some reason. Now we must ensure that texture - format and window format match to avoid a BadMatch error. - */ - if(data->xrender_available == SDL_FALSE) { - if (texture->format != display->current_mode.format) { - SDL_SetError("Texture format doesn't match window format"); - return -1; - } - } -#endif data->image = XCreateImage(renderdata->display, renderdata->visual, - renderdata->depth, ZPixmap, 0, NULL, texture->w, - texture->h, SDL_BYTESPERPIXEL(data->format) * 8, + renderdata->depth, ZPixmap, 0, NULL, + texture->w, texture->h, + SDL_BYTESPERPIXEL(data->format) * 8, data->pitch); if (!data->image) { X11_DestroyTexture(renderer, texture); @@ -568,7 +541,48 @@ X11_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture) return -1; } } - +#ifdef SDL_VIDEO_DRIVER_X11_XRENDER + if(renderdata->xrender_available && data->pixmap) { + data->xrender_available = SDL_TRUE; + unsigned long x11_fmt_mask; // Format mask + XRenderPictFormat x11_templ_fmt; // Format template + x11_fmt_mask = + (PictFormatDepth | PictFormatRedMask | PictFormatGreenMask + | PictFormatBlueMask); + Uint32 Rmask, Gmask, Bmask, Amask; + int bpp; + SDL_PixelFormatEnumToMasks(data->format, &bpp, &Rmask, &Gmask, &Bmask, &Amask); + x11_templ_fmt.depth = bpp; + x11_templ_fmt.direct.redMask = Rmask; + x11_templ_fmt.direct.greenMask = Gmask; + x11_templ_fmt.direct.blueMask = Bmask; + x11_templ_fmt.direct.alphaMask = Amask; + /* Return one matching XRenderPictFormat */ + data->picture_fmt = + XRenderFindFormat(renderdata->display, x11_fmt_mask, &x11_templ_fmt, 1); + if(!data->picture_fmt) { + data->xrender_available = SDL_FALSE; + } + data->picture_attr_valuemask = CPGraphicsExposure; + (data->picture_attr).graphics_exposures = False; + data->picture = + XRenderCreatePicture(renderdata->display, data->pixmap, data->picture_fmt, + data->picture_attr_valuemask, &(data->picture_attr)); + if(!data->picture) { + data->xrender_available = SDL_FALSE; + } + } + /* We thought we could render the texture with Xrender but this was + not possible for some reason. Now we must ensure that texture + format and window format match to avoid a BadMatch error. + */ + if(data->xrender_available == SDL_FALSE) { + if (texture->format != display->current_mode.format) { + SDL_SetError("Texture format doesn't match window format"); + return -1; + } + } +#endif return 0; } @@ -638,6 +652,7 @@ X11_UpdateTexture(SDL_Renderer * renderer, SDL_Texture * texture, X11_RenderData *renderdata = (X11_RenderData *) renderer->driverdata; if (data->pixels) { + // If we have already allocated memory or were given memory by XShm Uint8 *src, *dst; int row; size_t length; @@ -652,6 +667,23 @@ X11_UpdateTexture(SDL_Renderer * renderer, SDL_Texture * texture, src += pitch; dst += data->pitch; } + /* If this is a static texture we would use Xrender for it + but this requires that the server side Pixmap associated + with this texture be updated with the data as well and + that the pixmap is not a shared memory pixmap. + Hopefully the user will not update static textures so + frequently as to cause a slowdown. + */ + if (texture->access == SDL_TEXTUREACCESS_STATIC) { +#ifndef NO_SHARED_MEMORY + if(!data->shminfo.shmaddr) +#endif + { + XPutImage(renderdata->display, data->pixmap, renderdata->gc, + data->image, 0, 0, rect->x, rect->y, rect->w, rect->h); + } + } + } else { data->image->width = rect->w; data->image->height = rect->h; @@ -1001,10 +1033,11 @@ X11_RenderFillRects(SDL_Renderer * renderer, const SDL_Rect ** rects, int count) if(data->xrender_available == SDL_TRUE) { XRenderColor xrender_foreground_color; - xrender_foreground_color.red = (unsigned short) ((renderer->r / 255.0) * 0xFFFF); - xrender_foreground_color.green = (unsigned short) ((renderer->g / 255.0) * 0xFFFF); - xrender_foreground_color.blue = (unsigned short) ((renderer->b / 255.0) * 0xFFFF); - xrender_foreground_color.alpha = (unsigned short) ((renderer->a / 255.0) * 0xFFFF); + // Premultiply the color channels as well as modulate them to a 16 bit color space + xrender_foreground_color.red = ((unsigned short)renderer->r + 1) * ((unsigned short)renderer->a + 1) - 1; + xrender_foreground_color.green = ((unsigned short)renderer->g + 1) * ((unsigned short)renderer->a + 1) - 1; + xrender_foreground_color.blue = ((unsigned short)renderer->b + 1) * ((unsigned short)renderer->a + 1) - 1; + xrender_foreground_color.alpha = ((unsigned short)renderer->a + 1) * ((unsigned short)renderer->a + 1) - 1; XRenderFillRectangles(data->display, PictOpSrc, data->drawable_pict, &xrender_foreground_color, xrects, xcount); } diff --git a/src/video/x11/SDL_x11sym.h b/src/video/x11/SDL_x11sym.h index 0cdcfe8dc..d01503eec 100644 --- a/src/video/x11/SDL_x11sym.h +++ b/src/video/x11/SDL_x11sym.h @@ -177,6 +177,7 @@ SDL_X11_SYM(Status,XShmAttach,(Display* a,XShmSegmentInfo* b),(a,b),return) SDL_X11_SYM(Status,XShmDetach,(Display* a,XShmSegmentInfo* b),(a,b),return) SDL_X11_SYM(Status,XShmPutImage,(Display* a,Drawable b,GC c,XImage* d,int e,int f,int g,int h,unsigned int i,unsigned int j,Bool k),(a,b,c,d,e,f,g,h,i,j,k),return) SDL_X11_SYM(XImage*,XShmCreateImage,(Display* a,Visual* b,unsigned int c,int d,char* e,XShmSegmentInfo* f,unsigned int g,unsigned int h),(a,b,c,d,e,f,g,h),return) +SDL_X11_SYM(Pixmap,XShmCreatePixmap,(Display *a,Drawable b,char* c,XShmSegmentInfo* d, unsigned int e, unsigned int f, unsigned int g),(a,b,c,d,e,f,g),return) SDL_X11_SYM(Bool,XShmQueryExtension,(Display* a),(a),return) #endif @@ -232,6 +233,16 @@ SDL_X11_SYM(Status,XScreenSaverQueryVersion,(Display *dpy,int *major_versionp,in SDL_X11_SYM(void,XScreenSaverSuspend,(Display *dpy,Bool suspend),(dpy,suspend),return) #endif +/* XRender support */ +#if SDL_VIDEO_DRIVER_X11_XRENDER +SDL_X11_MODULE(XRENDER) +SDL_X11_SYM(Bool,XRenderQueryExtension,(Display *dpy,int *event_base,int *error_base),(dpy,event_base,error_base),return) +SDL_X11_SYM(XRenderPictFormat*,XRenderFindVisualFormat,(Display *dpy,_Xconst Visual *visual),(dpy,visual),return) +SDL_X11_SYM(XRenderPictFormat*,XRenderFindFormat,(Display *dpy,unsigned long mask,_Xconst XRenderPictFormat* templ,int count),(dpy,mask,templ,count),return) +SDL_X11_SYM(Picture,XRenderCreatePicture,(Display *dpy,Drawable drawable,_Xconst XRenderPictFormat* format,unsigned long valuemask,_Xconst XRenderPictureAttributes* attributes),(dpy,drawable,format,valuemask,attributes),return) +SDL_X11_SYM(void,XRenderComposite,(Display *dpy,int op,Picture src,Picture mask,Picture dst,int src_x,int src_y,int mask_x,int mask_y,int dst_x,int dst_y,unsigned int width,unsigned int height),(dpy,op,src,mask,dst,src_x,src_y,mask_x,mask_y,dst_x,dst_y,width,height),return) +SDL_X11_SYM(void,XRenderFillRectangles,(Display *dpy,int op,Picture dst,_Xconst XRenderColor* color,_Xconst XRectangle* rectangles,int n_rects),(dpy,op,dst,color,rectangles,n_rects),return) +#endif /* *INDENT-ON* */ /* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/x11/SDL_x11video.h b/src/video/x11/SDL_x11video.h index 6c2377376..7f5d73421 100644 --- a/src/video/x11/SDL_x11video.h +++ b/src/video/x11/SDL_x11video.h @@ -46,9 +46,8 @@ #include #endif #if SDL_VIDEO_DRIVER_X11_XRENDER -#include +#include #endif - #include "SDL_x11dyn.h" #include "SDL_x11events.h" From e4d5d55364ad2f53404bf3d4ee619e3464f51cf6 Mon Sep 17 00:00:00 2001 From: Sunny Sachanandani Date: Wed, 2 Jun 2010 11:45:15 +0530 Subject: [PATCH 026/169] Fix X11_FillRects to work with double buffering as well as triple buffering. This requires that the buffer pixmap be cleared after every render. --- src/video/x11/SDL_x11render.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/video/x11/SDL_x11render.c b/src/video/x11/SDL_x11render.c index 019845e12..9a91e966f 100644 --- a/src/video/x11/SDL_x11render.c +++ b/src/video/x11/SDL_x11render.c @@ -290,6 +290,8 @@ X11_CreateRenderer(SDL_Window * window, Uint32 flags) if(!data->pixmap_picts[i]) { data->xrender_available = SDL_FALSE; } + XRenderComposite(data->display, PictOpClear, data->pixmap_picts[i], None, data->pixmap_picts[i], + 0, 0, 0, 0, 0, 0, window->w, window->h); } #endif } @@ -374,6 +376,8 @@ X11_DisplayModeChanged(SDL_Renderer * renderer) if(!data->pixmap_picts[i]) { data->xrender_available = SDL_FALSE; } + XRenderComposite(data->display, PictOpClear, data->pixmap_picts[i], None, data->pixmap_picts[i], + 0, 0, 0, 0, 0, 0, window->w, window->h); } #endif } @@ -735,6 +739,13 @@ X11_SetDrawBlendMode(SDL_Renderer * renderer) switch (renderer->blendMode) { case SDL_BLENDMODE_NONE: return 0; +#ifdef SDL_VIDEO_DRIVER_X11_XRENDER + case SDL_BLENDMODE_MASK: // Use src pict as mask + case SDL_BLENDMODE_ADD: // PictOpAdd + case SDL_BLENDMODE_BLEND: // PictOpOver + /* FIXME case SDL_BLENDMODE_MOD: */ +#endif + return 0; default: SDL_Unsupported(); renderer->blendMode = SDL_BLENDMODE_NONE; @@ -1038,7 +1049,7 @@ X11_RenderFillRects(SDL_Renderer * renderer, const SDL_Rect ** rects, int count) xrender_foreground_color.green = ((unsigned short)renderer->g + 1) * ((unsigned short)renderer->a + 1) - 1; xrender_foreground_color.blue = ((unsigned short)renderer->b + 1) * ((unsigned short)renderer->a + 1) - 1; xrender_foreground_color.alpha = ((unsigned short)renderer->a + 1) * ((unsigned short)renderer->a + 1) - 1; - XRenderFillRectangles(data->display, PictOpSrc, data->drawable_pict, + XRenderFillRectangles(data->display, PictOpOver, data->drawable_pict, &xrender_foreground_color, xrects, xcount); } else @@ -1241,7 +1252,7 @@ X11_RenderPresent(SDL_Renderer * renderer) #ifdef SDL_VIDEO_DRIVER_X11_XRENDER if(data->xrender_available == SDL_TRUE) { - XRenderComposite(data->display, PictOpSrc, data->drawable_pict, None, data->xwindow_pict, + XRenderComposite(data->display, PictOpOver, data->drawable_pict, None, data->xwindow_pict, rect->x, rect->y, 0, 0, rect->x, rect->y, rect->w, rect->h); } else @@ -1253,6 +1264,13 @@ X11_RenderPresent(SDL_Renderer * renderer) } } SDL_ClearDirtyRects(&data->dirty); +#ifdef SDL_VIDEO_DRIVER_X11_XRENDER + // Clear each pixmap after a render + if(data->xrender_available == SDL_TRUE) { + XRenderComposite(data->display, PictOpClear, data->drawable_pict, None, data->drawable_pict, + 0, 0, 0, 0, 0, 0, renderer->window->w, renderer->window->h); + } +#endif } XSync(data->display, False); From d3ed0db8db6bc3f6ee45538a7e105ec359c5856b Mon Sep 17 00:00:00 2001 From: Sunny Sachanandani Date: Wed, 2 Jun 2010 11:55:40 +0530 Subject: [PATCH 027/169] It seems that the off-screen buffers (or pixmaps) only need to be cleared while initializing. --- src/video/x11/SDL_x11render.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/video/x11/SDL_x11render.c b/src/video/x11/SDL_x11render.c index 9a91e966f..5af377882 100644 --- a/src/video/x11/SDL_x11render.c +++ b/src/video/x11/SDL_x11render.c @@ -1264,13 +1264,13 @@ X11_RenderPresent(SDL_Renderer * renderer) } } SDL_ClearDirtyRects(&data->dirty); -#ifdef SDL_VIDEO_DRIVER_X11_XRENDER +/*#ifdef SDL_VIDEO_DRIVER_X11_XRENDER // Clear each pixmap after a render if(data->xrender_available == SDL_TRUE) { XRenderComposite(data->display, PictOpClear, data->drawable_pict, None, data->drawable_pict, 0, 0, 0, 0, 0, 0, renderer->window->w, renderer->window->h); } -#endif +#endif*/ } XSync(data->display, False); From edc978692d262921691ae733ca2a12c5005fe1a4 Mon Sep 17 00:00:00 2001 From: jimtla Date: Thu, 3 Jun 2010 11:08:17 -0400 Subject: [PATCH 028/169] Fixed some windows compilation bugs - Still does not compile. --- VisualC/SDL.sln | 4 ++-- VisualC/SDL/SDL.vcproj | 21 ++++++++++++++------- VisualC/SDLmain/SDLmain.vcproj | 9 +++++---- src/events/SDL_touch_c.h | 7 +++++-- 4 files changed, 26 insertions(+), 15 deletions(-) diff --git a/VisualC/SDL.sln b/VisualC/SDL.sln index 83ea90b3b..9a200bf60 100644 --- a/VisualC/SDL.sln +++ b/VisualC/SDL.sln @@ -1,5 +1,5 @@ -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual C++ Express 2005 +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDL", "SDL\SDL.vcproj", "{81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDLmain", "SDLmain\SDLmain.vcproj", "{DA956FD3-E142-46F2-9DD5-C78BEBB56B7A}" diff --git a/VisualC/SDL/SDL.vcproj b/VisualC/SDL/SDL.vcproj index 9ae52b1ea..a9d71d732 100644 --- a/VisualC/SDL/SDL.vcproj +++ b/VisualC/SDL/SDL.vcproj @@ -1,10 +1,11 @@ @@ -106,9 +109,6 @@ - @@ -185,6 +185,8 @@ IgnoreAllDefaultLibraries="true" ProgramDatabaseFile=".\Release/SDL.pdb" SubSystem="2" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" ImportLibrary=".\Release/SDL.lib" /> - @@ -928,6 +927,14 @@ RelativePath="..\..\src\timer\SDL_timer_c.h" > + + + + diff --git a/VisualC/SDLmain/SDLmain.vcproj b/VisualC/SDLmain/SDLmain.vcproj index 8c6a95dc4..16c191458 100644 --- a/VisualC/SDLmain/SDLmain.vcproj +++ b/VisualC/SDLmain/SDLmain.vcproj @@ -1,9 +1,10 @@ Date: Thu, 3 Jun 2010 13:21:35 -0400 Subject: [PATCH 029/169] Fixed windo build errors. Should now be compilable. --- src/events/SDL_touch.c | 178 +++++++++++++++++++-------------------- src/events/SDL_touch_c.h | 2 +- 2 files changed, 90 insertions(+), 90 deletions(-) diff --git a/src/events/SDL_touch.c b/src/events/SDL_touch.c index 571d3d4af..1d24524a5 100644 --- a/src/events/SDL_touch.c +++ b/src/events/SDL_touch.c @@ -27,6 +27,8 @@ #include "SDL_events_c.h" #include "../video/SDL_sysvideo.h" +#include + static int SDL_num_touch = 0; static SDL_Touch **SDL_touchPads = NULL; @@ -99,9 +101,7 @@ int SDL_AddTouch(const SDL_Touch * touch, char *name) { SDL_Touch **touchPads; - int selected_touch; - int index; - size_t length; + int index,length; if (SDL_GetTouchIndexId(touch->id) != -1) { SDL_SetError("Touch ID already in use"); @@ -252,7 +252,6 @@ SDL_AddFinger(SDL_Touch* touch,SDL_Finger* finger) { int index; SDL_Finger **fingers; - size_t length; //printf("Adding Finger...\n"); if (SDL_GetFingerIndexId(touch,finger->id) != -1) { SDL_SetError("Finger ID already in use"); @@ -260,19 +259,18 @@ SDL_AddFinger(SDL_Touch* touch,SDL_Finger* finger) /* Add the touch to the list of touch */ if(touch->num_fingers >= touch->max_fingers){ - printf("Making room for it!\n"); - fingers = (SDL_Finger **) SDL_realloc(touch->fingers, - (touch->num_fingers + 1) * sizeof(SDL_Finger *)); - touch->max_fingers = touch->num_fingers+1; - if (!fingers) { - SDL_OutOfMemory(); - return -1; - } - else { - touch->max_fingers = touch->num_fingers+1; - touch->fingers = fingers; + //printf("Making room for it!\n"); + fingers = (SDL_Finger **) SDL_realloc(touch->fingers, + (touch->num_fingers + 1) * sizeof(SDL_Finger *)); + touch->max_fingers = touch->num_fingers+1; + if (!fingers) { + SDL_OutOfMemory(); + return -1; + } else { + touch->max_fingers = touch->num_fingers+1; + touch->fingers = fingers; + } } - } index = touch->num_fingers; //printf("Max_Fingers: %i Index: %i\n",touch->max_fingers,index); @@ -295,13 +293,14 @@ SDL_DelFinger(SDL_Touch* touch,int fingerid) SDL_Finger* finger = SDL_GetFinger(touch,fingerid); if (!finger) { - return; + return -1; } SDL_free(finger); touch->num_fingers--; touch->fingers[index] = touch->fingers[touch->num_fingers]; + return 0; } @@ -370,79 +369,80 @@ SDL_SendTouchMotion(int id, int fingerid, int relative, return 0; } - if(finger == NULL) - SDL_SendFingerDown(id,fingerid,SDL_TRUE,x,y,pressure); - else { - /* the relative motion is calculated regarding the last position */ - if (relative) { - xrel = x; - yrel = y; - x = (finger->last_x + x); - y = (finger->last_y + y); + if(finger == NULL) { + SDL_SendFingerDown(id,fingerid,SDL_TRUE,x,y,pressure); + return 0; } else { - if(x < 0) x = finger->last_x; /*If movement is only in one axis,*/ - if(y < 0) y = finger->last_y; /*The other is marked as -1*/ - if(pressure < 0) pressure = finger->last_pressure; - xrel = x - finger->last_x; - yrel = y - finger->last_y; - } - - /* Drop events that don't change state */ - if (!xrel && !yrel) { -#if 0 - printf("Touch event didn't change state - dropped!\n"); -#endif - return 0; - } - - /* Update internal touch coordinates */ - - finger->x = x; - finger->y = y; - - /*Should scale to window? Normalize? Maintain Aspect?*/ - //SDL_GetWindowSize(touch->focus, &x_max, &y_max); - - /* make sure that the pointers find themselves inside the windows */ - /* only check if touch->xmax is set ! */ - /* - if (x_max && touch->x > x_max) { - touch->x = x_max; - } else if (touch->x < 0) { - touch->x = 0; - } - - if (y_max && touch->y > y_max) { - touch->y = y_max; - } else if (touch->y < 0) { - touch->y = 0; - } - */ - finger->xdelta = xrel; - finger->ydelta = yrel; - finger->pressure = pressure; - - - - /* Post the event, if desired */ - posted = 0; - if (SDL_GetEventState(SDL_FINGERMOTION) == SDL_ENABLE) { - SDL_Event event; - event.tfinger.type = SDL_FINGERMOTION; - event.tfinger.touchId = (Uint8) id; - event.tfinger.fingerId = (Uint8) fingerid; - event.tfinger.x = x; - event.tfinger.y = y; - event.tfinger.pressure = pressure; - event.tfinger.state = touch->buttonstate; - event.tfinger.windowID = touch->focus ? touch->focus->id : 0; - posted = (SDL_PushEvent(&event) > 0); + /* the relative motion is calculated regarding the last position */ + if (relative) { + xrel = x; + yrel = y; + x = (finger->last_x + x); + y = (finger->last_y + y); + } else { + if(x < 0) x = finger->last_x; /*If movement is only in one axis,*/ + if(y < 0) y = finger->last_y; /*The other is marked as -1*/ + if(pressure < 0) pressure = finger->last_pressure; + xrel = x - finger->last_x; + yrel = y - finger->last_y; + } + + /* Drop events that don't change state */ + if (!xrel && !yrel) { + #if 0 + printf("Touch event didn't change state - dropped!\n"); + #endif + return 0; + } + + /* Update internal touch coordinates */ + + finger->x = x; + finger->y = y; + + /*Should scale to window? Normalize? Maintain Aspect?*/ + //SDL_GetWindowSize(touch->focus, &x_max, &y_max); + + /* make sure that the pointers find themselves inside the windows */ + /* only check if touch->xmax is set ! */ + /* + if (x_max && touch->x > x_max) { + touch->x = x_max; + } else if (touch->x < 0) { + touch->x = 0; + } + + if (y_max && touch->y > y_max) { + touch->y = y_max; + } else if (touch->y < 0) { + touch->y = 0; + } + */ + finger->xdelta = xrel; + finger->ydelta = yrel; + finger->pressure = pressure; + + + + /* Post the event, if desired */ + posted = 0; + if (SDL_GetEventState(SDL_FINGERMOTION) == SDL_ENABLE) { + SDL_Event event; + event.tfinger.type = SDL_FINGERMOTION; + event.tfinger.touchId = (Uint8) id; + event.tfinger.fingerId = (Uint8) fingerid; + event.tfinger.x = x; + event.tfinger.y = y; + event.tfinger.pressure = pressure; + event.tfinger.state = touch->buttonstate; + event.tfinger.windowID = touch->focus ? touch->focus->id : 0; + posted = (SDL_PushEvent(&event) > 0); + } + finger->last_x = finger->x; + finger->last_y = finger->y; + finger->last_pressure = finger->pressure; + return posted; } - finger->last_x = finger->x; - finger->last_y = finger->y; - finger->last_pressure = finger->pressure; - return posted; - } } int SDL_SendTouchButton(int id, Uint8 state, Uint8 button) @@ -483,7 +483,7 @@ SDL_SendTouchButton(int id, Uint8 state, Uint8 button) if (SDL_GetEventState(type) == SDL_ENABLE) { SDL_Event event; event.type = type; - event.tbutton.touchId = (Uint8) index; + event.tbutton.touchId = (Uint8) touch->id; event.tbutton.state = state; event.tbutton.button = button; event.tbutton.windowID = touch->focus ? touch->focus->id : 0; diff --git a/src/events/SDL_touch_c.h b/src/events/SDL_touch_c.h index 84d94a05d..f69b1bab7 100644 --- a/src/events/SDL_touch_c.h +++ b/src/events/SDL_touch_c.h @@ -65,7 +65,7 @@ extern int SDL_SendTouchButton(int id, Uint8 state, Uint8 button); extern void SDL_TouchQuit(void); /* Get the index of a touch device */ -extern int SDL_GetTouchIndexId(int id) +extern int SDL_GetTouchIndexId(int id); From 0fe728087d80c03144a439a50e09f023576d933f Mon Sep 17 00:00:00 2001 From: jimtla Date: Sat, 5 Jun 2010 01:58:56 -0400 Subject: [PATCH 030/169] Addition of VC project for touchTest.c --- include/SDL_touch.h | 9 +- touchTest/touchTest.c | 24 ++- touchTest/touchTest2/touchTest2.ncb | Bin 0 -> 1027072 bytes touchTest/touchTest2/touchTest2.sln | 20 ++ touchTest/touchTest2/touchTest2.suo | Bin 0 -> 10240 bytes touchTest/touchTest2/touchTest2/SDL.dll | Bin 0 -> 1126912 bytes .../touchTest2/touchTest2/touchTest2.vcproj | 186 ++++++++++++++++++ ...uchTest2.vcproj.jgran-virtualPC.jgran.user | 65 ++++++ 8 files changed, 290 insertions(+), 14 deletions(-) create mode 100644 touchTest/touchTest2/touchTest2.ncb create mode 100644 touchTest/touchTest2/touchTest2.sln create mode 100644 touchTest/touchTest2/touchTest2.suo create mode 100644 touchTest/touchTest2/touchTest2/SDL.dll create mode 100644 touchTest/touchTest2/touchTest2/touchTest2.vcproj create mode 100644 touchTest/touchTest2/touchTest2/touchTest2.vcproj.jgran-virtualPC.jgran.user diff --git a/include/SDL_touch.h b/include/SDL_touch.h index 359748ccb..a8bff29a7 100644 --- a/include/SDL_touch.h +++ b/include/SDL_touch.h @@ -41,8 +41,6 @@ extern "C" { /* *INDENT-ON* */ #endif -typedef struct SDL_Touch SDL_Touch; -typedef struct SDL_Finger SDL_Finger; struct SDL_Finger { int id; @@ -55,9 +53,11 @@ struct SDL_Finger { int pressure; }; +typedef struct SDL_Touch SDL_Touch; +typedef struct SDL_Finger SDL_Finger; + -struct SDL_Touch -{ +struct SDL_Touch { /* Free the touch when it's time */ void (*FreeTouch) (SDL_Touch * touch); @@ -87,6 +87,7 @@ struct SDL_Touch }; + /* Function prototypes */ /** diff --git a/touchTest/touchTest.c b/touchTest/touchTest.c index b77a00e5c..66646af4f 100644 --- a/touchTest/touchTest.c +++ b/touchTest/touchTest.c @@ -3,6 +3,8 @@ #include #include + + #define PI 3.1415926535897 #define WIDTH 640 #define HEIGHT 480 @@ -32,7 +34,7 @@ Finger finger[MAXFINGERS]; void handler (int sig) { - printf ("\exiting...(%d)\n", sig); + printf ("exiting...(%d)\n", sig); exit (0); } @@ -81,7 +83,7 @@ void drawCircle(SDL_Surface* screen,int x,int y,int r,int c) void DrawScreen(SDL_Surface* screen, int h) { - int x, y, xm,ym,c; + int x, y, xm,ym,c,i; if(SDL_MUSTLOCK(screen)) { if(SDL_LockSurface(screen) < 0) return; @@ -98,9 +100,10 @@ void DrawScreen(SDL_Surface* screen, int h) setpix(screen,x,y,((x%255)<<16) + ((y%255)<<8) + (x+y)%255); } } + drawCircle(screen,mousx,mousy,-30,0xFFFFFF); - int i; + for(i=0;i= 0 && finger[i].p.y >= 0) if(finger[i].pressure > 0) @@ -131,8 +134,8 @@ int main(int argc, char* argv[]) memset(keystat,0,512*sizeof(keystat[0])); if (SDL_Init(SDL_INIT_VIDEO) < 0 ) return 1; - - if (!(screen = initScreen(WIDTH,HEIGHT))) + screen = initScreen(WIDTH,HEIGHT); + if (!screen) { SDL_Quit(); return 1; @@ -179,21 +182,22 @@ int main(int argc, char* argv[]) ; //printf("Finger: %i,x: %i, y: %i\n",event.tfinger.fingerId, // event.tfinger.x,event.tfinger.y); - SDL_Touch* inTouch = SDL_GetTouch(event.tfinger.touchId); - SDL_Finger* inFinger = SDL_GetFinger(inTouch,event.tfinger.fingerId); - + //SDL_Touch *inTouch = SDL_GetTouch(event.tfinger.touchId); + //SDL_Finger *inFinger = SDL_GetFinger(inTouch,event.tfinger.fingerId); + /* finger[event.tfinger.fingerId].p.x = ((float)event.tfinger.x)/ inTouch->xres; finger[event.tfinger.fingerId].p.y = ((float)event.tfinger.y)/ inTouch->yres; finger[event.tfinger.fingerId].pressure = - ((float)event.tfinger.pressure)/inTouch->pressureres; - + ((float)event.tfinger.pressure)/inTouch->pressureres;*/ + /* printf("Finger: %i, Pressure: %f Pressureres: %i\n", event.tfinger.fingerId, finger[event.tfinger.fingerId].pressure, inTouch->pressureres); + */ //printf("Finger: %i, pressure: %f\n",event.tfinger.fingerId, // finger[event.tfinger.fingerId].pressure); diff --git a/touchTest/touchTest2/touchTest2.ncb b/touchTest/touchTest2/touchTest2.ncb new file mode 100644 index 0000000000000000000000000000000000000000..284832a93d2e7888b6a21f501829bdd68a5bbe19 GIT binary patch literal 1027072 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

^@Q)ZdFk0{#GcKt=x}hT{?jABE9Lony;v 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

)|Mi*nSF~WG?m~JdFmK$r0?M6~&^iwjM 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

&En3+N?>s z-mFP`rOj6JV@M6WB4&G6uQOjn_6L2aq2>QygRWMiEyvRjBk)Y+>*z+LGa0>oDdfkG z--ABULw=4ujc2{f84ux=^@`|BwDUvYFG2hnYk-Fgx|Fv5=gRauZCeF@UBR5}l+V}$ zpbu|_wx*NjI*d<`oQ}+*|2`n!}vT*@I_gWYZ~+p{JhAoTZ66Q^xsMqgVZcIKW$gcf!+0 zVjl|bU*Mb5C_fjenAcxGW&&FQ*>x~aO+Vu|ZSp1c-G?&G`;ze$_}S3JROH(IJiD@n zdhAK8X=88xCi0VhT8Z`4LwH{0X<qm@yuIzI)2BxI%TQvL8cr5Kc0sC*@kiRZDjvP$iE#KS1Ipx z^uyE8(>I^R6}Y% zW_}FKo=u(Kr+%*>OT4*}zW?@e=;djEjFnKivSG89C<7leF6*+OM2>1l(KZGnaXg zc?^9z_ZIZ`AHp+BD)xHt#U)$8gYfAgJO}c;ybJ3X*!?{JLqE>Ip3bvB&m5kAFGc@d zft-SVkHLQgymJiC%m&&R9{B*?zW^HDANjD?Fmen3@r0kuGmmj&E86`y`07#m>r(7{ zd0ylBmgk4?%nm%wJb$6>FSv?1FZpb@9DM{$pUu-xdV4Jk4a4h;L({`N&+^nj*Vpl^ zO&c!(|GY_^`||Jz{(2YCZ-LyrD~?k+;^ZiKAd8@gD7 zaqWHjq6S*ZLQBUo7XFgw*U-lm*#BFz+INbXaeVV*nf-XnjE(-sM*&q2ihKxIdzTamj=9cvJ_S?XZwCjh9vCqHUIPYf?uGv5J5NLcH?|953&h{~E zKJESS%jog6<3+UhaSt%Q{hRVk(6kQeQ`~!<|2${MDU`Yvf0c29{#<TRV@4J4`5XQB2)O9CgPS@7-C9+=3 zD;(jggWz79XAPcJcy?S7`F1mM z?@9K0kw?qSM9!{&En%lHUP8~4w?u~HAO97!g;3FJD?L_KhN_|o>hpAleufT=f06m< z2iWb%hMRe|noXa~AV12yF>>KSWO?h0j5~}O*-hB<0@lHJ{`gJCtiM0HJp9)WjjTnv zU-=cdlzI6t(a{H(3&IayfL}zew4&3!b_w%RWZr(r^FJ^??TI{l7TUfI8hjc3`l~yc z*D{WFGH!0S47vicVnygw%o+2TM;-#-5$Bt~vR+MlZ%Dir;(K%IVa(Zkh(|d-IoCtg zUa6My1ag0McyCe4`Qpi}p*^ZN51zpso$>lG_+rgpP>+vj?;`pgb-ReVu5n~4&8=z2 zHPAzm4{5VLJbyFvcrvz_4*L0oZy48^Gu%fV?yE$e? zZ@r1)JOb`(P7dyPw&K0Bl-i5ZSE0E9d0o3G>x=Z?4)pmGuDy1J7W03C2hp#^d`!QI zDQt?qwK8)K#`;Fwd%do3|Nk;&=%gQ?L=N7v8tTK9K1A&|fz{Kl&mGIy<@ilPE)LqL z6B#1rGU(KsBll5P1|ATz<1=de|LbYD%_+-)(2wyN}iK{j9kO6;;H31>uKIA!*1ru@l4^_lV^pij5)U%oe94Aula8a z{I>=EKidL}n5FG84tbU7zvjO!@ZT2r|5poq_tAGBEkczq5_K=WkYIhelx=wLzMih3 z0d8m;S)W_JMmu}?4*6(z&%pXSY_-kabGr8K>F??t?Jn*;JOYrL3JOj6YPplk4D@#u z4IhK9=9ZY6`j-Fegu8}Dx{EW0CF$y1TYXcjDbzGJaz{^hv8#7@kiFmT-rk#;o!RYJh?zOQB`D}H2E?cN>Z7sA=xW<-D4aLed*JN@vh2~6C7IfnMFYvgA zqP@B8d$2VpmnPR|aHn%NmutzHmj2#(hI@7ZjC2moEROI^xj`v57q;5Wn_FsIa@BI( zZgYKYHt#Y?!TR{rQRhrrc1m@jnag==GwqFSjrCRk*X=vp*(+^Z$h5WP3i%8z%e5(m znrwArzBOB&FOYu>7NmNvKgkC0)*OY%w-pSxzH;klCZ9LCYI;oOH*eKZZ^ z!mzCrUo2$$>{X{RSg!`M_vuX6i-)5aiCcqexyL7)3ork1H@VnrS!{ZfizDh8nZd2A z+@&}oDD~YoP%mtu>77GzA%gR11W@NvY%@>(Z0qrbMR5zV79hI#N4?w`6yBY=%{E;0 zl?GH+4wi$F?l8%xgDOe@m6dbLz~%+=Yk2RO!vkFv+r(o_w-r%R?7D^E6@-pNo(ZzJ z3k$uzQbw-+E+0pI3y;OEb2EBo`dI2KjEQt#cwD|*H6ouo_OZR6n1xLJRGNqX0z6x& z%C_XKqb^h5(2i^RaCZ;zz*4+?O}#iehq`7Jx{-c;U7f>n5o%2?n`x>R@hr*J!lYIC znuL3Haj3u8Ye8HIH*=uB7O`oOxpYmDXAO=@p9PjhsB3MPQV!3Q5=H+Kl%HH*$hWjJ zm=RK+vz6)X>9?sQY@1GFeX~u7YIBQR7FbiJxRant znr+(F;o68;EqQIX=HiI2XLGjAJ6i^e{gJyh+Z?&`Yjcm}17{-tOw`P#T1;*oaQ zqj_p`TMN#ip5d;6VIV1o#md#^DUEgJr{pGrm2YXx00pF4L7`x6i_%=9sLl1wjFdGk z)*Gv0B^)umI1|$LpPh<*P*8JmSTqW&m)Q@n4$NRt(W4tbuv4JP&F$6Xj`~!btLjss zswLNmRwUr6_WDMYq#9ARPLcEu~XknZ)XcF4Vh^~t7(#)h^|%#SGBe{P-C^iC~q|wJ^j#) zWM3#WpUiq=YVdwl_gKf5jvPP;Eu94lpK7bO7t9>1aXAY;DUK>oSck&6BNH954%4r4_i`J&O#^ z)=(k*EwzOyE%h~e_g-BlUzjwpit(*&T5DEIi^f+Sm%D{xQ=RHUT{ct0ow`0G$0$RP ztx&Z@_MWCpTb)!@DX;@R)k@b-ZqA61wZ10$w#DTl{p{U{l-N^?lu&dF%&2>hd`qs) zfva3`nzBv#tOMe%Zk^_`$u>2ilt-RwRD9P3d@Q+H-E>bbmz@%O+FNt6r?JC%z^bl` z-3bq28l%3g#TB#A7&}p;Js8ZkmPSRk?)K0F!TaL1wbZCP)7DZSxoV^Euqw@wN9t0a z@HNNYynJ=TrO;Gpb*WZoxeLMOTHVq*El)RjpKDxXjf+&9@eN+v*uu2K#%gSttd7=} z4t0=CBj*IPCiSty7k&@lf6x_j*V6<(2o;~OU8bFh9YYNF`Q-{V2>j-nQaB{m0Yh=2 zWocMVecoQscD);=GMu4TYYsy0YuRfHTk+sE5JfcIW)OG(MI)1_CiGqkx5^^ zMM>TQ+UlU>nh;RmL`5jD(@vRfs-G#F)Ys~RQGKKA6JX0x0d@{?F0C^`%dWT%IJw5& zeCpC|VMLnT7(`V-p(6owQCl34{?sC($>nWa=3m*Ss>W%B98Hcy@xowQ-inVreK*W! zQ{>AEXwx!lm;c_L>0&X{77G>JQAS%0lE!zw3Iu$8+{rIr@{T^)@gJ`hkdbIVZg~Kb z(kU=Aj~X3PN25ZA}`h718LSujM5%#sP9OdMmE zbGmEk{~wA@;{-*AH_V*Q0^j;z{Q-wG9TuPY)fPn3wdAHrn-%*8hUU?_Loyb634(yO zJz}B53T9LiSuJqJlDMOo4E4$P(rw)O>K0x>j-7&x7OFF+&Y_{sd3L^HU6wA|gn?vi zVfBHJ#8}u+kqnAM%ng`Kio%E@Ac{QKzT0s5f=N%828C{6hT2SHUMF#FxpsBPH)!lN z)7$Gs$^NS-dVR9HfZAGl{^q}oD_65c)9*T+=8re*51$=T*Y zzOJPm)dV5f!kSK7U433hXQu9q)z-~*$>PBp#e#jshb2BT6(3fS?~SnhF(z$A<5FoW zQwmuw6)sH4G`ecVKpVpr$#H;`uFEllTK)9%bc+HBS}yT60Tw<3CEVCQ8{Vm%sG}#n zh;l#52ToA$T(Gw#FFK)XwgPNg>bHs64-;8>KuOL*8-fp`6rl-cDbdBDaE^pJi&Yf9 zLo64?j}7(k0Vaum03S&jG5SBfbGXR2kox$Jfd+O?A2w4h8lN>$yOV3iiPpm`WhN7F zZ!2sVWv~cLZGkbP9URn|t+f@_D<5}YwyUEfo5jv{#qBTjZv94hWb(Z!%ANdl^OM)eq zt%S4P1?e$fMu$?1$2X3=?Gb8NE^z5|k5a0UA+a2U`WeYVYzG=09I_y>eg0z#>cw`T zu31Bplvp++ZY0i5MG*Q=CrO$PCq_ci6)Z$+fCi?dB-SigTv*5S7mM;$63MG)WT4a7 zzahp7CEQ+t73{ywyucONXoZ5#f|7)(WdVvjYAsiIh*q)`ixD7d4Cvg!u{GiPNfUj_ zy_!(Zq=}M)&o>TdZPaD07;#=cGnc5-RaJ+u#gJvy$PvZsR+z3Nb&d@582cyTI8^2m zt4l~NvY@$FM`=#Q=?@}BZi&@zquG?@ z%W*Tz2wx;JGx|ncQqA_J_*%`opX>SiM^I(F!)7-nA0o|(0wvL|Voxs;VbqU|!oR~k zGy4&E&S9~b?mK&ie(cBW91ZEAG8S+E zqE;MsXfNodLEs->RX;fluV?(-BLQe;%(4Kh3CP@3Gy-f%Mco4|fjF>r#vyic?1I#7 z*U)?tBLlM9z_>NgXB}NiJvJEb)Q>F4iZdc-24m^yh=9b3U~yhT1#Uq=(;pp~v3&uR zvQv07D6WN%b~$Mm-~vAd}>$)8#9Crny+E`U; zn^o-37kw*fWc#TJ*KP`_Esk`}64d&B_5}J^!Y?0OQ~ciGOm}zrc=^%kBSU-+EfE^! zB^lciB!Z*7$_JBI`2e3+`Ou(EoFW^vNdi*ZCgp>pa+VLKoaF<2ITN9!ZITF%@`@^# z2oBpM5#aL*qb-aeWy3h4NAWCtjhso}fP9n73L)zuj<5n0n3XW=Vc{?KSXzv|Eu$kX zGn#bPB@yG0Y;z0KGMhkqf4m868Lc_r-rCCIm0N4bvc8qkse87zBUj(1Ow0Z<-!Zf) z*bjKv4PJ>~l%lDC6mc1fq>72~{z6&`rJ<)Y+P_ert9N5PRcNkZmDOg;V36=mYs<3A z$iBO*(+_r9Ww&qA_Oo&Hbxo3QBCr)(Xqv=(g)E`gx9WOxQ$3r!RTg=0u*=$ZMWNL$ zv9kWuDvPfu>_ZwTYPQ9)YsdPvEhkvUItLMkg~D7gSoV|^TKmN|n=F$`^d!mI7R82& zbNn{e$&k|9J)?(R&p0s{m@g*O*2*^%#HDUq_dIz)lhe(pnbl)@2h3dg?t+*oxR$Tc zp&l^dBb{OJWtw5h2X|xEiET-!G3!KydK|5b$ELy7q>ok=Mym>=Rb|uBsOPj! z=XwIS9@o)LY_CtXbKx4lXr`d1%+!vI`(%raU`wVS=xLJFtY5@=?6Y{SCPr7uoT|u>W|yLDq6)89Y0@g|95rn4O=h`A7b4+qbp@pJpDnBn z4h?j%d?N*sl{LO5RGsBGMxnJ}2?x8mMO`f{pt!RzvJ>M2TEtnymz%0thzP<53$iXC zACR*t6{_pl9CGf-IoUB%fZb@)dLp@HO^k6wR+Oxd^91&A1#->f1QDQLgnQR0iw|TY z8~e4roij~=7VMT(SPt~@1T|M2k$Jj3In%~gdVO=IP0p>@T@-enSkoFEVm@DO<#2H> zWY;;}9un%ZohL%=9eZMl74mFT zRBx7cN8r;!hwJ+&pfKi&t~Lp(g9M$!gUHlEBvW;G9GmHwmXR=Z2$s48&AB3=BxYeY zHFZUJQ6)O~Mpak~;<$RS>Z=sN4q%U*co~@8L*g;GYgUmJF%PHXx@K2 z&*<#w)x!x+JO;DRFtlnx<{h_WFdVhQho z2boG>v77vwJNqbW%Mj-agi>YeRnD$8W!P_#Z3bDhXQQ=+y(WAaHhXG%dz<7SOdTx6 z$Wy2T;7Kr7>>P#!8(U>(Q0Sj8+s^T4$Lcx$LQ@MxsB+>YZbK^uC16(J<+EB@}0QFB2cj8a|x0Nk{&k za-3b1B~9Vl!5RHlfRD1!)IU-s``pM27XOWWluynQ@x>kS(_~59Y(GlB#k2|F8Ywye zh+#^2W8@h+YgbGs%OQx!KN6>D2N3nL_%t%ALs|o0?Q{7oWKG!B4*l($$rfwvJjU>mQZmEmeo7c4F*DhLnMsg( zI;^rX4f)UUD=Qu0{fGHfR_e6R)hk_)az!f#`@bo0I9CS8BLjdLxB@RcE6X|aXP3b)0VM^iBeI5 z1%@CYId9_DLlo*$j$_y7Ic?(hixj6m&k{vRdiD8|#Om|RfPwBi=HX%yPa3}8v$jN22YS}Gd zb3hY|lb_<~#_|B0=IAnAb4KhYABr*Css%Y_3umy+>YYRK+2$VBrj2Y+kX1pVh}|bk zRN?>yZ3wM~1c#kX6u-5Iy4O6~XBn@C&p-=~6bWzui>qjlsCQe$Lch!iqVh+F)QMWH z8f-cRIkIYDrkkDPA!;=+eS{eTjwqR$;+&qYVyufsg|qNscHFx<2bm0O&QURKsGXun zN>N6d8reyrM$RCN6}t=4J2TzUaYy%j`?)nC6Twf1+z!PS~I*$qI#OGgv_g* z8tjWv2Bal$0hGfg*xCsVX-f=>v*3=X#Bf(|sf^6(ICO?8Y7bh-F1>wIs8a}q^A$5t zb;U(z+r%Bdb&C>8TH+qdWxwOkC2ijtq3Y~W}#9F^jwHTiNYq=#6f5l z@usviwl`%J(lb}<#JPk~M;c8I76^4&(^EXHo%01X)@8jIC-4VY)uP_2`r%YK)8m6*RcGW|Qw7`JLX&m^G7d>98ckcU+vP@U1X% z37)cbDOj023HK~t4jKpmo2y8!%1SG`B6J4}Mq@AI(8#@fOJRF)mj*lOmjZiXm;y(N zWKgtHd8x&VWbs0#pIw7&aL$PKZJgIlK}BMQr9`0t7*$udrwo-)WDf# ztKMNvsA+av;zY5YAdn?dkB3u7BhWG&hnm7Tv5*4WH-(}Jv-&9RLSoJ7=`Kc z8SI(MNafdi)#n-})7V;R9N6wt;ZX}&eX=}jH7TI;7~8|{hg_T~l_Wpz_0 zhT8KiI&7za6K$#~pzb=yz}8GPFW;4iy1kDyvYU*?;7l%;nTCob9hZidq@l>=)2J|u4MsW6= z;%-PlC;0BQ?dVV^VuF@%(28xh-L@18(2;bQ!nTvjpl**TO<=re?5OdUB*QcmuJoi^ z07|m8@)AzA2PYc^-G6u`!862g|Nq{@4>qJdjRcRErs#0n0ZMiTDoBoiKM;&QkoOC(B|RfWu7 zB9=~s$h4$v$ixN4nYh3>f!uJJK+F*Z1q}c=BB3NWqM-l`xt0S92gH;Z;AerI_v0rs(n01m=`!?UwecIrTeaX0qUnnxb{%7oeD%&h8 z^KAo7;39W8`6a>D*EV2FqJ@9(DY{tQC6U(%gld-lz zY&tUS3Da%r929!8VJLgJjn#7kfCdJoJ5W5T8rU4VvfC*{9_%vXl zhoy#?n|d8w+)e{;9pD(IEprZFMN`4oOX?558x^jUAJL^Q7>=7ur+M=_@zZ7 zK$Jv#Kl}fYFUzebOr>pBtWZggNEf*bp(J*upAF`I*^{F%Q!C803Nv-Qae`42lo#S9 zmb&$=0d?!qVRdt)Bbt1FOTjjVBttT2M%SMEcaA3waW64r0TpH zp>s~r1u?ZRQmzo3N|V=9ZBux#<&g$%l#ou5JC`ey%Phu7#>~qRY#URKs;es*GsbW+tLb&2QD3x# z->reUTrG+N*>Qu_Ue?hD?He|-ETk?;n7atZl#{!xN|1mlW@H+Q_5 zr+SD71@SG0ByOXNFOD76O5%xU*m7|YJHoKB6-5$bTf8?4^PV7{2iXR(aXlo?y}D

zOr=)>oD^kIx+2RGcx41zgdB~$I5-10%dHpNoq%W;xu$2B>p$jMmXnmZAgbFfkm(7b zLT!6vW4@Z#?3-=Y4jQ~I>>#`r>6VckfXf_MQ{ko0d>Apla>r(8Pa$z2xVgTGcSCiO z?BcUjT?(}CQx}*wR8=LhHK4Yox;>FylU$a=B~mFc^P#M~#U58#4*O{@YWA(%p1}*{ z?mXYz?SccoF+w%#Y1teFapAgnq~X~q1jb7lAu!!kidt9CyX|2kD>yrqq9p37aJjS~ zY%hiCbwQ=@axLuADbvhRT5YsbX=1k4L8mG@qchhi#J#Fe+w_IWoH;9#kOnrkaM@To zUNumcnkC7s+{5HHne-)e*6Y~1o!pqMYOk&3Wlao?_bfAc ze;OrVAkwbMwsJd57?H!V&DFgB5yBuG-cnDOOQEHuQ+R0^Z6c*5CBs~{#aFh8yHU7+ zqlwFzw4^HGDQXa+;Zcatb)zyL_gm!K-J6NT$#J~g-gHyN3a%$?;9O`ReaQ~#?p!&@ zl_GLspf5rcSkFuUsX)1%Nb&5(yuEKOwJ{&SET;9_jd|%$>npPvpN@q}&)&L1b=X!O z1n!3MDmKKr6__vfqA`ZZzKm|Gzg!T>2MR$t^@vX-!{YF4&SwVLspQLr$eeZ9m(`|b zr?GyLQyfw4BaF)7FRzb~YiYQ&9}^E3C7fl&tr9}Po!r^i*NGPOtV_eOkJ zj=fJ`8;cwPbOPvfq>-Kx^kXSN2#)52QE}sw5gJi2N??)pK_L{aElNI0DF#JY^<5l9 zkQY;JK_YMs$7X#MT%&nNgu|OHygB1yMtLNl5w3l4!pa_Bya)~7%mE+63yiU27pNiFY`4|my)n-M!58EAybL!G*46jdsM z32=;^ zSRIJ56W|y-ITXj}NqCH(96e+FB)ol)sZP-q-?o$-X7T>M&Y{^gJwt9`P7kg4Fli+l z<^iZ*Lv|AG+RyiU=a{X3vO{I!8-pozjGe3y1z%8*!tHCNHt`rQUUf*pRAk4%Xn7$C zN~1+<1uy*@@(l*JKOBoXew0tQKTN53I14O5*)ACB;kG0OsO;}`Zt<8m4=41snSpwJeoV{!b(Wl#UU;1hzi$e z23DF*IOEbe*!SbOSy`&FQ(G2Y+(4SbNNrhkrPt&Eu4P86yOHj#Hi5_w|MtAZv%o|FvTF6q_dA`$Wq$iwpHciBvPtNa`ltz%7@rO zacM+~?pU{J&vVmj3d~)OTnEHOvB`WnFUNgLEvrQ(KX0gxZQ!8`M^$n!q2tjas|5BGmx36{-5y zR-~$5%Zp11BCmCaapOeCr~0dQe7dCW%v%&CJC(1bq?o4ANGnRy=GsZP;* zo)=M)SQ**vNP^f&N{zo1Ac+!fRYb+)j*fI8xm_Z~sd6_sQ zszi{iLeyECBjmKmk3MI zU?MCrHY$2ymY^G(nr#c7Y zB~!~zEdhz7Op&SurC@Db-<#)t3*PW3TTZUYsOP5X1%z@302_SO)7s_2i)4$rkbHYp zX&?oWk!kWNNA!7aYjm51XOf zPhU0&g%I;pOta7h`YO8X`yl)S!mR~PRtP74GuM;G9jFby;{IXee_9BAtRU$rKCTnU^ z@`i9>twFZk-J(fDAzm!umWXhXq@m!(F7ojUC!mV}thW-dp|D4L3kPbdEL}B3lC?pm zM1H{FdmT)pRd_cf2LTsf%a<6DDWR;HM8hx<5(O(V4QLg5ypC3i z)`uFx0a0qqxf3_@qgGZ@NW{d_k?V-K;I=h_wIvF{>!U8R9E{8Hfhiq*G_LI!ZCJbY z+)%Kaunh&fWztaS*07>l_KoU>f<5WqpewQs1$#ApLt%eKnXOi@TK1rI12^Pb(z5%v z4P2IQeFvyDq}H%nBWjJRHAk&6wdSfdPpt#h3fG$&3cAjOJzhg~T?zk0=eMdmeyguz zTO}RaYUbEh9mm%7A#vD=gE(B0sdXUXt#JJZnv(kqG`o1c2cmcDJc8iYccA%bT?blF zl}8c0z;G0<=}GsiD-Krq(NIXQ&omSm@8bd8dc(0_0e&6E`eJS&YP9ZRgIp^Bcg=vy zPL^z_Yh7TjeQ~)K#^u@=muqEQuAOmNMPIXzRv01pbcqDjjwXZBhHesQ3#pSo z=XA7CezGUbQaZ^atJLH!h6Iy3n?Y*mfR56m2OuwE9SeJ;Xwqg=iUvG_Q)3|zJ2|s> zc2Z_tb~0vNc3xv$aTa#cWnpfzW!*`dPmGnepned+6HKOT)Wkf=Lei5b3rx+5JYqR; zFq)B{pB&j3!Kg2_cOnXBJPERR;pE2y;z^H(1oTG|@g&EGhm#u*D-~?vWX578CNUP0 z%qTf&u?X>G#d@PjiuDB(5bIA(N*JsC3<75~bHMFp47l7(0p^NP<4FeK2-Qz2kOq;W zmY77q+;%$PCJ)XVNT6`C;6h`;lA0Ve6x^hM?A&AkrbO=)Y3p(w zYu&Er6mC0I!LieJy#l3Y6;p^nVUdfWTtTATsLOV{qH#n%=UyVHi&(+Ybg!0K!qy}0o^yCy%*Z2mfyzJ4r zG(wnVOc`m^IHaRcO|MGG=#hr8hGWP ztn-cx%$(`Y4pTA(4%2AU-N7~m4sjeVh_4^;woRr^t6+rwCf*=&%LWd^%D51PH-M#u zTrh6}2R?3w_ODa4x3#r27udN^0=P0H37A?@0vT^13!%{c2e@Fnr)#z+QtyXO?H4z8 zcj2~p2@kF0{VD{!&(c@7y*4hmE6az<{c?%K1mI2!dYpQD#oqqqvL@HeT=#0GM+a8L z{dB2PjP})a@}j0RYlvt+#-0T0(bNQ{eaT5_b2t)SJ{gE2Gq-2haDrMBs*@WO?c|C# zj9^TglmHoX=DJH4#j8XxcN^_&f!JYc?lyLkg96s3lr$IFAmxtY=-3te{pc1&2@pit zjlzQ>(;9sKY$Q=lY9cLXrpsUVT+^*A6~wBFKVI*l_O`f%-KKQ_-$(N_C2n`tOJ1(X z6%QEYSgGst*3rH}+uGWct;J%(%hk{J^)*}UJ@^V+MCLiBWvqVcmV&%x=H0dRIi_6l z(w~hKyzgiI%#k{p;$V5zgmqNDkm}y7!XJMt*1omaQI~bQURYb;?UH*m>o779Gj z*e{%NI={d%(ZIv4`$Gfpyu6UXXJlotvDQ2@cZdsN=E+}_qOwOSn~qtaxL#<+EQ6y8dJC~Mrr2`*4SrX#ONEg z>wg97(J&9}ZbY5(MbpSrlu8RG5v+SybW-PX za6U+C$(JsU$hfXEXn5~Y=~LS~Iy_4&A{C3h8Y~z2$DxtWf2(H1eX~ZQwk8s?kvOF< z7t=~8I!g$e5r-g=!w_2v8)~6i4Azm|ew%*!)+Xt`jBVZ7X8FdiI;D|fCCeutL;Tm~ zT>9Y@qQZYW&xTc2Mpwr>zsi6(o61VmFav~`Mg!o;49k6Cl{^IpSOGD+)Oo=|zJDV) z0q+D2oPgS;@+9Ic8#fa(V-Pn1jd(Nxja8bM;e!-Hpcey?&qZdY#UdhQ>`(8Ws>|X<#%CN(NtN09R#2xuf_r-R~3r$Z8TBG8YaK?fwDiR@!!FF+Ewyu~xBOq&3wvy8^^WS#*yk!b*rNae z5-d{^7?D&uBvHNv1ZoKv5U3h+Ib;Y2%B_WCWmWDLhM7WH znO|CWA8cn>A}+oU#Z4wkQKH#c`4rq7?Rx?jRI7k*OLL9nXK7F*L!(vZG#R7=5=2lE z7?D6aB+cQ0fFUQRYNQF`CsU zz=>j&3(-QA3sHJVgv8o-2{^f-#B6Y(H*w0F*u&8!`s#BlfAVH`%k=%(Rx-l_On6mh z2vn}@wevu3@a=YReW}~wFJuYZeqGqFHCm6$((bj(g-Xd+O9L=V>s6UHPM1xyy%mJ8 z?6H6lzJ!zGTdlfU7{st}zZ@wy;pL-+V`km007DLr6I@u5N2!vG$ z3$($_#jzxY-43uIcV|lI<{OxC)EwX1o>Nr+Li)~K1nPUwd8yYz;tjFAAg}imQA*AN zCSQ+o?^OBAMf*DUXCsUiApW^az)dqsZx!Mgbm}T0)=#VJ8d+)5L$e&6h!S^h+0LD2 z^d(tY9;q0dBFvZ<_N)c_j0p(mxtlt&AvQo<~Rf|EkA_2+eHa6lX=J6K@m>0t5YAhX9Q!XCqiUj$0nAyU8;E%>~4|UkqJT3<_=d`X1GWV zq1DRUGICtho%c@#*w^2tIC`>|gxT?9)>xr)4&O1B8&u3#U*KuCcje0s>lG$;kLO-3 z*?$}Jc7YFJI1tC$tZUc>4v$5FI9(uvb#IW~1T#mzlv9w;BF>r7H)2quWrMsh7P(X? z%l82a+>M!&`pum%enJJ`N7%tORXtw`h=TxcyX_7WHAub{5C=^dzwHhZXk*D21L7b8 zNX~s;gpl?ih!{~`El5xq^SE7A?)0@6$BNDMs~lq~%p09EYfQcoJZ!w32(lMy%o=l6 z^!f9+eQnX?9#lEs?Gy>?ZE>GlRF7^L%KcaN_ylrXj+j}2Bn~UF#9@^;aadhV91|r6 zaYP4kqjR{?G2HDvj%}&vo=l3NF=}JJ zJvtPc3*0ggy1PQ<1Xng=^?r(U37B?kvn|NVLa7DQN zn3Z1kWe*qhb4`u^7MR|iXYbOD4z|chD>Q2PMMg~PlXiC^zp;l8593vx$fJj)&@%z? z-Al1wnoCqAdwZ7kxI6D^<4cSakQlLpH$6CI!bkXI&q~q(LhdODIQBLa^1a3Qe7!Kd(6G09v%fFVhfvAb@~`7(opvCbMD$FV8vF&wzob5pn8 zduRjYBCj9_-OnM$YV9k%P>Kmxt~kh-y7@ez z*Jr6t43=yZl~+LRi!gd#$(C0ps4QAIHCEfzdGvmx^sQd0%e&af(=A|5oE7`$m^qz8 zJysegGUpEV@;3+Uk(!de+7RbJN=DWFBnOkz2Vnoqo9@ zemZ-IBksG&vZ0rRbjX)BI0LYdnTy@|@)H;9Vcs$qj^|3vd201`^09!qe6$N|o?3p< z(TG5?+f>HJHFNDUB>${5&a-a*amxZCAEw~UBVU4*;|IDRG=yZ4Qwa9XXFl)1hCWU! zxjAM~(9N}BzG^Wya(kF`na#PfGA={_^hJ!;MICYscZ;D8t|bo=&`JaVtxpn=N`s|Z z+d(c(7BLfkpLYsu8z)FNu^8);>IpVeMa)S{22o_R4*g*x2WUfy_6`CPO&`F+UI@Tp zhXmjE(-7oHwgi++*<$%VN#q#; z&-szD=Ht_i`Q;17%s$YVpDZ@cta7X|Tik2RXU`h5@*Rp(?tkm&jd^3bG24Esp?z! z#AeDl+n5&)GiLaQ#&n!(%naK8oezz9aw}u@UQNq+#|g$fw}>&T?_$ha;D)Bj;p}q1 zF&C58d$WwWVP|80OW&pzh1+b`F9#~)_%tP^k2sOWf9GT z7ay&;yFqRLf5n={%q7jxytJ&wx#44D_WTX)NBO+j_4nRo%zpdC?lZ|t%<5~8Gh3c$ z%zec5X3ejRsriR78QLv#iH9cbB?#YRqA|Q7pQyD?~FNn#F)ECi`!yMj<5}(ot5arr+%PqAEyZ2_lG`XPNLpd^BhJR zt(zvpyl;2fe`d@Me^ht+|K7zF@=N;sZ~sn*!cUJI zv-!^O?y|-_wmZD+${?6$ARELSb`ZQ7$OD!E&A!JP^FMQ-?+=W5_c&u34ks@7AJ9kM z+&6)4F*au@9mT`T!q!7(51#*DMY1&!_Kc*Qr;-=O-I;4s@UE zg#W&j7_s^B56798i1TzK<%i!wGgPj>H-fi*MVVHNF*l?yyqQ72t`pGQ;1ZOJx?a4u zF(-UVeI_C!T|ReGw=Hfl=7FGXB%LbC`wVfOde4}D!y95Q{}3L6o}OAp{k6zqZ;oFI ze*4_};DHyYFZE8Ft7a*r|6j?Fk#p65?oa8fH8kBJc+8uo=irCA>ife*$U(|{4B>CX zn@6u}%tmz35jkk0fipq*>5Z#U)#^oN)V=NOlT8#OwFAnLvU)^VHG|ud{c?=iV zA?K@qlLlz=U}Fl<;srm}Hr;eg!-fad-t#YN|8M@+S|`R@oIaR(9__ueF>l>KKDEXS z(RZgWt@*4*T|(2gOiU}cI)485A;w(Km?@_5a<%>cNk@8@+PB`M_S^LNLD1Iehr!S2 z0Z$(eO+QUK$lv>Wjj8?Em`MZ1ocfG0??1q}Nlj%FAFXmSA-1Lh$ zj(2@R*CfG1*B{bGkI>IQzu1^hkX6^bhg@5C zoOxu3Hvdf1*~@kBZ)pQD&%MMrL|>eCj{4>Q>L-v}#Peol>RX`iz6S8ncOI&C8?tBS z#^cPFzk=^+p9AitZ+6hI%^VH;7-zaVenFdsW{kdg;(TL9PBG@foQ8ag{M!zinXrfY z|LJs@caD!^eo7y2OM8?vhyPfizu!mg58C1Pn`6umK2Y~pj8pFyVz_rbjBMG|H9_|c z9*R6;ygUy26|)!hyp6UIGy9ju?DhkAKj?3PpMS0Vt66#(XypZU-?<+;^?m9->=Wp3 zEn}wr1KCd_KZQ=Rs*}Hhu_fiZ=Zlcz&|GNtg|_aV zq>!hfyZc>V31rEp5EK4`J~r7b2@~Jq2Oyg>#?BBp~V-Pjal;?%1T>2cm#C2!Z`E!hT5Uq-fqkn!oZmQs@1;aNbsPEv$sSJj55B@ zQ~18n*jbJSe;Cl7hBBVbhVJS6Jpml#+SZ4K_R`d8t+VJa`tX-CnQJUR&g=!f7q2nq zBg(kl8t6b*F*d@Nz0jnXB7J)U<+=;_>Q5@{>Ivv8_?uraW<};lXE{DSY71i)JA-;s z?kl0e!;!5kljfywP#@@SkTh>6pKskfqUkhEFZ_R>w7zux_~OADa_X6CAG!}Z;~?`z z`rx0(p*uZ+o3=Uq6UOfYC=>p)srWbzQGatk`kbTBB@ac%U#~o#hyI>6x^Yo>>ssa= zd92vp@I7_kx-oO; zlq|i3daU^r<0bs`>6P$=R1UKiWmyIpe=v1<4EmY+j>5zL%Lf<-FEnQ0I>z~17#j|O zCQmZvwGPIL@yLx;#+jc&2Zz94>o28zFztNG`!wU^L-0vEW7SV6`)HV|x({ORy593K zyy{=ZEPDZEMYf1p)Y0blyC}}1m#O`F*k<&Bm;=X+Gq=CbJZuYev=xoHY!74}efBAG z;v|yWm^PS4|6K&VUd-G)G`qvMe}#9%TtvU!0UfP!zcI_xubZyG9P9+5 zAUDOFekx<)F!O)<_qqis)0!WZUS^+t3Y+T*JAlkLAx7vtSy)R!^nPUL(iZ7k*+>K>Zwp})}dIK1X} z6?))b)xMkd`P%ixg&(2ce}?{BAIIE|dKzf#He}B$(CDS~-Dc4ExwPFr8&bcck(u;~ zm=zqaio0$Qx$fF+=vaZoX6NOZNBtiCpL&S-(+?>BPVhyg`sIH$+Hq(4d)M<~*zw5Q zZ+1kt*#LcOU2qta-u#;}Kca5^t0Et=jDf#Gf4PYDChYs+(aqLouCNmDYoJZihs?~{ z@ZeSO@S%T3H~ZR{n|OZW#@fci7+=59JpcSwocDrUf2Mslrfu$g75T6OYhCM%GpBrk z{2`y;o{iTzts#yP)0MnlhQ!XtbA+n8Sk^A5qBv`vhk zc5V6rIvsTDP4&;bOYJR5a|gzky?2S>Td&0$3p%|wOF&{@vB|*{qW_aNGv0FNy+xyXPD?b(cz3Vb)ElYcg z`8DnK*#BwotmCq3w!VL1cXuK-Dt2?*iY@l7VvveblD1%BVIU?3cA|*gVt037w<31S z^BrgJv-fog_c^@p`RjRHpU-bk?8!B2tywesLMO|3`;;;iPm5ICr=!z)vdp2S22Ro9 zB4)LKyD!~+_!jJipnwC+J;-2)ME<8U--3e-hA%^~?K+vs!@3B{{t+8;N5=Kftob<0 zZb0uI;k%%d@r?gt34Mv*$(c#rBJ$b zYRq7$bW@9)#?I^3NPTxZf_}GiuM(%`Bp$Z8%bd8MZQMn^43;kT3I?T9$h|_TWs&zOC+lPrR=&3x7GSaeE^FpJ;GqWC2|f zWSv5W>hqQ-c4sku6Y?+)xw2dj-wxtaui)-P$E%i%Nl=Am_;WgY-X&V*i)VLiR{f1y zTErflk?A9>-$9_Kp{)Dub_3 z{#htGSrD1%gzl(x{42iIU!1S-Ir72hf~?*8Q}XTZ5Ve#RdVbU5BDUBTALuT+z)p7dz1plhX7}r^1WiU9=*X7Sze)n?dyi!li{XR;K8HfGh!#|O^3E$=(mZdAT zmf_PVdG|#oTd@wV6A7A=bM2Gb{5_}GW;%g z?^r*TZY`Iw_liBSo20(MJ`R@gaC^?&=%k)(NH_RtFpNLS9m;h47wlaGZQSdQPlBH? zP${3vU8~gy{SZ{)CHpJuTQ`@%u&Ai^Uc{WR>6NCiUg+jy`nB%Io`YRb$*n)K&-?@x zV2|q;Bjfv~%Fy)Lb}?(rzVg&fdou!==$HZ7#~$d(pL{)iEhSS!l8^!MHY&Bj&^Z+O zFNU8t3>!e$1^IOcr(3}jc;v0z3FzAv@v4gb*oVDu4nN+sH!e{;UP~9IT|uw+{|XG( z?#NI)w_jmTAH?2T8#~T-LP3++vjt7tX)xHQz%JP0haEsahsyj`{^)Bj8E=-B`wL|1 zuwpwxDLW26M@9mCp)2fROX;H<=cT;S$W?tThlEX;Oq+)%I(L%|kxh(a#R-<}LbPh)#TGZsEvHZFFb_`(GZ$oD#bgeGWUl1%EP%^=Djl zxChI!gt6YlpJHEXr~7VYK8y7X`5r?znrJNSQ^Zpzfq=JAqOh8@Ka-2*b`YfOMin>a$bLhJg|ml5%>;? z_%1!_BcJ0rb5kc_E;_dYTal5o2YZi7TNR)DeIPdA7T=dxkBWrvSf{(nTt(R}yl?!G z_K=eshd2jj7P;Kp+9EH@*kb~JC4W8ahiP#UE1JhRy_+!$>g>*4d|4S6&&SxiSLU1> zzTi8~mifM{e=`#q?i|Zq3G!p0Ob~Zh1z4+>$mT58^o29)#QNXFe(lE}%h8r|x8hqk z5e`7Vzw6EgWAIZ{DpY{jApDhf%s;=(-TI96x-a8XpQ|PD``M3j+jGA_UxJ1=<&I;M zjEiSjKN){pUWV^)$j}Vgo770gr!kJZ=*Um*w_=%dC@>(uD!E_hj)C%F*=0`Ub27}K ze8*JFSvKJt{$O-4QqAFf@55bzn@k@Vr{(Koxv&pibo^J}UH9UA3m@uyXQIE;AopyCQEU zHeIFWiu}BIz_?m+UYxGJk)aRrcMcwD$$~zf%jj>%=xyMIM_5qVL#-Q>;s^^6+4U`WnXZ1p2o)Vw@*Z&8IM~zMOezeH0@(>$iO0mpgE9-FzJH7ZIc9Z!B4a7$5!4?IP zmzQ%dbEx=}eaZuUsK9-prNOWXxme9Q+_vDG6g;iUJ-r}@?OG3aOJLjHaKFpAPR+so zY(n=!wD+d5Pcuw&{yCkAz0k&+Zv#Ha)h_mz%)}YtGoaxqqY1Y~5LNmZGPXuw!c!Kk$(lO=QqMT_3qAQy$Zm-&HS9Uxm~wDmd=eY(BlB7yUxIQVJ9~=Axc*tX0pElok-@?G zTp8c5@JXan&HVj+ml5oj>DafoBG>TR9AAFHX02Q|*1R?2IoXqM52@KtqTwU!)H{K- zVcrYgvfiQmUea5uqsH!c;~p3NanFJ6z}DRP$nQpx!}zoK6!>1ucB2dl6 zu5xb?QBq5*v2N3`S(fZi?ERM6u*<8_M?XS%;Z}@wK?Y|QM|Z;D)qe8e*@e#dCEQb$ zLoN<-W)(Da9CEGm!G2{bkErD`vX!+T{Y}Oj>3A)2B9KEnTkc)q>#VAri8pZ8ZYj%t zn#S*8?{JowEYsq-1{r1Q8MeTl_tvem%uW1R@tVx{LbgrG ztd?<3ffO1Z(SC%AyDw+LI*t_C`>9eL>t z-&w;c%;R2j?1C3_IfP7HL4R1QHJ~8vdfdmZxuKuzvr|LZQ{uVDir`Lw@_%8UmrI&+R#P_3*p6nO2yci45rg`A2A`4H^gK25B_9mUz;{OzzjgH*R z$NBj#`h1fvSzAFLvyi_^#?@zz!)i>1&lpeP9o$jCH@Q^b_6a4&<_yybG53-p37JJ-L?pogB2V}wq z;>;N>Iswd%3ToBmpf3AAziolKiglVM+T_S3@fAy}qIA*+I-8AoE&7ab3( zz}*dV&dnSj)ZqO5?e~(+`XTGe{#tY@cbM?xkUjh5Os(t?#yW11mKL#rtj*&}_|lpA zEkHbayA*z|eREyW+3sYsqo4ysWz&*=&P+)PoZO*(tW^)@XgM7Vo-Gi;LLsHpXdvDquD`$p2zK^h%$f+yz~|J2>g7u#S;<;P+#hG@Azn#p*=8SZSuWZd(B z_Ff-*QVcs4ivLP~dJ01BQr)NTY@9D`xho4mzP*rP_UE{g>;-15vC`&g=4?u>7GS$l zX}Rx_FF{*bQ(J%fLmuMU+stRMcedv{KlbP?`&953d}ZB!9A!pFP%3QcD#jvc4l+@l zdA+)bEzHlEA092>cL3*}$@eclAWx(l|HWO56*A^3^COU#5p}VNMe#MzgYVZE4}Ge1 zb)FhSHg)%KS}t~d8S?0;<@{ArjxXl5mX}y;HoTjoyZ19K^Mf^>gso1e%u)Y7A&|2$ zYy1eE@XMvW`C3uNvvFoAtn?r5A@i2zX3xti<3}oRW@^XW;ZG^-d;t7%z&4ey!@XBt zd@pQd8poH?0b|0D5(+}1_P~;xYlDt1l z`)-S6p8lDMbrRGkHQ&G!WL!L3uulJuN*y*X5gCu4PG1>0>sDudI#lA0)WNt+H{`Jz z_C}>P=doSX6J(F>wqw63GYlD_|It6OnY80uTCTMyvzq!nn7g1)Wn`FXf()-NkfHwB z5V}c?&Hb^xOW2*A#GHGI) zMTzZec&x`aG{@#4JE6$fv%>iMk$lIx%D%o0KbUc*Wv$vV4hwkyK8=~-C~Fe7ob|a$ z2#*q@f;yip3cFj=q+HAk+U%>vf0^A*|lz)`hb4~ijU&l%r4`KCSo?^E5_ z)bit4A3^&qWhkEg6k9IhZHHrv=<_mmVOV4Kw>=~krITJd3N%66^)`Z`zfqjUqv5CFN z4%s?t^8GPA_IwY#zS{$y!-IwQv>rMk`=&IWKAs-Za$lggG0`$T_b&TgEZ=HQA|vqq zMGEfKZnLkm)*F=HZv^P>sHS>ikM7`S!8esE=H+k7lGw+B(S^A0_`(<2V-yixN*`<4 z&l_V;Rf>kcyJxAX-$SP##(7Z|#_3e-V;$h1O53NYG5D*KF*P?^oEp=@uDW|6Mmbw##W>2iP4p@_%q1$2b1?#;LWV8_#_Lsuf3|(46BHJ%%Y|B zvF$UE(_=EHsP5k74QruN<%8@2IzC*@$zF`?AYumz*Bhd)2z53xt8)NnI*E$6tOMJ|HT z=^Pc{*>2{Q2j4p!JEQO|A%uNPtEN^r3g3OjCc-;wbVQ{*j7w05wD=_U*hb3eX-O-_ z%bboDz*f~pzo_2{T}ZVOS-*r%z^4@@urb)BM{n4_kdKPYBTpO7DpstW6QHIOqjw&MOE<_bRr-A&D&fo#Sy ze)BZwF?_v~o^kfU@5qG?RHaVBucC&+*pZknoDKT2juY93k;kdX{IR9jDKE~X#EWBt zQ(^>XicI|~n8?G0@lICk!1Rv9&b2j54~4?O2T z7)q3!FUss&!)0iL?EO0$z?yGxrTrSRWHZ+1bZ&S~o;h=?KMXlVcIr8>FK@*kC(Oy( z70AwSgPHeR%5`Jz=RCEZDoxYkBK9T^XU4i(UY0ZTsayLp$aLOCoa^b=As+wBjqhvl z>gWww$GR(Pt;mhm3j6+Z)({@8Si=1lI$)2iA3T5$48JPf;ocm6(dm zCHQsSUs8|#T_w*G{0<4e6@12BU?=ooD*gxQ7rW7`OzcVUBFAg)4VAN%sJCY=r--3qOV&A$IHWihq#uIIjIN zng2Kp`DuawJR128VXpnys~NwZmiWUjgVbx0UmAJZjy$(dfo$|ahMHglpYg460r7g+ zdd8Vjx8EN&;a8K!?6H9~1PwjJeZgV&jw>=Po|E3ocsTmf<+PUHU$>@39Ay45?#HK} zp}&bTy$>J$USIYa7w)~#mt0lwA(eZJuJCCwYpKpvcvNB$< z8h>jMzB#`@s98rnr7VuUEQ8HLhh12{vs<*cXPM{h z&g^m7dDnq^G39rYS_#%XTBcleYanv&FK5hgTFIC+T09V)nT!2)D#t!|9~+8{)J18rDs$I`xT4-#*}u~T}gYBIM5^YKs8vgV3hh_Yp|3!~oR|FCAqr=vSR zWDAYm^eq|3^O*GeF;cz{8fjckODECesu|wXR_nAlFC)sW> zcwl(Wnv(X-CiA|(VjrZer80&u$kiHbe}82i)DfjXkKS~^Mhs*>r5y)sQH0_vsAb~V za|TyXQ!?~f%9uBEcg&d6tmAHhx##N2*g0#L}zAg~i ze=6hN*h6nizUe4(bN(LuqK`Oa#FW|<;Ota~{TQ3r^Bngw$gwr!cV2{U_T*dEOwI$d zxYyf9d(6$0dhgJ3+_Arc>=*5@BgHHxAvy3&{VST{n(Or*ytm}nNOfB>l&%G@d=rVTaLb5 zlX=CDYVSnsGjgp`SeNV->MzW5*nO9=;`K)nnp*{HY z*t6x~eE(H!_|nW;nR&Ol>tc*f=YfOlN%DJ(W}H&SV~qv1x9b2@x8ave#SuKSwD>4_^44)AmewZXnYXifuAxlT*z> zKjD9!wCH=RmM3EUb7T9D8RvCijOl5w4rdlqdj5k@;md} zgG1Q+F}nHJn8)6phkF|I_Sy;jikjHh_rIzd%!bNPJOde%o|=5X2EZFV)k|XC*Wov0 z|HK)pF6V)7S`9z!+$ZLzQeODBTIjhSK50XlYujFZE5i&e_`3|wUN$DUN+lR>S77Av!l^OSOy?urbYP;9JLLdI5IWY5Gl>1lJgOzlO_ zCf(q^2-zHsY#cqLFNJ+){gNWTj@VAttUq=^(5~9}4sB$-A^cLQ>l_(-XU^Ya=zbTO zGMMuKbA9g5cMaroSWoOYqL79%d(X={KFCIO7?*dEVry!exzM0th^~jhYb4A8yu3!&i%`!8lOvLvf*ZXhb@6_S9 z59rX&R`^Y{H#`-3^O3zD-Y;bBPa`iXg<#86`oTD(jxs)E{1xR@D$Z{f zvhK=xCxkw^W1Y%;RO-q8)2uyv!Y=N)wqXy3V6Q3nEfn96x&1)b`+Y%Xbl(F--D1qw zPp3C(dm>DOeH}aqAK{A3{XQLD){}7yos9gLE%Tn!hf41f)R=L&k9F;oojvV7`hS?Q z#>n?`7^k4UAhtgK!pvVuL$n8FN67fvsWLQu`XEbX(5?LF$3FI^E1Z@0<;SN)mL9@` zLv64Vyx$bS8RIkGPp}CYvv3!JJYPdrt|Jp>>@mThIehc;ls$YY&bhx6wxgwSkH;x< zn=yH<h-Av-txSuVGSKqhyyx6q3$ zY0!~x*edLgo+{7e-V>X$4!(A%i$8jv`e)cHXw#Iwy<_b%a$i)$_>Bj=N%tKcK__e~ z%6Gkym*Az`F&&d>Pu9At6}p5RsI+k+<4Fte;agGo-RLE6cFMO?^T}{iZnZS$yGR)? zfiC1s$$nWBA1e$Wfpt9n26?&wACR9&#cx$>+A$xmEX*IBx+?n6kqvw86a27w4YbU2 z>=%LM*sI}HmL}LrWZMxLn1}8}mF29KfqNTtxm*deUzK`KU_6SR^kY1N>cLMv)nm=# z*UOxH+Y2|V?KKNhWzyz!~HPp{1!f?cjvnV>!{N7R;)kc>!i%_8~oYxgmTQM z8Fd%dKqpC0oQAzCt=2-v$Zw7fwt~+GveNzs_Andv0QwmSCSg~%Dsvvg`!&e*ARU%Y-Uq7C5uYdiG9)m|$rVs&V1veK6E8~myT{2d8$wOje^oBF=TUotil z`FV=2{5!g|R+hMi-4>K{H!}1|=Bdv@>tt->KJK9XST9?d9)mu9x9EF}ecp&xeG*0$KWv_sWa zjKiWUI3LBzyddNI`x9x|lRiAm+WnNEe{@%&~_ADE8JwA}R@8P`0 zzVK48BISWD_^(BdvAHUZV!uw=ld~kU(S?4F+*IGlu-1O$F%|m|bAHzs-|}y^qF`** zAZ($cFW$M}G5n33!#5>-KtW5fJ2$bJS8x4F8osr`Z-5_my|K4XIdhkwy*l`g7Wkrs zVXSFR^k$t>Ues!b&ZWkl3wojGb=lsfQ?Dz2Hrr-0_ zoWesn19BGahFqM}+0hJ%@L1HD8Ku_zJv3)N*LR{{%6!xk!>eLT2Ou+yf9WuMDmQ*- z$G&jC3FlJex7&TSB))HF{H?isBgn=b5aE`etevhs+jLsl#jvWZSYyWRpev)6_)?y| zT=yNPG5RjZp*_D5`yxxN%7G6tm~$esXve-09EUvQR|3E(h?Dmhuf28TgxW zv&*q|tYuU~*6lTS14k)`yqvPf?-_}16y>*Njj$=-(P#F*Mfqhv>T`UAjP+vv>yG2s zp`V$RGqzerA6~YWsReEM#@m{`ZXmv7ZkcyABjZ@c-#V~Xt8?mW;hPo1SHhO2@nNrJ zzUk`A_o*+T-;8;cBQ_|&xQay;^FDd((yC8f=8}uS%KDNAj7IrN)dSl&J zww99fhD!Bnb1oXCrnqPCq{S_fIh7vc%iQZJQ;!OAzEkEca;)I}u*>{5p)7ax=uhwF z><8%h#W=n%3`M_&@D7=*$e3%z^9>B0>3trZV@&pnJ$5ZD+wL&~{Z!6D?sXY=TX?DH zyoIGK^H0yStl#JL+za8u^`9q87Pc_1(Ww#VgdFTCG5D|L`CW7{ceS}>nd*%9Gkw-6 z!(PXHOz9-@u2T3(_84VsYF?o*WH?k!8HZgJJF-?8m**wj`v+RQl8OJRy}`~P>%HLd zW9GEG4I%4w=@2$FgtIifwLr!O!rXk(4{;Pnq!juF2BfITO~jAPt_#xib| zMlL{JHp`SXWBN~MJ8cyyjqg>=xb#3|z?r^n_Oky>hX-%4J^kQO9_&tfYzneC!W_VpD_{Jk-p8nZ!8UB$kbHz5OT6}}rW4<~{A6B2a~VdU%Ywp6u&3L~ zc+E`QPu1i*402HnnY~wtabg#rN67c;^8sTJG?_g_rO=Js4_M>3VaMt%;mi%6LhGn+ zSu1#ZiS^H(O6Ga8hJyMvm7)Hbvyx05nv7l`d$Ed5o{yfCNB%M}#=g(s!3OS&ELnTb z3+6$byP4Aw-JTp@g8R1s+R}}~g0F&q9 z{>HB^fe+5TK`6Y9fCoX?ijD8En~bOP3E6f_*8Z;o*g-dRCKQ|d6Faw)ap}(WwULL! z$Qzz)>CS!*kNsk?;VEUQ&&Yh^rTG2uThN&H+#lKT+mD9$k(AGY+?8W&nP@jZJXPu1 z5E)xbdx=rs&G;$EMM2K&XW(O$KeEew?s=iht@(CP6j)bd2^ zZ4^9Z4As+frkI0F@8|9~GxsM~7z?r#eH-7^7JW*?IFZq>I@^%C8fPf#Mkw|#a|7%* zyvp^4GeJ!nKf@l}lQRnX_(Rbqapr1Kps6G#Ebx8 zJ9^9bAj+uJdLZ*){QJyhPW4MNeA1CU1)H>e9=87gHvW@ZBk{2EGVTQNCz@glGH&2| z6*A+542_M)j;a-~cXr=JuVHUn;O*3vc1GY|3^lR<~u_00O(M!q| zTY!8vLQamL8?@D{Gj}34`JMD;^2!11%IQG%PV7l#?AH1cX206G@f?{&K29SSt#%^c z@UPQK>>l!AfxO4UtB3S;3>n!x_E(i(4~x8%p>IL`(HTKmBW1W3Ilag{+dM$F7^5BQ z96@+p>2ppXV@58lmG&AU|6Q1SG`y|;M7E(mr)5xMGQ7<^=bCdSK`sTQbL37B9u*8g zr{d7VrPy!!SE-3oPECt&{BA83z8+gW1zzfGp!OCWxr6Txe@9d9MlWRV5Vo9kT;vLW zu@|oJ;O0K`7XCEmUZL}C{FgxPZB`i!=E!z+MNdOUApiByz0}y3F6bEb1?@(!-okg4 zBC#3YXYd`IwX;J9(+^VLu;-w!KjPR^Sic9H4aU=!pvT!{sDBn#nV3Xn7bx?dQ)0oT;^ni$KF4fa*oQYJFATkH!g2)!QY4~et&A_G%BrpA0Lfumc%!K zCweM6UZ%p3{nyxvtM3`Z60Jl*@}8%X>CNe7IIV^ZucK2*(R}nkkOh4Xq`l>_-1mTq z)$xBOARCj|Q#_HI6r3-W@$RPGps$?s%?iM4H{|#uXBBJw!1~C)@*4|LFKr-ub9?siv9gsc@GTqi(>q3{#WOv2;2~?< z_Y-$?MX`IM;cY|aG!Hon`%!5yZ+~;PkCc&>Y)PK$Ql9fu|C93LM(&Cwz zf7C1XgxUBt)3GZl%?t_1^CftA__J0{#AfWm<|w?bc8arO7wvtlJG}PO(jqo}2Q~w} z{6c%1(A&~Vd-v{g##n@pXEMJ;AM4PWJ%0h`YjpRguPisXs0?o{li||2j0;<-QbKDP%l=e`dseD% zWH=0+i7juOCsNbz{GQhxIq(fYE?JX?Bhddk@WU2gh#pcqJbh=) zFLSSksc*G#%?=qaT@G8kA0HWgh_1)|A@<0WK5?f0{~_-NT5VU_8Zksmi`Z3cmmq)E z-jr6EYkk{#%D3B)&oQ*q7n`qAb}#n0w=&hjl0BZev_u|yB0~rIa<(C^k~i{Lbt&hl zUaZX){4(}rYvgm%Q0zxz&d0&nGi31I0rr*c+!3ZDj;*cgho3nD|9uv}fmOyl=N4x| z+6ZJHe4v~?d^s<6kCDAKMP9O^pQiMh{;#2TGwA2Y7xon5d$1X|@8jX{LpH( z+a=>u(8Gn4D?ylUzsy@rAA(A;r(`=J zuoZWz*q*8j*;hMo-@-aw7@(CCu}L48`!LRn>~mEaN9B+5{gOvA%oriVvaI>pCo=xx zoD9Wtvf_t}xHEp!MA}J=+Qb{@wyCG3qm?<$XB?TYYx(-vxiMNQlXCxFCR*lY*U9d& ze%xU(4r|4SbDW~pD>0RO#QdC**mDH=-;-e=yxT*+@#pb_r{PB<>;8|iU&zX1Gc&^! z&LAuCC%l+jzR9xAB1PxRqmy2&*QZmQ%Ua5J;_22}izgMEw4O87M($o0;p4<{zlTf@ z$<3MTIs43Kt=9GxtdFafwu4W4@*%y0ah*gT>nMAHc%S{Gz7+nI&VE>YMJABZnXJo8 z#*r8`)9rEhkt2I->D8miDf(goZ#u)#?d<65={-2W-q*38zUhjNb?m&n zJ^OmwyZhMn_3?D9T*=PY)6cP=ud|P@7PE3pqLR6btDCcrox7`}x2KP%i?6xAtB;?( zo4Jp#pOdSnd2OpocK(ibt{#qVeooGIjM3H8Dyab^uPsOKUlaZ>wdP~*_Frnr(bLJ< z-oxH)u#c;cosXxVw#liyS;Beb!<{W{w3H#`h=vrqA35$)Re}>+u7O8)yG#3!{6E4hcz(Oro>d> zUjpltv{?L0Uv!0gyW6{ZsAHAm_&3e>7CPbKn7lfUo*pi)eUn$m%gx@`#nU@!k@;;t z4$ggDJ$egy{?B`Ibo2Ca{^vT$Q*+pZY$iE?WH*L^O|r4yIN;;t*4y6K6YG}DI>PuR zuZpv`x2Jb9t9UrM+9y-m-2Hr=2PLl?-+tcC_D)IGN!|*u*El-+ByDOET>|d_Pp@QF zarE*NdYT%9>F1NoDfRap?Bna|I3Ri48|denOn$q0 z+B^9qR}wq}oRg{azOL@ct)lFE$zy=GGoBo~W%6p_nR?kLlX1V?O}eRtf7}aj*I{Ut zzGH0nQwa&yqs2cb#=)0N&cKHGq{R8l8{j${xF<1W0^%Q;szCTD4Tp6?Gs=lGSIP|3 zC2R{sL-rg1D-z}f6g9M_-8_WikI709mIgFs@FQJ{@En!IU5amNE?o%gCoQZ$^ z@mP66@gq?y!fNzim2e5~xuY<6Q?D@L4C<9596-Od2`>}YB@{#v!zB96O1PMOaj)S- zeKF_Rv|EXA74xwmOh;kPsD_4=&q7$5d~?Fvj58;pSPz;oG-AFb3F+2A5yK7Y6(y_> zXwvWwa8@?ldMVaX*HX}&rADlhEcD)Qq<$KT<{ zCn)Iw+D?N4-y-h>x-7nn=0Jzt$g4$o4W(UAxj^b=!0?DaoD`SMmr9`jjj^35cX|3N zgcA3m%m|F>{nA{JQMU`&OrH+4`4YURUKIT?EW;}5{p7u{6ODOym;8I+K6n6T0)B&K z;O_L-_{HCbh;MX!>otgbH@@K-#67$C?SS}g8~3XQ?!OJcqfIC0_5oK%* z5OXUD#5eWQpbRJrEI~O?9#jBUU>5z)26Mn%Fb{+Su@(!!La+!#fW<)A-K9YMfy8pK z0;~k9z-q7ttOe^pBv=nN0Kt!qAR24}o52>a6>J0B!49w!>;k*N91I~hT;5@hhE&{PnT?SXcRd5Yl2RFb?a0}c9vEUAv z%9>6GpOTjX*9IOB59|jq-~c!X4uQkq2sjFkf#X2v!%1)o zoCasWS#S=V2N%Faa0y%nSHM+p4O|B|z)f%qhQ(SI*=Y@02x6hkQrnFSwS|C9pnJwkI{31+#nCg3-W>dpa3Wc3W36)2q+57K`~$f zih~lMBq#++1K|^t1(u*3C=V(CD^L+s0+m4(P!&`I)j_AV@ z3-ktkfIV;kj=%{x0~gR2^aHM-KNtYqfIIL2p1=zX1m3_0_yRxR4+6j-Fc=I0L%}dG z9E<=XK_CbMqrhk|28;#cKrk2&CV+`x5||7^z!WeQOas$FD3}4}B2)FSne{;fAbi9| zpebkuY(R6+0<;9JKx@zjv<2;eEocuqfR3OO=nT4muHbLb4Ri-RfF0-wdV$`c53mPf zuWjW5GBO490^AU?LFbgUKKSOaW8D zG%y{6f*BwT%mlN*Y%mAR1@k~Sm=6|!uFU6e&<%74J%AnP33`FvpbxMI)4(h+8-yWa z3#q>dM1aL$30Ml2f#qNYSP52v)nE-+3)X>1upVpxQD7s82AjZUumx-d+rW0P1MCF5 zz;3Vy>;?P4eh>o=fP>%=I1G+}qu>}g4o-lR;1oCw&VaMv95@dyfQ#S~xD2jw>(t>m#J;(quf=nPY$O5v0Y#=+x0dj&| zAUDVZ@`8LIKPUhSfas)HJ!Ca48!gF2utum*pDdZ0dN02+cupfP9ynu2D)1~dmPKugdHv<7WJThI>J zg7%;T=m*l6vwBfAov@Us)+h1CUS-~RlYb$3h#?KR8H-KkY(MWjBDvS8_1WAZ8J{_fP&R8VOQ#YglIjlh4% zS`g0Ra;}>1$G}Rk3Oo*;0MCFY!BgOA!1UXBU(Iz*Sbm7Q{Ycbs1e(ntpHY)A4Q7Dr zu(`r)`ct7)W9f}ir1(P;nLpye?*4w?(*5Zt>dHJHnBubB0$(B$Vu zCv#SVIVz;TqE^#kMogbMVtTobniG6?A(N{g37XCMy$SxZ0ojV=n6qKzfqbUyOVkFx zRyzm%<{a0{rp5BVggoad%|}IeVeyrH`tq0Gmd%UgyQ7c~aQB%$AZq{Or*`VQu6x3( zrnL~f0A2(yfpy?zupYbu-Uj+jg6jrQ1U7<0;C1i@*bKISH^El04QvO+pai@HN#Aq<)SjbHJ$&T%PSW#H+e7tleoBP?S2i!DpZ^zz$kLeS!-kps z>yV)f8Ty!uK_u0h6eq_P{GZ|#XK+6JHCFG>!C&i-{O%BZdy!xumb-ja;D2-BuNceu z|IGetrUpzWtAI3Z*vb;uC-~>N_xX;$#;Z_^0Mt!C6Rbj7{l*yge(qYR8$$;5KVhoz zx6=JKbgLbChI!gfYsn@({|Mx&b-8ktPWEGw-Ik~0?d~6>41r`1W*np`=NT8xRhOL$ zrXok0TmP;w-ik>2W8b(C{nuLQUYg0jk)B+HtK!g;p)CxW@j0z=3@>Lr02E~5WY61QHRmGaW?*2KY`Z4Y&z@|t&#c5Lf+DNN@ zJIeBW9oEB*u>v>^FlLWkvy9ng`AqO#PSltp!c3wuWkjVZuI2d2VxFbYsuZPK+d@yv zc-Fvu6)h@=Pm{>nK;2b*YbV-0lW&t4*;k6*D+3*|Yj793kSWDXewla5KgCyL z>dQasf8%s>m(7xL)u^~PmJn-q(PKq;%Cjd!AD_e)N?6_N?0hS}uA@~aeM(!NGR&ow zCB63KB8N100$VP};v2{_EBKa;*V%H?T6-COUA~~!KC7iv%BL2ju>4YfsZYvgt-Nj# zbUb0qb>6hl?8W&Jt%F01xmI4ShJm-ydKXX9KY3#%j=uW$8f_2C>q944PsO#v#xR}J zJ~!}dagl%Ud)c4tS!=p4|ET^S#M5+I-UIZxA88I)kEDod7#*FD#9#S@_Cy!LzsdT( zejDj1p6iK>d_A?w>Eej-w|vE06xY^0(^`04K@&7PqgD3mUt3}>5x)!}r*`pz^MJ+Z zqd({DQfA7dKCZK?jLW8?*>Es#r|5x?{kXiNi$1$Ju$_0;vwL_ZGG=FZUkN@e*kx;5 zlD9{Bmhi@4q?N1sNIrX1vyEQ%x)FNTiG6nCA;fuzPmsUf5AIqo~w-(k-#h}teWrg!aU<-+VYT)bkU*qC0ogvLf?0@GRe;wha zpM>#m9RD(p{J@?6+2GGJ{%e81+yAzSiV~Pwj?PkSO(>B`Qm&??)TY8FH`UZuV$8)n zOH$JFay}`bR7hJH9LALgdpKWs?BV36_i(~7-ii$^-Nwo!%A>_JdRQ}8Xgf1#oXpt? z#yNO7S8Hi(CTL`<7^?uqjH9-U${E!%KJ|8_t9ZK8j8EJk)sa zAjzB6B8qlX6y>Cd=X$8qzLD18?76UZD(@}D4PExNab`TKD0?v{koRIGt+~>4TB8=4 z`1AlOM^>G3MV*(atTS?56^E%T(wVtyr?YdFb#Ct3sVv$6RHt_p0nuilI_)tzAFK0n z)ybdf++3uyaMkI$2Z)-1>SUSn4=2Dmpt@~9enT`4RHw7}%RqD$s7}%HO^^gX0@W!$ z{uL;4xdT*}0M~%%ci_8r*dIi`mO8@wXWz&A%fT#p^#29Pt^H#C4?$E3RHwZMXDRQ7 xbzF$sgRwlzRqaIDPto}H0@cYb-JA_()QOjJEw$4g$9f>rnz+#MvM-2y{SQzN;EDhM literal 0 HcmV?d00001 diff --git a/touchTest/touchTest2/touchTest2/SDL.dll b/touchTest/touchTest2/touchTest2/SDL.dll new file mode 100644 index 0000000000000000000000000000000000000000..73ca7fdd1ad99097d304f61a6c96108dfc9af1db GIT binary patch literal 1126912 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

uKCLO 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%0D*b&{dcu$NHI9Pmv*6E~ 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