diff options
author | Alon Zakai <alonzakai@gmail.com> | 2012-10-29 13:46:10 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2012-10-29 13:46:10 -0700 |
commit | 05a26d92ef6da845cfcbff79c5fc7a2de56263bf (patch) | |
tree | 7fe7350cb6fcc32e69051f148f3479354e19c609 /src | |
parent | 8a1294ec809cdfd90d17cc6c0ba04525d5d4909e (diff) |
fix bug with locking an sdl surface not reading the canvas pixel data properly; fixes #664
Diffstat (limited to 'src')
-rw-r--r-- | src/library_sdl.js | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/src/library_sdl.js b/src/library_sdl.js index 608f1738..56f6a6ef 100644 --- a/src/library_sdl.js +++ b/src/library_sdl.js @@ -722,16 +722,15 @@ var LibrarySDL = { surfData.locked++; if (surfData.locked > 1) return 0; - if (!surfData.image) { - surfData.image = surfData.ctx.getImageData(0, 0, surfData.width, surfData.height); - if (surf == SDL.screen) { - var data = surfData.image.data; - var num = data.length; - for (var i = 0; i < num/4; i++) { - data[i*4+3] = 255; // opacity, as canvases blend alpha - } + surfData.image = surfData.ctx.getImageData(0, 0, surfData.width, surfData.height); + if (surf == SDL.screen) { + var data = surfData.image.data; + var num = data.length; + for (var i = 0; i < num/4; i++) { + data[i*4+3] = 255; // opacity, as canvases blend alpha } } + if (SDL.defaults.copyOnLock) { // Copy pixel data to somewhere accessible to 'C/C++' if (surfData.isFlagSet(0x00200000 /* SDL_HWPALETTE */)) { |