diff options
author | Alon Zakai <alonzakai@gmail.com> | 2012-05-04 18:12:53 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2012-05-04 18:12:53 -0700 |
commit | bfc041b6b56837ae1a4365fc2f7827dd35727f65 (patch) | |
tree | a1525cd895ee165d32ebb75b217954454923617c /emcc | |
parent | b4f461850a2fc17e60a5698b505682f1c910e970 (diff) |
workaround for chromium bug 124926 to prevent hanging when loading audio in chrome
Diffstat (limited to 'emcc')
-rwxr-xr-x | emcc | 13 |
1 files changed, 11 insertions, 2 deletions
@@ -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 |