mirror of
https://github.com/godotengine/godot.git
synced 2025-10-23 09:53:25 +00:00
Merge pull request #52650 from Faless/js/3.x_audioworklet_nothreads_pr
[3.x] [HTML5] Refactor audio drivers. Implement AudioWorklet w/o threads.
This commit is contained in:
commit
8a48be6980
7 changed files with 345 additions and 157 deletions
|
|
@ -751,11 +751,14 @@ const char *OS_JavaScript::get_video_driver_name(int p_driver) const {
|
|||
// Audio
|
||||
|
||||
int OS_JavaScript::get_audio_driver_count() const {
|
||||
return 1;
|
||||
return audio_drivers.size();
|
||||
}
|
||||
|
||||
const char *OS_JavaScript::get_audio_driver_name(int p_driver) const {
|
||||
return "JavaScript";
|
||||
if (audio_drivers.size() <= p_driver) {
|
||||
return "Unknown";
|
||||
}
|
||||
return audio_drivers[p_driver]->get_name();
|
||||
}
|
||||
|
||||
// Clipboard
|
||||
|
|
@ -961,9 +964,7 @@ MainLoop *OS_JavaScript::get_main_loop() const {
|
|||
}
|
||||
|
||||
void OS_JavaScript::resume_audio() {
|
||||
if (audio_driver_javascript) {
|
||||
audio_driver_javascript->resume();
|
||||
}
|
||||
AudioDriverJavaScript::resume();
|
||||
}
|
||||
|
||||
void OS_JavaScript::fs_sync_callback() {
|
||||
|
|
@ -1021,9 +1022,10 @@ void OS_JavaScript::finalize() {
|
|||
emscripten_webgl_commit_frame();
|
||||
memdelete(visual_server);
|
||||
emscripten_webgl_destroy_context(webgl_ctx);
|
||||
if (audio_driver_javascript) {
|
||||
memdelete(audio_driver_javascript);
|
||||
for (int i = 0; i < audio_drivers.size(); i++) {
|
||||
memdelete(audio_drivers[i]);
|
||||
}
|
||||
audio_drivers.clear();
|
||||
}
|
||||
|
||||
// Miscellaneous
|
||||
|
|
@ -1217,7 +1219,6 @@ OS_JavaScript::OS_JavaScript() {
|
|||
|
||||
main_loop = NULL;
|
||||
visual_server = NULL;
|
||||
audio_driver_javascript = NULL;
|
||||
|
||||
swap_ok_cancel = false;
|
||||
idb_available = godot_js_os_fs_is_persistent() != 0;
|
||||
|
|
@ -1225,8 +1226,13 @@ OS_JavaScript::OS_JavaScript() {
|
|||
idb_is_syncing = false;
|
||||
|
||||
if (AudioDriverJavaScript::is_available()) {
|
||||
audio_driver_javascript = memnew(AudioDriverJavaScript);
|
||||
AudioDriverManager::add_driver(audio_driver_javascript);
|
||||
#ifdef NO_THREADS
|
||||
audio_drivers.push_back(memnew(AudioDriverScriptProcessor));
|
||||
#endif
|
||||
audio_drivers.push_back(memnew(AudioDriverWorklet));
|
||||
}
|
||||
for (int i = 0; i < audio_drivers.size(); i++) {
|
||||
AudioDriverManager::add_driver(audio_drivers[i]);
|
||||
}
|
||||
|
||||
Vector<Logger *> loggers;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue