aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-05-05 20:13:27 -0700
committerAlon Zakai <alonzakai@gmail.com>2012-05-05 20:13:27 -0700
commit747ab04f3992b120d279b9e2cbe9f6b507afd86c (patch)
tree7d5dff53f43eda790de804ea967158d1ac99ced7
parent3de35bb24b392c85e0c2bc646d1150048fa336ec (diff)
make sdl event handling work in closure, and add testing
-rw-r--r--src/library_sdl.js14
-rwxr-xr-xtests/runner.py3
-rw-r--r--tests/sdl_mouse.c10
3 files changed, 14 insertions, 13 deletions
diff --git a/src/library_sdl.js b/src/library_sdl.js
index 22d810ac..94d4ef87 100644
--- a/src/library_sdl.js
+++ b/src/library_sdl.js
@@ -28,13 +28,7 @@ var LibrarySDL = {
mouseX: 0,
mouseY: 0,
- DOMEventToSDLEvent: {
- 'keydown': 0x300,
- 'keyup': 0x301,
- 'mousedown': 0x401,
- 'mouseup': 0x402,
- 'mousemove': 0x400
- },
+ DOMEventToSDLEvent: {},
keyCodes: { // DOM code ==> SDL code. See https://developer.mozilla.org/en/Document_Object_Model_%28DOM%29/KeyboardEvent and SDL_keycode.h
38: 1106, // up arrow
@@ -438,6 +432,12 @@ var LibrarySDL = {
});
SDL.keyboardState = _malloc(0x10000);
_memset(SDL.keyboardState, 0, 0x10000);
+ // Initialize this structure carefully for closure
+ SDL.DOMEventToSDLEvent['keydown'] = 0x300;
+ SDL.DOMEventToSDLEvent['keyup'] = 0x301;
+ SDL.DOMEventToSDLEvent['mousedown'] = 0x401;
+ SDL.DOMEventToSDLEvent['mouseup'] = 0x402;
+ SDL.DOMEventToSDLEvent['mousemove'] = 0x400;
return 0; // success
},
diff --git a/tests/runner.py b/tests/runner.py
index 6e086200..557d1b4d 100755
--- a/tests/runner.py
+++ b/tests/runner.py
@@ -7110,10 +7110,11 @@ elif 'browser' in str(sys.argv):
Module['canvas'].dispatchEvent(event1);
}
}
+ window['simulateMouseEvent'] = simulateMouseEvent;
''')
open(os.path.join(self.get_dir(), 'sdl_mouse.c'), 'w').write(self.with_report_result(open(path_from_root('tests', 'sdl_mouse.c')).read()))
- Popen(['python', EMCC, os.path.join(self.get_dir(), 'sdl_mouse.c'), '-o', 'page.html', '--pre-js', 'pre.js']).communicate()
+ Popen(['python', EMCC, os.path.join(self.get_dir(), 'sdl_mouse.c'), '-O2', '--minify', '0', '-o', 'page.html', '--pre-js', 'pre.js']).communicate()
self.run_browser('page.html', '', '/report_result?740')
def test_sdl_audio(self):
diff --git a/tests/sdl_mouse.c b/tests/sdl_mouse.c
index 7fc14638..eb4aa425 100644
--- a/tests/sdl_mouse.c
+++ b/tests/sdl_mouse.c
@@ -49,11 +49,11 @@ int main() {
SDL_Rect rect = { 0, 0, 600, 450 };
SDL_FillRect(screen, &rect, 0x2244ffff);
- emscripten_run_script("simulateMouseEvent(10, 20, -1)"); // move from 0,0 to 10,20
- emscripten_run_script("simulateMouseEvent(10, 20, 0)"); // click
- emscripten_run_script("simulateMouseEvent(10, 20, 0)"); // click some more, but this one should be ignored through PeepEvent
- emscripten_run_script("simulateMouseEvent(30, 77, -1)"); // move some more
- emscripten_run_script("simulateMouseEvent(30, 77, 1)"); // trigger the end
+ emscripten_run_script("window.simulateMouseEvent(10, 20, -1)"); // move from 0,0 to 10,20
+ emscripten_run_script("window.simulateMouseEvent(10, 20, 0)"); // click
+ emscripten_run_script("window.simulateMouseEvent(10, 20, 0)"); // click some more, but this one should be ignored through PeepEvent
+ emscripten_run_script("window.simulateMouseEvent(30, 77, -1)"); // move some more
+ emscripten_run_script("window.simulateMouseEvent(30, 77, 1)"); // trigger the end
emscripten_set_main_loop(one, 0);