Mercurial > sdl-ios-xcode
annotate test/testtimer.c @ 1525:23a347cfbed8
Fixed bug #38
I'm using SDL 1.2.9 with Visual C++ 7.0 on Windows 2000.
Here's the setup: my game starts in a window, with
SDL_WM_GrabInput(SDL_GRAB_ON) to constrain the cursor to the game window. The
mouse cursor is outside of the window when the game launches, and when the
window appears the cursor is grabbed and placed at the top left corner of the
inside of the game window. At this point, if I click the mouse without moving
it, the SDL_MOUSEBUTTONDOWN event's mouse coordinates are (65535,65535).
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Tue, 14 Mar 2006 06:00:30 +0000 |
parents | f58c88a4dff5 |
children | d5298e8f22b3 |
rev | line source |
---|---|
0 | 1 |
2 /* Test program to check the resolution of the SDL timer on the current | |
3 platform | |
4 */ | |
5 | |
6 #include <stdlib.h> | |
7 #include <stdio.h> | |
8 | |
9 #include "SDL.h" | |
10 | |
11 #define DEFAULT_RESOLUTION 1 | |
12 | |
13 static int ticks = 0; | |
14 | |
1151
be9c9c8f6d53
Removed atexit() from most of the test programs; atexit(SDL_Quit) isn't safe
Ryan C. Gordon <icculus@icculus.org>
parents:
766
diff
changeset
|
15 /* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ |
be9c9c8f6d53
Removed atexit() from most of the test programs; atexit(SDL_Quit) isn't safe
Ryan C. Gordon <icculus@icculus.org>
parents:
766
diff
changeset
|
16 static void quit(int rc) |
be9c9c8f6d53
Removed atexit() from most of the test programs; atexit(SDL_Quit) isn't safe
Ryan C. Gordon <icculus@icculus.org>
parents:
766
diff
changeset
|
17 { |
be9c9c8f6d53
Removed atexit() from most of the test programs; atexit(SDL_Quit) isn't safe
Ryan C. Gordon <icculus@icculus.org>
parents:
766
diff
changeset
|
18 SDL_Quit(); |
be9c9c8f6d53
Removed atexit() from most of the test programs; atexit(SDL_Quit) isn't safe
Ryan C. Gordon <icculus@icculus.org>
parents:
766
diff
changeset
|
19 exit(rc); |
be9c9c8f6d53
Removed atexit() from most of the test programs; atexit(SDL_Quit) isn't safe
Ryan C. Gordon <icculus@icculus.org>
parents:
766
diff
changeset
|
20 } |
be9c9c8f6d53
Removed atexit() from most of the test programs; atexit(SDL_Quit) isn't safe
Ryan C. Gordon <icculus@icculus.org>
parents:
766
diff
changeset
|
21 |
0 | 22 static Uint32 ticktock(Uint32 interval) |
23 { | |
24 ++ticks; | |
25 return(interval); | |
26 } | |
27 | |
28 static Uint32 callback(Uint32 interval, void *param) | |
29 { | |
1500 | 30 printf("Timer %d : param = %d\n", interval, (uintptr_t)param); |
0 | 31 return interval; |
32 } | |
33 | |
34 int main(int argc, char *argv[]) | |
35 { | |
36 int desired; | |
37 SDL_TimerID t1, t2, t3; | |
38 | |
39 if ( SDL_Init(SDL_INIT_TIMER) < 0 ) { | |
1484
b2b476a4a73c
Added documentation on how to build a completely useless SDL library. :)
Sam Lantinga <slouken@libsdl.org>
parents:
1151
diff
changeset
|
40 fprintf(stderr, "Couldn't initialize SDL: %s\n", SDL_GetError()); |
1151
be9c9c8f6d53
Removed atexit() from most of the test programs; atexit(SDL_Quit) isn't safe
Ryan C. Gordon <icculus@icculus.org>
parents:
766
diff
changeset
|
41 return(1); |
0 | 42 } |
43 | |
44 /* Start the timer */ | |
45 desired = 0; | |
46 if ( argv[1] ) { | |
47 desired = atoi(argv[1]); | |
48 } | |
49 if ( desired == 0 ) { | |
50 desired = DEFAULT_RESOLUTION; | |
51 } | |
52 SDL_SetTimer(desired, ticktock); | |
53 | |
54 /* Wait 10 seconds */ | |
55 printf("Waiting 10 seconds\n"); | |
56 SDL_Delay(10*1000); | |
57 | |
58 /* Stop the timer */ | |
59 SDL_SetTimer(0, NULL); | |
60 | |
61 /* Print the results */ | |
62 if ( ticks ) { | |
63 fprintf(stderr, | |
64 "Timer resolution: desired = %d ms, actual = %f ms\n", | |
65 desired, (double)(10*1000)/ticks); | |
66 } | |
67 | |
68 /* Test multiple timers */ | |
69 printf("Testing multiple timers...\n"); | |
70 t1 = SDL_AddTimer(100, callback, (void*)1); | |
71 if(!t1) | |
766
ed57c876700d
Date: Wed, 26 Nov 2003 01:52:02 +0800
Sam Lantinga <slouken@libsdl.org>
parents:
0
diff
changeset
|
72 fprintf(stderr,"Could not create timer 1: %s\n", SDL_GetError()); |
0 | 73 t2 = SDL_AddTimer(50, callback, (void*)2); |
74 if(!t2) | |
766
ed57c876700d
Date: Wed, 26 Nov 2003 01:52:02 +0800
Sam Lantinga <slouken@libsdl.org>
parents:
0
diff
changeset
|
75 fprintf(stderr,"Could not create timer 2: %s\n", SDL_GetError()); |
0 | 76 t3 = SDL_AddTimer(233, callback, (void*)3); |
77 if(!t3) | |
766
ed57c876700d
Date: Wed, 26 Nov 2003 01:52:02 +0800
Sam Lantinga <slouken@libsdl.org>
parents:
0
diff
changeset
|
78 fprintf(stderr,"Could not create timer 3: %s\n", SDL_GetError()); |
0 | 79 |
80 /* Wait 10 seconds */ | |
81 printf("Waiting 10 seconds\n"); | |
82 SDL_Delay(10*1000); | |
83 | |
84 printf("Removing timer 1 and waiting 5 more seconds\n"); | |
85 SDL_RemoveTimer(t1); | |
86 | |
87 SDL_Delay(5*1000); | |
88 | |
89 SDL_RemoveTimer(t2); | |
90 SDL_RemoveTimer(t3); | |
91 | |
1151
be9c9c8f6d53
Removed atexit() from most of the test programs; atexit(SDL_Quit) isn't safe
Ryan C. Gordon <icculus@icculus.org>
parents:
766
diff
changeset
|
92 SDL_Quit(); |
0 | 93 return(0); |
94 } |