aboutsummaryrefslogtreecommitdiff
path: root/src/library_sdl.js
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-04-29 12:57:28 -0700
committerAlon Zakai <alonzakai@gmail.com>2012-04-29 12:57:28 -0700
commitcb0bb1c1a76850bd4a3ee6faa2af7e879d23e991 (patch)
tree62847c234b69e873d763994974fc10e9093bd223 /src/library_sdl.js
parent5b61f2b4b6aa7f55962b41e532d9c2bad7c97e78 (diff)
support for fullscreen and pointer lock, and prevent oom from sdl event queue overflow
Diffstat (limited to 'src/library_sdl.js')
-rw-r--r--src/library_sdl.js16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/library_sdl.js b/src/library_sdl.js
index a4923352..d2afebba 100644
--- a/src/library_sdl.js
+++ b/src/library_sdl.js
@@ -349,8 +349,17 @@ var LibrarySDL = {
receiveEvent: function(event) {
switch(event.type) {
- case 'keydown': case 'keyup': case 'mousedown': case 'mouseup': case 'mousemove':
+ case 'mousemove':
+ // workaround for firefox bug 750111
+ event.movementX = event.mozMovementX;
+ event.movementY = event.mozMovementY;
+ // fall through
+ case 'keydown': case 'keyup': case 'mousedown': case 'mouseup':
SDL.events.push(event);
+ if (SDL.events.length >= 10000) {
+ Module.printErr('SDL event queue full, dropping earliest event');
+ SDL.events.shift();
+ }
if ((event.keyCode >= 37 && event.keyCode <= 40) || // arrow keys
event.keyCode == 32 || // space
event.keyCode == 33 || event.keyCode == 34) { // page up/down
@@ -358,7 +367,6 @@ var LibrarySDL = {
}
break;
}
- //event.preventDefault();
return false;
},
@@ -415,8 +423,8 @@ var LibrarySDL = {
{{{ makeSetValue('ptr', 'SDL.structs.MouseMotionEvent.state', 'down ? 1 : 0', 'i8') }}};
{{{ makeSetValue('ptr', 'SDL.structs.MouseMotionEvent.x', 'x', 'i32') }}};
{{{ makeSetValue('ptr', 'SDL.structs.MouseMotionEvent.y', 'y', 'i32') }}};
- {{{ makeSetValue('ptr', 'SDL.structs.MouseMotionEvent.xrel', 'x - SDL.mouseX', 'i32') }}};
- {{{ makeSetValue('ptr', 'SDL.structs.MouseMotionEvent.yrel', 'y - SDL.mouseY', 'i32') }}};
+ {{{ makeSetValue('ptr', 'SDL.structs.MouseMotionEvent.xrel', 'Browser.getMovementX(x - SDL.mouseX, event)', 'i32') }}};
+ {{{ makeSetValue('ptr', 'SDL.structs.MouseMotionEvent.yrel', 'Browser.getMovementY(y - SDL.mouseY, event)', 'i32') }}};
}
SDL.mouseX = x;
SDL.mouseY = y;