/src/Core/Time.xs

http://github.com/PerlGameDev/SDL · Unknown · 57 lines · 44 code · 13 blank · 0 comment · 0 complexity · 57a12194615c6f5034a375f2807b0544 MD5 · raw file

  1. #include "EXTERN.h"
  2. #include "perl.h"
  3. #include "XSUB.h"
  4. #include "ppport.h"
  5. #include "defines.h"
  6. #include <SDL.h>
  7. Uint32 add_timer_cb (Uint32 interval, void* param )
  8. {
  9. Uint32 ret_interval;
  10. ENTER_TLS_CONTEXT;
  11. dSP;
  12. int count;
  13. ENTER;
  14. SAVETMPS;
  15. PUSHMARK(SP);
  16. XPUSHs(sv_2mortal(newSViv(interval)));
  17. PUTBACK;
  18. count = call_pv(param,G_SCALAR);
  19. SPAGAIN;
  20. if (count != 1 ) croak("callback returned more than 1 value\n");
  21. ret_interval = POPi;
  22. PUTBACK;
  23. FREETMPS;
  24. LEAVE;
  25. LEAVE_TLS_CONTEXT;
  26. return ret_interval;
  27. }
  28. MODULE = SDL::Time PACKAGE = SDL::Time PREFIX = time_
  29. SDL_TimerID
  30. time_add_timer ( interval, cmd )
  31. Uint32 interval
  32. char *cmd
  33. CODE:
  34. GET_TLS_CONTEXT;
  35. RETVAL = SDL_AddTimer(interval, add_timer_cb, (void *)cmd);
  36. OUTPUT:
  37. RETVAL
  38. int
  39. time_remove_timer ( id)
  40. SDL_TimerID id
  41. CODE:
  42. RETVAL = SDL_RemoveTimer((SDL_TimerID) id);
  43. OUTPUT:
  44. RETVAL