aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael J. Bishop <mbtyke@gmail.com>2013-07-22 11:49:45 -0400
committerMichael J. Bishop <mbtyke@gmail.com>2013-07-22 11:49:45 -0400
commita9aa50943309802200aec38af64aadafd75c9d0a (patch)
treea3996a8697794d7c55aeaacec6f3b197a3644b23
parent90c9c7630ed7fdf82c84ff9c30c5a6539fbf9530 (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.js36
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;
},