11
11
#include <emscripten.h>
12
12
13
13
#define abs (x ) ((x) < 0 ? -(x) : (x))
14
+
14
15
void one () {
15
16
SDL_Event event ;
16
17
while (SDL_PollEvent (& event )) {
17
- switch (event .type ) {
18
+ switch (event .type ) {
18
19
case SDL_MOUSEMOTION : {
19
20
SDL_MouseMotionEvent * m = (SDL_MouseMotionEvent * )& event ;
20
21
assert (m -> state == 0 );
21
22
int x , y ;
22
23
SDL_GetMouseState (& x , & y );
23
24
assert (x == m -> x && y == m -> y );
24
- printf ("motion: %d,%d %d,%d\n" , m -> x , m -> y , m -> xrel , m -> yrel );
25
+ printf ("motion: abs:%d,%d rel:%d,%d\n" , m -> x , m -> y , m -> xrel , m -> yrel );
26
+ static bool first_motion = true;
27
+ if (first_motion ) {
28
+ first_motion = false;
29
+ #ifdef TEST_SDL_MOUSE_OFFSETS
30
+ assert (abs (m -> x - 5 ) <= 1 && abs (m -> y - 15 ) <= 1 && abs (m -> xrel - 5 ) <= 1 && abs (m -> yrel - 15 ) <= 1 );
31
+ #else
32
+ assert (abs (m -> x - 10 ) <= 1 && abs (m -> y - 20 ) <= 1 && abs (m -> xrel - 10 ) <= 1 && abs (m -> yrel - 20 ) <= 1 );
33
+ #endif
34
+ } else {
25
35
#ifdef TEST_SDL_MOUSE_OFFSETS
26
- assert ( (abs (m -> x - 5 ) <= 1 && abs (m -> y - 15 ) <= 1 && abs (m -> xrel - 5 ) <= 1 && abs (m -> yrel - 15 ) <= 1 )
27
- || (abs (m -> x - 25 ) <= 1 && abs (m -> y - 72 ) <= 1 && abs (m -> xrel - 20 ) <= 1 && abs (m -> yrel - 57 ) <= 1 ) );
36
+ assert (abs (m -> x - 25 ) <= 1 && abs (m -> y - 72 ) <= 1 && abs (m -> xrel - 20 ) <= 1 && abs (m -> yrel - 57 ) <= 1 );
28
37
#else
29
- assert ( (abs (m -> x - 10 ) <= 1 && abs (m -> y - 20 ) <= 1 && abs (m -> xrel - 10 ) <= 1 && abs (m -> yrel - 20 ) <= 1 )
30
- || (abs (m -> x - 30 ) <= 1 && abs (m -> y - 77 ) <= 1 && abs (m -> xrel - 20 ) <= 1 && abs (m -> yrel - 57 ) <= 1 ) );
38
+ assert (abs (m -> x - 30 ) <= 1 && abs (m -> y - 77 ) <= 1 && abs (m -> xrel - 20 ) <= 1 && abs (m -> yrel - 57 ) <= 1 );
31
39
#endif
40
+ }
32
41
break ;
33
42
}
34
43
case SDL_MOUSEBUTTONDOWN : {
@@ -37,20 +46,22 @@ void one() {
37
46
emscripten_force_exit (0 );
38
47
}
39
48
printf ("button down: %d,%d %d,%d\n" , m -> button , m -> state , m -> x , m -> y );
49
+ assert (m -> button == 1 && m -> state == 1 );
40
50
#ifdef TEST_SDL_MOUSE_OFFSETS
41
- assert (m -> button == 1 && m -> state == 1 && abs (m -> x - 5 ) <= 1 && abs (m -> y - 15 ) <= 1 );
51
+ assert (abs (m -> x - 5 ) <= 1 && abs (m -> y - 15 ) <= 1 );
42
52
#else
43
- assert (m -> button == 1 && m -> state == 1 && abs (m -> x - 10 ) <= 1 && abs (m -> y - 20 ) <= 1 );
53
+ assert (abs (m -> x - 10 ) <= 1 && abs (m -> y - 20 ) <= 1 );
44
54
#endif
45
55
break ;
46
56
}
47
57
case SDL_MOUSEBUTTONUP : {
48
58
SDL_MouseButtonEvent * m = (SDL_MouseButtonEvent * )& event ;
49
59
printf ("button up: %d,%d %d,%d\n" , m -> button , m -> state , m -> x , m -> y );
60
+ assert (m -> button == 1 && m -> state == 0 );
50
61
#ifdef TEST_SDL_MOUSE_OFFSETS
51
- assert (m -> button == 1 && m -> state == 0 && abs (m -> x - 5 ) <= 1 && abs (m -> y - 15 ) <= 1 );
62
+ assert (abs (m -> x - 5 ) <= 1 && abs (m -> y - 15 ) <= 1 );
52
63
#else
53
- assert (m -> button == 1 && m -> state == 0 && abs (m -> x - 10 ) <= 1 && abs (m -> y - 20 ) <= 1 );
64
+ assert (abs (m -> x - 10 ) <= 1 && abs (m -> y - 20 ) <= 1 );
54
65
#endif
55
66
// Remove another click we want to ignore
56
67
assert (SDL_PeepEvents (& event , 1 , SDL_GETEVENT , SDL_MOUSEBUTTONDOWN , SDL_MOUSEBUTTONDOWN ) == 1 );
@@ -61,8 +72,6 @@ void one() {
61
72
}
62
73
}
63
74
64
- void main_2 (void * arg );
65
-
66
75
int main () {
67
76
SDL_Init (SDL_INIT_VIDEO );
68
77
SDL_Surface * screen = SDL_SetVideoMode (600 , 450 , 32 , SDL_HWSURFACE );
@@ -84,4 +93,3 @@ int main() {
84
93
85
94
emscripten_set_main_loop (one , 0 , 0 );
86
95
}
87
-
0 commit comments