diff options
author | Michael J. Bishop <mbtyke@gmail.com> | 2013-07-22 11:49:45 -0400 |
---|---|---|
committer | Michael J. Bishop <mbtyke@gmail.com> | 2013-07-22 11:49:45 -0400 |
commit | a9aa50943309802200aec38af64aadafd75c9d0a (patch) | |
tree | a3996a8697794d7c55aeaacec6f3b197a3644b23 | |
parent | 90c9c7630ed7fdf82c84ff9c30c5a6539fbf9530 (diff) |
Added mime type information to SDL_rwops in `SDL_RWFromFile` as a hint
to processing down the line.
Changed the `Pointer_stringify()` call to occur in `SDL_RWFromFile`
instead of downstream which makes more sense.
Cleaned up formatting.
-rw-r--r-- | src/library_sdl.js | 36 |
1 files changed, 25 insertions, 11 deletions
diff --git a/src/library_sdl.js b/src/library_sdl.js index 5779103c..74001172 100644 --- a/src/library_sdl.js +++ b/src/library_sdl.js @@ -651,6 +651,20 @@ var LibrarySDL = { return ret; }, + + getMimetype: function(name) { + Module.printErr( name + " is type " + typeof(name) ); + return { + 'jpg': 'image/jpeg', + 'jpeg': 'image/jpeg', + 'png': 'image/png', + 'bmp': 'image/bmp', + 'ogg': 'audio/ogg', + 'wav': 'audio/wav', + 'mp3': 'audio/mpeg' + }[name.substr(name.lastIndexOf('.')+1)]; + }, + // Debugging debugSurface: function(surfData) { @@ -1239,7 +1253,7 @@ var LibrarySDL = { return 0; } - filename = FS.standardizePath(Pointer_stringify(filename)); + filename = FS.standardizePath(filename); if (filename[0] == '/') { // Convert the path to relative filename = filename.substr(1); @@ -1417,17 +1431,16 @@ var LibrarySDL = { Mix_LoadWAV_RW: function(rwopsID, freesrc) { var rwops = SDL.rwops[rwopsID]; - if ( rwops === undefined ) + if (rwops === undefined) return 0; var filename = ''; var audio; var bytes; - if ( rwops.filename != undefined ) - { + if (rwops.filename !== undefined) { filename = rwops.filename; - filename = FS.standardizePath(Pointer_stringify(filename)); + filename = FS.standardizePath(filename); var raw = Module["preloadedAudios"][filename]; if (!raw) { if (raw === null) Module.printErr('Trying to reuse preloaded audio, but freePreloadedMediaOnUse is set!'); @@ -1439,7 +1452,7 @@ var LibrarySDL = { if (fileObject === null) Module.printErr('Couldn\'t find file for: ' + filename); // We found the file. Load the contents - if ( fileObject && !fileObject.isFolder && fileObject.read ) { + if (fileObject && !fileObject.isFolder && fileObject.read) { bytes = fileObject.contents } else { return 0; @@ -1450,7 +1463,7 @@ var LibrarySDL = { } audio = raw; } - else if (rwops.bytes != undefined) { + else if (rwops.bytes !== undefined) { bytes = HEAPU8.subarray(rwops.bytes, rwops.bytes + rwops.count); } else { @@ -1460,7 +1473,7 @@ var LibrarySDL = { // Here, we didn't find a preloaded audio but we either were passed a filepath for // which we loaded bytes, or we were passed some bytes if (audio === undefined && bytes) { - var blob = new Blob([new Uint8Array(bytes)], {type: 'audio/ogg'}); + var blob = new Blob([new Uint8Array(bytes)], {type: rwops.mimetype}); var url = URL.createObjectURL(blob); audio = new Audio(); audio.src = url; @@ -2037,13 +2050,14 @@ var LibrarySDL = { SDL_InitSubSystem: function(flags) { return 0 }, SDL_RWFromConstMem: function(mem, size) { var id = SDL.rwops.length; // TODO: recycle ids when they are null - SDL.rwops.push( { 'bytes': mem, 'count': size } ); + SDL.rwops.push({ bytes: mem, count: size }); return id; }, - SDL_RWFromFile: function(filename, mode) { + SDL_RWFromFile: function(_name, mode) { var id = SDL.rwops.length; // TODO: recycle ids when they are null - SDL.rwops.push( { 'filename': filename } ); + var name = Pointer_stringify(_name) + SDL.rwops.push({ filename: name, mimetype: SDL.getMimetype(name) }); return id; }, |