summaryrefslogtreecommitdiff
path: root/platform
diff options
context:
space:
mode:
Diffstat (limited to 'platform')
-rw-r--r--platform/javascript/audio_driver_javascript.cpp9
-rw-r--r--platform/javascript/audio_driver_javascript.h1
-rw-r--r--platform/javascript/os_javascript.cpp9
-rw-r--r--platform/javascript/os_javascript.h3
-rw-r--r--platform/uwp/export/export.cpp6
5 files changed, 22 insertions, 6 deletions
diff --git a/platform/javascript/audio_driver_javascript.cpp b/platform/javascript/audio_driver_javascript.cpp
index fcfc75280d..16fdc267f3 100644
--- a/platform/javascript/audio_driver_javascript.cpp
+++ b/platform/javascript/audio_driver_javascript.cpp
@@ -146,6 +146,15 @@ void AudioDriverJavaScript::start() {
/* clang-format on */
}
+void AudioDriverJavaScript::resume() {
+ /* clang-format off */
+ EM_ASM({
+ if (_audioDriver_audioContext.resume)
+ _audioDriver_audioContext.resume();
+ });
+ /* clang-format on */
+}
+
int AudioDriverJavaScript::get_mix_rate() const {
/* clang-format off */
diff --git a/platform/javascript/audio_driver_javascript.h b/platform/javascript/audio_driver_javascript.h
index bf7e2bcce6..9dcba02c96 100644
--- a/platform/javascript/audio_driver_javascript.h
+++ b/platform/javascript/audio_driver_javascript.h
@@ -49,6 +49,7 @@ public:
virtual Error init();
virtual void start();
+ void resume();
virtual int get_mix_rate() const;
virtual SpeakerMode get_speaker_mode() const;
virtual void lock();
diff --git a/platform/javascript/os_javascript.cpp b/platform/javascript/os_javascript.cpp
index cc3018716d..b92634c8d6 100644
--- a/platform/javascript/os_javascript.cpp
+++ b/platform/javascript/os_javascript.cpp
@@ -245,6 +245,8 @@ EM_BOOL OS_JavaScript::keydown_callback(int p_event_type, const EmscriptenKeyboa
return false;
}
os->input->parse_input_event(ev);
+ // Resume audio context after input in case autoplay was denied.
+ os->audio_driver_javascript.resume();
return true;
}
@@ -335,6 +337,8 @@ EM_BOOL OS_JavaScript::mouse_button_callback(int p_event_type, const EmscriptenM
ev->set_button_mask(mask);
os->input->parse_input_event(ev);
+ // Resume audio context after input in case autoplay was denied.
+ os->audio_driver_javascript.resume();
// Prevent multi-click text selection and wheel-click scrolling anchor.
// Context menu is prevented through contextmenu event.
return true;
@@ -663,6 +667,8 @@ EM_BOOL OS_JavaScript::touch_press_callback(int p_event_type, const EmscriptenTo
os->input->parse_input_event(ev);
}
+ // Resume audio context after input in case autoplay was denied.
+ os->audio_driver_javascript.resume();
return true;
}
@@ -970,7 +976,8 @@ bool OS_JavaScript::main_loop_iterate() {
}
}
- process_joypads();
+ if (emscripten_sample_gamepad_data() == EMSCRIPTEN_RESULT_SUCCESS)
+ process_joypads();
if (just_exited_fullscreen) {
if (window_maximized) {
diff --git a/platform/javascript/os_javascript.h b/platform/javascript/os_javascript.h
index 64148915a5..a9f9e23463 100644
--- a/platform/javascript/os_javascript.h
+++ b/platform/javascript/os_javascript.h
@@ -58,6 +58,7 @@ class OS_JavaScript : public OS_Unix {
int last_click_button_index;
MainLoop *main_loop;
+ int video_driver_index;
AudioDriverJavaScript audio_driver_javascript;
bool idb_available;
@@ -85,8 +86,6 @@ class OS_JavaScript : public OS_Unix {
static void file_access_close_callback(const String &p_file, int p_flags);
- int video_driver_index;
-
protected:
virtual int get_current_video_driver() const;
diff --git a/platform/uwp/export/export.cpp b/platform/uwp/export/export.cpp
index 6f4898c005..4dcb6cf38e 100644
--- a/platform/uwp/export/export.cpp
+++ b/platform/uwp/export/export.cpp
@@ -73,7 +73,7 @@ static const char *uwp_uap_capabilities[] = {
"voipCall",
NULL
};
-static const char *uwp_device_capabilites[] = {
+static const char *uwp_device_capabilities[] = {
"bluetooth",
"location",
"microphone",
@@ -841,7 +841,7 @@ class EditorExportUWP : public EditorExportPlatform {
}
uap++;
}
- const char **device = uwp_device_capabilites;
+ const char **device = uwp_device_capabilities;
while (*device) {
if ((bool)p_preset->get("capabilities/" + String(*device))) {
capabilities_elements += " <DeviceCapability Name=\"" + String(*device) + "\" />\n";
@@ -1105,7 +1105,7 @@ public:
uap++;
}
- const char **device = uwp_device_capabilites;
+ const char **device = uwp_device_capabilities;
while (*device) {
r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "capabilities/" + String(*device).camelcase_to_underscore(false)), false));
device++;