فهرست منبع

slight adjustment to the hot plug test to allow it to be run with hap tics disabled

Edward Rudd 12 سال پیش
والد
کامیت
d3f64213e2
1فایلهای تغییر یافته به همراه41 افزوده شده و 23 حذف شده
  1. 41 23
      test/testhotplug.c

+ 41 - 23
test/testhotplug.c

@@ -19,7 +19,7 @@
 #include "SDL.h"
 #include "SDL_haptic.h"
 
-#ifndef SDL_JOYSTICK_DISABLED
+#if !defined SDL_JOYSTICK_DISABLED && !defined SDL_HAPTIC_DISABLED
 
 int
 main(int argc, char *argv[])
@@ -28,14 +28,27 @@ main(int argc, char *argv[])
     SDL_Haptic *haptic = NULL;
     SDL_JoystickID instance = -1;
     SDL_bool keepGoing = SDL_TRUE;
+    int i;
+    SDL_bool enable_haptic = SDL_TRUE;
+    Uint32 init_subsystems = SDL_INIT_VIDEO | SDL_INIT_JOYSTICK;
+    
+    for (i = 1; i < argc; ++i) {
+        if (SDL_strcasecmp(argv[i], "--nohaptic") == 0) {
+            enable_haptic = SDL_FALSE;
+        }
+    }
 
+    if(enable_haptic) {
+        init_subsystems |= SDL_INIT_HAPTIC;
+    }
+    
     /* Enable standard application logging */
     SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO);	
 
     SDL_SetHint(SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS, "1");
 
     /* Initialize SDL (Note: video is required to start event loop) */
-    if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK | SDL_INIT_HAPTIC) < 0) {
+    if (SDL_Init(init_subsystems) < 0) {
         SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't initialize SDL: %s\n", SDL_GetError());
         exit(1);
     }
@@ -43,7 +56,8 @@ main(int argc, char *argv[])
     //SDL_CreateWindow("Dummy", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 128, 128, 0);
 
     SDL_Log("There are %d joysticks at startup\n", SDL_NumJoysticks());
-    SDL_Log("There are %d haptic devices at startup\n", SDL_NumHaptics());
+    if (enable_haptic)
+        SDL_Log("There are %d haptic devices at startup\n", SDL_NumHaptics());
 
     while(keepGoing)
     {
@@ -65,25 +79,28 @@ main(int argc, char *argv[])
                         joystick = SDL_JoystickOpen(event.jdevice.which);
                         instance = SDL_JoystickInstanceID(joystick);
                         SDL_Log("Joy Added  : %d : %s\n", event.jdevice.which, SDL_JoystickName(joystick));
-                        if (SDL_JoystickIsHaptic(joystick))
+                        if (enable_haptic)
                         {
-                            haptic = SDL_HapticOpenFromJoystick(joystick);
-                            if (haptic)
+                            if (SDL_JoystickIsHaptic(joystick))
                             {
-                                SDL_Log("Joy Haptic Opened\n");
-                                if (SDL_HapticRumbleInit( haptic ) != 0)
+                                haptic = SDL_HapticOpenFromJoystick(joystick);
+                                if (haptic)
                                 {
-                                    SDL_Log("Could not init Rumble!: %s\n", SDL_GetError());
-                                    SDL_HapticClose(haptic);
-                                    haptic = NULL;
+                                    SDL_Log("Joy Haptic Opened\n");
+                                    if (SDL_HapticRumbleInit( haptic ) != 0)
+                                    {
+                                        SDL_Log("Could not init Rumble!: %s\n", SDL_GetError());
+                                        SDL_HapticClose(haptic);
+                                        haptic = NULL;
+                                    }
+                                } else {
+                                    SDL_Log("Joy haptic open FAILED!: %s\n", SDL_GetError());
                                 }
-                            } else {
-                                SDL_Log("Joy haptic open FAILED!: %s\n", SDL_GetError());
                             }
-                        }
-                        else
-                        {
-                            SDL_Log("No haptic found\n");
+                            else
+                            {
+                                SDL_Log("No haptic found\n");
+                            }
                         }
                     }
                     break;
@@ -92,7 +109,7 @@ main(int argc, char *argv[])
                     {
                         SDL_Log("Joy Removed: %d\n", event.jdevice.which);
                         instance = -1;
-                        if(haptic)
+                        if(enable_haptic && haptic)
                         {
                             SDL_HapticClose(haptic);
                             haptic = NULL;
@@ -105,13 +122,14 @@ main(int argc, char *argv[])
                     break;
                 case SDL_JOYAXISMOTION:
 //                    SDL_Log("Axis Move: %d\n", event.jaxis.axis);
-                    SDL_HapticRumblePlay(haptic, 0.2, 250);
+                    if (enable_haptic)
+                        SDL_HapticRumblePlay(haptic, 0.25, 250);
                     break;
                 case SDL_JOYBUTTONDOWN:
                     SDL_Log("Button Press: %d\n", event.jbutton.button);
-                    if(haptic)
+                    if(enable_haptic && haptic)
                     {
-                        SDL_HapticRumblePlay(haptic, 0.2, 250);
+                        SDL_HapticRumblePlay(haptic, 0.25, 250);
                     }
 					if (event.jbutton.button == 0) {
 						SDL_Log("Exiting due to button press of button 0\n");
@@ -125,7 +143,7 @@ main(int argc, char *argv[])
         }
     }
 
-    SDL_QuitSubSystem(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK);
+    SDL_Quit();
 
     return 0;
 }
@@ -134,7 +152,7 @@ main(int argc, char *argv[])
 int
 main(int argc, char *argv[])
 {
-    SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "SDL compiled without Joystick support.\n");
+    SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "SDL compiled without Joystick and haptic support.\n");
     return 1;
 }