aboutsummaryrefslogtreecommitdiff
path: root/emcc
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-05-04 18:12:53 -0700
committerAlon Zakai <alonzakai@gmail.com>2012-05-04 18:12:53 -0700
commitbfc041b6b56837ae1a4365fc2f7827dd35727f65 (patch)
treea1525cd895ee165d32ebb75b217954454923617c /emcc
parentb4f461850a2fc17e60a5698b505682f1c910e970 (diff)
workaround for chromium bug 124926 to prevent hanging when loading audio in chrome
Diffstat (limited to 'emcc')
-rwxr-xr-xemcc13
1 files changed, 11 insertions, 2 deletions
diff --git a/emcc b/emcc
index 46efe0da..eeb8fd7b 100755
--- a/emcc
+++ b/emcc
@@ -985,14 +985,23 @@ try:
var b = new Blob([byteArray.buffer], { type: '%(mimetype)s' });
var url = URLObject.createObjectURL(b); // XXX we never revoke this!
var audio = new Audio();
+ audio.removedDependency = false;
audio['oncanplaythrough'] = function() { // XXX string for closure
audio['oncanplaythrough'] = null;
preloadedAudios['%(filename)s'] = audio;
- removeRunDependency();
+ if (!audio.removedDependency) {
+ removeRunDependency();
+ audio.removedDependency = true;
+ }
};
audio.onerror = function(event) {
- console.log('Audio %(filename)s could not be decoded');
+ if (!audio.removedDependency) {
+ console.log('Audio %(filename)s could not be decoded or timed out trying to decode');
+ removeRunDependency();
+ audio.removedDependency = true;
+ }
};
+ setTimeout(audio.onerror, 2000); // workaround for chromium bug 124926 (still no audio with this, but at least we don't hang)
audio.src = url;
} else {
preloadedAudios['%(filename)s'] = new Audio(); // empty shim