aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-04-13 17:39:45 -0700
committerAlon Zakai <alonzakai@gmail.com>2012-04-13 17:39:45 -0700
commit23c05c5ce9c602c149a1b0138423088fa63ceb28 (patch)
tree45b196df12b2139451278fb582a5f7711d75e0c6 /src
parent984f3454a9b2a51213aef192cb8aa658d3373e66 (diff)
optimize LockSurface
Diffstat (limited to 'src')
-rw-r--r--src/library_sdl.js7
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);