diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2020-05-11 11:32:12 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-11 11:32:12 +0200 |
commit | 39da96e4d638399c098e21b2c4fff6ddd7145c65 (patch) | |
tree | a18e29b7316288c2755f6c3a5b840ad008b32a07 /platform/javascript/audio_driver_javascript.cpp | |
parent | 70e39cc9a583cd315cff5ed63bb8ce0d72e99103 (diff) | |
parent | fd916342ec43aa45c5b53184f3a2cda76c202476 (diff) | |
download | redot-engine-39da96e4d638399c098e21b2c4fff6ddd7145c65.tar.gz |
Merge pull request #38587 from Faless/js/improvements
DisplayServerJavaScript, improvements to HTML5 build (still dummy renderer).
Diffstat (limited to 'platform/javascript/audio_driver_javascript.cpp')
-rw-r--r-- | platform/javascript/audio_driver_javascript.cpp | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/platform/javascript/audio_driver_javascript.cpp b/platform/javascript/audio_driver_javascript.cpp index 8f857478e5..690ce5ba47 100644 --- a/platform/javascript/audio_driver_javascript.cpp +++ b/platform/javascript/audio_driver_javascript.cpp @@ -190,19 +190,43 @@ void AudioDriverJavaScript::lock() { void AudioDriverJavaScript::unlock() { } -void AudioDriverJavaScript::finish() { +void AudioDriverJavaScript::finish_async() { + + // Close the context, add the operation to the async_finish list in module. + int id = _driver_id; + _driver_id = 0; /* clang-format off */ EM_ASM({ + var ref = Module.IDHandler.get($0); + Module.async_finish.push(new Promise(function(accept, reject) { + if (!ref) { + console.log("Ref not found!", $0, Module.IDHandler); + setTimeout(accept, 0); + } else { + const context = ref['context']; + // Disconnect script and input. + ref['script'].disconnect(); + if (ref['input']) + ref['input'].disconnect(); + ref = null; + context.close().then(function() { + accept(); + }).catch(function(e) { + accept(); + }); + } + })); Module.IDHandler.remove($0); - }, _driver_id); + }, id); /* clang-format on */ +} +void AudioDriverJavaScript::finish() { if (internal_buffer) { memdelete_arr(internal_buffer); internal_buffer = nullptr; } - _driver_id = 0; } Error AudioDriverJavaScript::capture_start() { |