testtimer.c
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:2k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. /* Test program to check the resolution of the SDL timer on the current
  2.    platform
  3. */
  4. #include <stdlib.h>
  5. #include <stdio.h>
  6. #include "SDL.h"
  7. #define DEFAULT_RESOLUTION 1
  8. static int ticks = 0;
  9. static Uint32 ticktock(Uint32 interval)
  10. {
  11. ++ticks;
  12. return(interval);
  13. }
  14. static Uint32 callback(Uint32 interval, void *param)
  15. {
  16.   printf("Timer %d : param = %dn", interval, (int) param);
  17.   return interval;
  18. }
  19. int main(int argc, char *argv[])
  20. {
  21. int desired;
  22. SDL_TimerID t1, t2, t3;
  23. if ( SDL_Init(SDL_INIT_TIMER) < 0 ) {
  24. fprintf(stderr, "Couldn't load SDL: %sn", SDL_GetError());
  25. exit(1);
  26. }
  27. atexit(SDL_Quit);
  28. /* Start the timer */
  29. desired = 0;
  30. if ( argv[1] ) {
  31. desired = atoi(argv[1]);
  32. }
  33. if ( desired == 0 ) {
  34. desired = DEFAULT_RESOLUTION;
  35. }
  36. SDL_SetTimer(desired, ticktock);
  37. /* Wait 10 seconds */
  38. printf("Waiting 10 secondsn");
  39. SDL_Delay(10*1000);
  40. /* Stop the timer */
  41. SDL_SetTimer(0, NULL);
  42. /* Print the results */
  43. if ( ticks ) {
  44. fprintf(stderr,
  45. "Timer resolution: desired = %d ms, actual = %f msn",
  46. desired, (double)(10*1000)/ticks);
  47. }
  48. /* Test multiple timers */
  49. printf("Testing multiple timers...n");
  50. t1 = SDL_AddTimer(100, callback, (void*)1);
  51. if(!t1)
  52.   fprintf(stderr,"Could not create timer 1n");
  53. t2 = SDL_AddTimer(50, callback, (void*)2);
  54. if(!t2)
  55.   fprintf(stderr,"Could not create timer 2n");
  56. t3 = SDL_AddTimer(233, callback, (void*)3);
  57. if(!t3)
  58.   fprintf(stderr,"Could not create timer 3n");
  59. /* Wait 10 seconds */
  60. printf("Waiting 10 secondsn");
  61. SDL_Delay(10*1000);
  62. printf("Removing timer 1 and waiting 5 more secondsn");
  63. SDL_RemoveTimer(t1);
  64. SDL_Delay(5*1000);
  65. SDL_RemoveTimer(t2);
  66. SDL_RemoveTimer(t3);
  67. return(0);
  68. }