Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. #ifdef WITH_JOYSTICK
  2.  
  3. #include <stddef.h>
  4. #include <SDL.h>
  5. #include <SDL_joystick.h>
  6. #include "md.h"
  7.  
  8. static SDL_Joystick *(*handles)[];
  9. static unsigned int handles_n;
  10.  
  11. void md::init_joysticks()
  12. {}
  13. /*      int n;
  14.         unsigned int i;
  15.         SDL_Joystick *(*tmp)[];
  16.  
  17.         deinit_joysticks();
  18.   // Initialize the joystick support
  19.   // Thanks to Cameron Moore <cameron@unbeatenpath.net>
  20.   if(SDL_InitSubSystem(SDL_INIT_JOYSTICK) < 0)
  21.     {
  22.       fprintf(stderr, "joystick: Unable to initialize joystick system\n");
  23.       return;
  24.     }
  25.         n = SDL_NumJoysticks();
  26.         if (n <= 0) {
  27.                 fprintf(stderr, "joystick: no joystick found\n");
  28.                 return;
  29.         }
  30.         fprintf(stderr, "joystick: %d joystick(s) found\n", n);
  31.         i = (sizeof((*tmp)[0]) * n); // Separate, otherwise Clang complains.
  32.         tmp = (SDL_Joystick *(*)[])malloc(i);
  33.         if (tmp == NULL) {
  34.                 fprintf(stderr, "joystick: unable to allocate memory\n");
  35.                 return;
  36.         }
  37.         // Open all of them.
  38.         for (i = 0; (i != (unsigned int)n); ++i) {
  39.                 SDL_Joystick *handle = SDL_JoystickOpen(i);
  40.  
  41.                 if (handle == NULL)
  42.                         fprintf(stderr, "joystick: can't open joystick %u: %s",
  43.                                 i, SDL_GetError());
  44.                 else
  45.                         fprintf(stderr,
  46.                                 "joystick #%u:, %d %s, %d button(s),"
  47.                                 " %d hat(s), name: \"%s\"\n",
  48.                                 i,
  49.                                 SDL_JoystickNumAxes(handle),
  50.                                 ((SDL_JoystickNumAxes(handle) == 1) ?
  51.                                  "axis" : "axes"),
  52.                                 SDL_JoystickNumButtons(handle),
  53.                                 SDL_JoystickNumHats(handle),
  54.                                 SDL_JoystickName(i));
  55.                 (*tmp)[i] = handle;
  56.         }
  57.         handles = tmp;
  58.         handles_n = i;
  59.   // Enable joystick events
  60.   SDL_JoystickEventState(SDL_ENABLE);
  61. }*/
  62.  
  63. void md::deinit_joysticks()
  64. {
  65.         /*unsigned int n = handles_n;
  66.         SDL_Joystick *(*tmp)[] = handles;
  67.  
  68.         handles_n = 0;
  69.         handles = NULL;
  70.         if (tmp == NULL)
  71.                 return;
  72.         while (n != 0) {
  73.                 --n;
  74.                 if ((*tmp)[n] == NULL)
  75.                         continue;
  76.                 SDL_JoystickClose((*tmp)[n]);
  77.                 (*tmp)[n] = NULL;
  78.         }
  79.         free(tmp);
  80.         SDL_QuitSubSystem(SDL_INIT_JOYSTICK);*/
  81. }
  82.  
  83. #else // WITH_JOYSTICK
  84.  
  85. // Avoid empty translation unit.
  86. typedef int md_phil;
  87.  
  88. #endif // WITH_JOYSTICK
  89.  
  90. #ifdef __cplusplus
  91. extern "C" {
  92. #endif
  93.  
  94. void _ksys_sleep(unsigned time) {
  95.     __asm__ __volatile__(
  96.     "int $0x40"
  97.     ::"a"(5), "b"(time)
  98.     :"memory");
  99. };
  100.  
  101. int usleep(unsigned usec) {
  102.     _ksys_sleep(usec/10000);
  103.   return 0;
  104. }
  105.  
  106. #ifdef __cplusplus
  107. }
  108. #endif
  109.