diff options
-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); |