Skip to content

Commit

Permalink
slight adjustment to the hot plug test to allow it to be run with hap…
Browse files Browse the repository at this point in the history
… tics disabled
  • Loading branch information
urkle committed Feb 7, 2014
1 parent fff7503 commit d3f6421
Showing 1 changed file with 41 additions and 23 deletions.
64 changes: 41 additions & 23 deletions test/testhotplug.c
Expand Up @@ -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[])
Expand All @@ -28,22 +28,36 @@ 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);
}

//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)
{
Expand All @@ -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;
Expand All @@ -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;
Expand All @@ -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");
Expand All @@ -125,7 +143,7 @@ main(int argc, char *argv[])
}
}

SDL_QuitSubSystem(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK);
SDL_Quit();

return 0;
}
Expand All @@ -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;
}

Expand Down

0 comments on commit d3f6421

Please sign in to comment.