1111#include <emscripten.h>
1212
1313#define abs (x ) ((x) < 0 ? -(x) : (x))
14+
1415void one () {
1516 SDL_Event event ;
1617 while (SDL_PollEvent (& event )) {
17- switch (event .type ) {
18+ switch (event .type ) {
1819 case SDL_MOUSEMOTION : {
1920 SDL_MouseMotionEvent * m = (SDL_MouseMotionEvent * )& event ;
2021 assert (m -> state == 0 );
2122 int x , y ;
2223 SDL_GetMouseState (& x , & y );
2324 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 {
2535#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 );
2837#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 );
3139#endif
40+ }
3241 break ;
3342 }
3443 case SDL_MOUSEBUTTONDOWN : {
@@ -37,20 +46,22 @@ void one() {
3746 emscripten_force_exit (0 );
3847 }
3948 printf ("button down: %d,%d %d,%d\n" , m -> button , m -> state , m -> x , m -> y );
49+ assert (m -> button == 1 && m -> state == 1 );
4050#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 );
4252#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 );
4454#endif
4555 break ;
4656 }
4757 case SDL_MOUSEBUTTONUP : {
4858 SDL_MouseButtonEvent * m = (SDL_MouseButtonEvent * )& event ;
4959 printf ("button up: %d,%d %d,%d\n" , m -> button , m -> state , m -> x , m -> y );
60+ assert (m -> button == 1 && m -> state == 0 );
5061#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 );
5263#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 );
5465#endif
5566 // Remove another click we want to ignore
5667 assert (SDL_PeepEvents (& event , 1 , SDL_GETEVENT , SDL_MOUSEBUTTONDOWN , SDL_MOUSEBUTTONDOWN ) == 1 );
@@ -61,8 +72,6 @@ void one() {
6172 }
6273}
6374
64- void main_2 (void * arg );
65-
6675int main () {
6776 SDL_Init (SDL_INIT_VIDEO );
6877 SDL_Surface * screen = SDL_SetVideoMode (600 , 450 , 32 , SDL_HWSURFACE );
@@ -84,4 +93,3 @@ int main() {
8493
8594 emscripten_set_main_loop (one , 0 , 0 );
8695}
87-
0 commit comments