Mercurial > sdl-ios-xcode
changeset 4662:3c4e0130c9b1
Added alternative finger tracking method. Still prefer IPHONE_TOUCH_EFFICIENT_DANGEROUS.
author | Jim Grandpre <jim.tla@gmail.com> |
---|---|
date | Tue, 13 Jul 2010 18:31:09 -0400 |
parents | 03dcb795c583 |
children | 56a2d70de945 317a151b79ad |
files | VisualC/SDL/SDL_VS2005.vcproj VisualC/SDLmain/SDLmain_VS2005.vcproj include/SDL_events.h src/video/uikit/SDL_uikitview.h src/video/uikit/SDL_uikitview.m touchTest/gestureSDLTest.c touchTest/touchPong touchTest/touchSimp touchTest/touchSimp.c touchTest/touchTest.c |
diffstat | 10 files changed, 122 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/VisualC/SDL/SDL_VS2005.vcproj Mon Jul 12 21:09:23 2010 -0700 +++ b/VisualC/SDL/SDL_VS2005.vcproj Tue Jul 13 18:31:09 2010 -0400 @@ -1,11 +1,18 @@ <?xml version="1.0" encoding="Windows-1252"?> <VisualStudioProject ProjectType="Visual C++" +<<<<<<< local + Version="8.00" +======= Version="9.00" +>>>>>>> other Name="SDL" ProjectGUID="{81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}" RootNamespace="SDL" +<<<<<<< local +======= TargetFrameworkVersion="131072" +>>>>>>> other > <Platforms> <Platform @@ -77,21 +84,36 @@ /> <Tool Name="VCLinkerTool" +<<<<<<< local + AdditionalOptions="/MACHINE:I386" +======= AdditionalOptions="/MACHINE:I386
msvcrt.lib" +>>>>>>> other AdditionalDependencies="msimg32.lib winmm.lib" OutputFile=".\Debug/SDL.dll" LinkIncremental="2" SuppressStartupBanner="true" +<<<<<<< local + IgnoreAllDefaultLibraries="true" +======= IgnoreAllDefaultLibraries="false" IgnoreDefaultLibraryNames="" +>>>>>>> other GenerateDebugInformation="true" ProgramDatabaseFile=".\Debug/SDL.pdb" +<<<<<<< local + SubSystem="2" +======= SubSystem="0" RandomizedBaseAddress="1" DataExecutionPrevention="0" +>>>>>>> other ImportLibrary=".\Debug/SDL.lib" +<<<<<<< local +======= Profile="true" CLRThreadAttribute="0" +>>>>>>> other CLRUnmanagedCodeCheck="false" /> <Tool @@ -113,6 +135,12 @@ Name="VCAppVerifierTool" /> <Tool +<<<<<<< local + Name="VCWebDeploymentTool" + /> + <Tool +======= +>>>>>>> other Name="VCPostBuildEventTool" /> </Configuration> @@ -188,8 +216,11 @@ IgnoreAllDefaultLibraries="true" ProgramDatabaseFile=".\Release/SDL.pdb" SubSystem="2" +<<<<<<< local +======= RandomizedBaseAddress="1" DataExecutionPrevention="0" +>>>>>>> other ImportLibrary=".\Release/SDL.lib" /> <Tool @@ -211,6 +242,12 @@ Name="VCAppVerifierTool" /> <Tool +<<<<<<< local + Name="VCWebDeploymentTool" + /> + <Tool +======= +>>>>>>> other Name="VCPostBuildEventTool" /> </Configuration> @@ -943,6 +980,8 @@ > </File> <File +<<<<<<< local +======= RelativePath="..\..\src\events\SDL_touch.c" > </File> @@ -951,6 +990,7 @@ > </File> <File +>>>>>>> other RelativePath="..\..\src\video\SDL_video.c" > </File>
--- a/VisualC/SDLmain/SDLmain_VS2005.vcproj Mon Jul 12 21:09:23 2010 -0700 +++ b/VisualC/SDLmain/SDLmain_VS2005.vcproj Tue Jul 13 18:31:09 2010 -0400 @@ -1,10 +1,17 @@ <?xml version="1.0" encoding="Windows-1252"?> <VisualStudioProject ProjectType="Visual C++" +<<<<<<< local + Version="8.00" +======= Version="9.00" +>>>>>>> other Name="SDLmain" ProjectGUID="{DA956FD3-E142-46F2-9DD5-C78BEBB56B7A}" +<<<<<<< local +======= TargetFrameworkVersion="131072" +>>>>>>> other > <Platforms> <Platform @@ -26,7 +33,11 @@ <Tool Name="VCPreBuildEventTool" Description="Making sure basic SDL headers are in place..." +<<<<<<< local + CommandLine="if exist "$(ProjectDir)\..\..\include\SDL_config.h" goto SDLCONFIGOKAY
echo Copying SDL_config_win32.h to SDL_config.h...
copy "$(ProjectDir)\..\..\include\SDL_config_win32.h" "$(ProjectDir)\..\..\include\SDL_config.h"
:SDLCONFIGOKAY

if exist "$(ProjectDir)\..\..\include\SDL_revision.h" goto SDLREVISIONOKAY
echo Creating stub SDL_revision.h file...
echo #define SDL_REVISION 0 >"$(ProjectDir)\..\..\include\SDL_revision.h"
:SDLREVISIONOKAY" +======= CommandLine="if exist "$(ProjectDir)\..\..\include\SDL_config.h" goto SDLCONFIGOKAY
echo Copying SDL_config_win32.h to SDL_config.h...
copy "$(ProjectDir)\..\..\include\SDL_config_win32.h" "$(ProjectDir)\..\..\include\SDL_config.h"
:SDLCONFIGOKAY

if exist "$(ProjectDir)\..\..\include\SDL_revision.h" goto SDLREVISIONOKAY
echo Creating stub SDL_revision.h file...
echo #define SDL_REVISION 0 >"$(ProjectDir)\..\..\include\SDL_revision.h"
:SDLREVISIONOKAY
" +>>>>>>> other /> <Tool Name="VCCustomBuildTool" @@ -99,7 +110,11 @@ <Tool Name="VCPreBuildEventTool" Description="Making sure basic SDL headers are in place..." +<<<<<<< local + CommandLine="if exist "$(ProjectDir)\..\..\include\SDL_config.h" goto SDLCONFIGOKAY
echo Copying SDL_config_win32.h to SDL_config.h...
copy "$(ProjectDir)\..\..\include\SDL_config_win32.h" "$(ProjectDir)\..\..\include\SDL_config.h"
:SDLCONFIGOKAY

if exist "$(ProjectDir)\..\..\include\SDL_revision.h" goto SDLREVISIONOKAY
echo Creating stub SDL_revision.h file...
echo #define SDL_REVISION 0 >"$(ProjectDir)\..\..\include\SDL_revision.h"
:SDLREVISIONOKAY" +======= CommandLine="if exist "$(ProjectDir)\..\..\include\SDL_config.h" goto SDLCONFIGOKAY
echo Copying SDL_config_win32.h to SDL_config.h...
copy "$(ProjectDir)\..\..\include\SDL_config_win32.h" "$(ProjectDir)\..\..\include\SDL_config.h"
:SDLCONFIGOKAY

if exist "$(ProjectDir)\..\..\include\SDL_revision.h" goto SDLREVISIONOKAY
echo Creating stub SDL_revision.h file...
echo #define SDL_REVISION 0 >"$(ProjectDir)\..\..\include\SDL_revision.h"
:SDLREVISIONOKAY
" +>>>>>>> other /> <Tool Name="VCCustomBuildTool" @@ -172,7 +187,11 @@ <Tool Name="VCPreBuildEventTool" Description="Making sure basic SDL headers are in place..." +<<<<<<< local + CommandLine="if exist "$(ProjectDir)\..\..\include\SDL_config.h" goto SDLCONFIGOKAY
echo Copying SDL_config_win32.h to SDL_config.h...
copy "$(ProjectDir)\..\..\include\SDL_config_win32.h" "$(ProjectDir)\..\..\include\SDL_config.h"
:SDLCONFIGOKAY

if exist "$(ProjectDir)\..\..\include\SDL_revision.h" goto SDLREVISIONOKAY
echo Creating stub SDL_revision.h file...
echo #define SDL_REVISION 0 >"$(ProjectDir)\..\..\include\SDL_revision.h"
:SDLREVISIONOKAY" +======= CommandLine="if exist "$(ProjectDir)\..\..\include\SDL_config.h" goto SDLCONFIGOKAY
echo Copying SDL_config_win32.h to SDL_config.h...
copy "$(ProjectDir)\..\..\include\SDL_config_win32.h" "$(ProjectDir)\..\..\include\SDL_config.h"
:SDLCONFIGOKAY

if exist "$(ProjectDir)\..\..\include\SDL_revision.h" goto SDLREVISIONOKAY
echo Creating stub SDL_revision.h file...
echo #define SDL_REVISION 0 >"$(ProjectDir)\..\..\include\SDL_revision.h"
:SDLREVISIONOKAY
" +>>>>>>> other /> <Tool Name="VCCustomBuildTool"
--- a/include/SDL_events.h Mon Jul 12 21:09:23 2010 -0700 +++ b/include/SDL_events.h Tue Jul 13 18:31:09 2010 -0400 @@ -105,6 +105,7 @@ SDL_MULTIGESTURE, /* Clipboard events */ + SDL_CLIPBOARDUPDATE = 0x900, /**< The clipboard changed */ /* Obsolete events */
--- a/src/video/uikit/SDL_uikitview.h Mon Jul 12 21:09:23 2010 -0700 +++ b/src/video/uikit/SDL_uikitview.h Tue Jul 13 18:31:09 2010 -0400 @@ -13,8 +13,7 @@ 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 + 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 @@ -24,10 +23,8 @@ #include "SDL_stdinc.h" #include "SDL_events.h" -#if SDL_IPHONE_MULTIPLE_MICE +#ifndef IPHONE_TOUCH_EFFICIENT_DANGEROUS #define MAX_SIMULTANEOUS_TOUCHES 5 -#else -#define MAX_SIMULTANEOUS_TOUCHES 1 #endif /* *INDENT-OFF* */ @@ -39,6 +36,9 @@ #if FIXED_MULTITOUCH int touchId; +#ifndef IPHONE_TOUCH_EFFICIENT_DANGEROUS + UITouch *finger[MAX_SIMULTANEOUS_TOUCHES]; +#endif #endif #if SDL_IPHONE_KEYBOARD
--- a/src/video/uikit/SDL_uikitview.m Mon Jul 12 21:09:23 2010 -0700 +++ b/src/video/uikit/SDL_uikitview.m Tue Jul 13 18:31:09 2010 -0400 @@ -91,9 +91,30 @@ #if FIXED_MULTITOUCH while(touch) { CGPoint locationInView = [touch locationInView: self]; - SDL_SendFingerDown(touchId,(int)touch, + + +#ifdef IPHONE_TOUCH_EFFICIENT_DANGEROUS + //FIXME: TODO: Using touch as the fingerId is potentially dangerous + //It is also much more efficient than storing the UITouch pointer + //and comparing it to the incoming event. + SDL_SendFingerDown(touchId,(long)touch, SDL_TRUE,locationInView.x,locationInView.y, 1); +#else + int i; + for(i = 0;i < MAX_SIMULTANEOUS_TOUCHES;i++) { + if(finger[i] == NULL) { + finger[i] = touch; + SDL_SendFingerDown(touchId,i, + SDL_TRUE,locationInView.x,locationInView.y, + 1); + break; + } + } +#endif + + + touch = (UITouch*)[enumerator nextObject]; } @@ -113,9 +134,23 @@ #if FIXED_MULTITOUCH while(touch) { CGPoint locationInView = [touch locationInView: self]; - SDL_SendFingerDown(touchId,(int)touch, + + +#ifdef IPHONE_TOUCH_EFFICIENT_DANGEROUS + SDL_SendFingerDown(touchId,(long)touch, SDL_FALSE,locationInView.x,locationInView.y, 1); +#else + int i; + for(i = 0;i < MAX_SIMULTANEOUS_TOUCHES;i++) { + if(finger[i] == touch) { + SDL_SendFingerDown(touchId,i, + SDL_FALSE,locationInView.x,locationInView.y, + 1); + break; + } + } +#endif touch = (UITouch*)[enumerator nextObject]; } @@ -146,9 +181,23 @@ #if FIXED_MULTITOUCH while(touch) { CGPoint locationInView = [touch locationInView: self]; - SDL_SendTouchMotion(touchId,(int)touch, - SDL_FALSE,locationInView.x,locationInView.y, - 1); + + +#ifdef IPHONE_TOUCH_EFFICIENT_DANGEROUS + SDL_SendTouchMotion(touchId,(long)touch, + SDL_FALSE,locationInView.x,locationInView.y, + 1); +#else + int i; + for(i = 0;i < MAX_SIMULTANEOUS_TOUCHES;i++) { + if(finger[i] == touch) { + SDL_SendTouchMotion(touchId,i, + SDL_FALSE,locationInView.x,locationInView.y, + 1); + break; + } + } +#endif touch = (UITouch*)[enumerator nextObject]; }
--- a/touchTest/gestureSDLTest.c Mon Jul 12 21:09:23 2010 -0700 +++ b/touchTest/gestureSDLTest.c Tue Jul 13 18:31:09 2010 -0400 @@ -11,7 +11,7 @@ #define BPP 4 #define DEPTH 32 -#define MAXFINGERS 3 +#define MAXFINGERS 5 #define DOLLARNPOINTS 64 #define DOLLARSIZE 256