Added alternative finger tracking method. Still prefer IPHONE_TOUCH_EFFICIENT_DANGEROUS.
authorJim Grandpre <jim.tla@gmail.com>
Tue, 13 Jul 2010 18:31:09 -0400
changeset 4662 3c4e0130c9b1
parent 4661 03dcb795c583
child 4663 56a2d70de945
child 4664 317a151b79ad
Added alternative finger tracking method. Still prefer IPHONE_TOUCH_EFFICIENT_DANGEROUS.
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
--- 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&#x0D;&#x0A;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 &quot;$(ProjectDir)\..\..\include\SDL_config.h&quot; goto SDLCONFIGOKAY&#x0D;&#x0A;echo Copying SDL_config_win32.h to SDL_config.h...&#x0D;&#x0A;copy &quot;$(ProjectDir)\..\..\include\SDL_config_win32.h&quot; &quot;$(ProjectDir)\..\..\include\SDL_config.h&quot;&#x0D;&#x0A;:SDLCONFIGOKAY&#x0D;&#x0A;&#x0D;&#x0A;if exist &quot;$(ProjectDir)\..\..\include\SDL_revision.h&quot; goto SDLREVISIONOKAY&#x0D;&#x0A;echo Creating stub SDL_revision.h file...&#x0D;&#x0A;echo #define SDL_REVISION 0 &gt;&quot;$(ProjectDir)\..\..\include\SDL_revision.h&quot;&#x0D;&#x0A;:SDLREVISIONOKAY"
+=======
 				CommandLine="if exist &quot;$(ProjectDir)\..\..\include\SDL_config.h&quot; goto SDLCONFIGOKAY&#x0D;&#x0A;echo Copying SDL_config_win32.h to SDL_config.h...&#x0D;&#x0A;copy &quot;$(ProjectDir)\..\..\include\SDL_config_win32.h&quot; &quot;$(ProjectDir)\..\..\include\SDL_config.h&quot;&#x0D;&#x0A;:SDLCONFIGOKAY&#x0D;&#x0A;&#x0D;&#x0A;if exist &quot;$(ProjectDir)\..\..\include\SDL_revision.h&quot; goto SDLREVISIONOKAY&#x0D;&#x0A;echo Creating stub SDL_revision.h file...&#x0D;&#x0A;echo #define SDL_REVISION 0 &gt;&quot;$(ProjectDir)\..\..\include\SDL_revision.h&quot;&#x0D;&#x0A;:SDLREVISIONOKAY&#x0D;&#x0A;"
+>>>>>>> other
 			/>
 			<Tool
 				Name="VCCustomBuildTool"
@@ -99,7 +110,11 @@
 			<Tool
 				Name="VCPreBuildEventTool"
 				Description="Making sure basic SDL headers are in place..."
+<<<<<<< local
+				CommandLine="if exist &quot;$(ProjectDir)\..\..\include\SDL_config.h&quot; goto SDLCONFIGOKAY&#x0D;&#x0A;echo Copying SDL_config_win32.h to SDL_config.h...&#x0D;&#x0A;copy &quot;$(ProjectDir)\..\..\include\SDL_config_win32.h&quot; &quot;$(ProjectDir)\..\..\include\SDL_config.h&quot;&#x0D;&#x0A;:SDLCONFIGOKAY&#x0D;&#x0A;&#x0D;&#x0A;if exist &quot;$(ProjectDir)\..\..\include\SDL_revision.h&quot; goto SDLREVISIONOKAY&#x0D;&#x0A;echo Creating stub SDL_revision.h file...&#x0D;&#x0A;echo #define SDL_REVISION 0 &gt;&quot;$(ProjectDir)\..\..\include\SDL_revision.h&quot;&#x0D;&#x0A;:SDLREVISIONOKAY"
+=======
 				CommandLine="if exist &quot;$(ProjectDir)\..\..\include\SDL_config.h&quot; goto SDLCONFIGOKAY&#x0D;&#x0A;echo Copying SDL_config_win32.h to SDL_config.h...&#x0D;&#x0A;copy &quot;$(ProjectDir)\..\..\include\SDL_config_win32.h&quot; &quot;$(ProjectDir)\..\..\include\SDL_config.h&quot;&#x0D;&#x0A;:SDLCONFIGOKAY&#x0D;&#x0A;&#x0D;&#x0A;if exist &quot;$(ProjectDir)\..\..\include\SDL_revision.h&quot; goto SDLREVISIONOKAY&#x0D;&#x0A;echo Creating stub SDL_revision.h file...&#x0D;&#x0A;echo #define SDL_REVISION 0 &gt;&quot;$(ProjectDir)\..\..\include\SDL_revision.h&quot;&#x0D;&#x0A;:SDLREVISIONOKAY&#x0D;&#x0A;"
+>>>>>>> other
 			/>
 			<Tool
 				Name="VCCustomBuildTool"
@@ -172,7 +187,11 @@
 			<Tool
 				Name="VCPreBuildEventTool"
 				Description="Making sure basic SDL headers are in place..."
+<<<<<<< local
+				CommandLine="if exist &quot;$(ProjectDir)\..\..\include\SDL_config.h&quot; goto SDLCONFIGOKAY&#x0D;&#x0A;echo Copying SDL_config_win32.h to SDL_config.h...&#x0D;&#x0A;copy &quot;$(ProjectDir)\..\..\include\SDL_config_win32.h&quot; &quot;$(ProjectDir)\..\..\include\SDL_config.h&quot;&#x0D;&#x0A;:SDLCONFIGOKAY&#x0D;&#x0A;&#x0D;&#x0A;if exist &quot;$(ProjectDir)\..\..\include\SDL_revision.h&quot; goto SDLREVISIONOKAY&#x0D;&#x0A;echo Creating stub SDL_revision.h file...&#x0D;&#x0A;echo #define SDL_REVISION 0 &gt;&quot;$(ProjectDir)\..\..\include\SDL_revision.h&quot;&#x0D;&#x0A;:SDLREVISIONOKAY"
+=======
 				CommandLine="if exist &quot;$(ProjectDir)\..\..\include\SDL_config.h&quot; goto SDLCONFIGOKAY&#x0D;&#x0A;echo Copying SDL_config_win32.h to SDL_config.h...&#x0D;&#x0A;copy &quot;$(ProjectDir)\..\..\include\SDL_config_win32.h&quot; &quot;$(ProjectDir)\..\..\include\SDL_config.h&quot;&#x0D;&#x0A;:SDLCONFIGOKAY&#x0D;&#x0A;&#x0D;&#x0A;if exist &quot;$(ProjectDir)\..\..\include\SDL_revision.h&quot; goto SDLREVISIONOKAY&#x0D;&#x0A;echo Creating stub SDL_revision.h file...&#x0D;&#x0A;echo #define SDL_REVISION 0 &gt;&quot;$(ProjectDir)\..\..\include\SDL_revision.h&quot;&#x0D;&#x0A;:SDLREVISIONOKAY&#x0D;&#x0A;"
+>>>>>>> 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
Binary file touchTest/touchPong has changed
Binary file touchTest/touchSimp has changed
--- a/touchTest/touchSimp.c	Mon Jul 12 21:09:23 2010 -0700
+++ b/touchTest/touchSimp.c	Tue Jul 13 18:31:09 2010 -0400
@@ -12,7 +12,7 @@
 #define DEPTH 32
 
 
-#define MAX_FINGERS 2
+#define MAX_FINGERS 5
 
 int mousx,mousy;
 int keystat[512];
--- a/touchTest/touchTest.c	Mon Jul 12 21:09:23 2010 -0700
+++ b/touchTest/touchTest.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
 
 int mousx,mousy;
 int keystat[512];