diff options
author | Alon Zakai <alonzakai@gmail.com> | 2012-04-13 17:39:45 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2012-04-13 17:39:45 -0700 |
commit | 23c05c5ce9c602c149a1b0138423088fa63ceb28 (patch) | |
tree | 45b196df12b2139451278fb582a5f7711d75e0c6 /src | |
parent | 984f3454a9b2a51213aef192cb8aa658d3373e66 (diff) |
optimize LockSurface
Diffstat (limited to 'src')
-rw-r--r-- | src/library_sdl.js | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/library_sdl.js b/src/library_sdl.js index d35e179b..d27ae1b2 100644 --- a/src/library_sdl.js +++ b/src/library_sdl.js @@ -488,11 +488,14 @@ var LibrarySDL = { } if (SDL.defaults.copyOnLock) { // Copy pixel data to somewhere accessible to 'C/C++' +#if USE_TYPED_ARRAYS == 2 + HEAPU8.set(surfData.image.data, surfData.buffer); +#else var num2 = surfData.image.data.length; - // TODO: use typed array Set() for (var i = 0; i < num2; i++) { {{{ makeSetValue('surfData.buffer', 'i', 'surfData.image.data[i]', 'i8') }}}; } +#endif } // Mark in C/C++-accessible SDL structure // SDL_Surface has the following fields: Uint32 flags, SDL_PixelFormat *format; int w, h; Uint16 pitch; void *pixels; ... @@ -695,6 +698,8 @@ var LibrarySDL = { // SDL_Image IMG_Load: function(filename) { + // XXX Image load by default creates HWSURFACE, so you must call LockSurface to access + // pixel data from C++! filename = FS.standardizePath(Pointer_stringify(filename)); var raw = preloadedImages[filename]; assert(raw, 'Cannot find preloaded image ' + filename); |