Skip to content

Commit c56d131

Browse files
committed
[Web] Poll controllers only if at least one is detected
Keeps the spirit of godotengine#105601
1 parent 722accc commit c56d131

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

platform/web/display_server_web.cpp

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -829,6 +829,12 @@ void DisplayServerWeb::gamepad_callback(int p_index, int p_connected, const char
829829
}
830830

831831
void DisplayServerWeb::_gamepad_callback(int p_index, int p_connected, const String &p_id, const String &p_guid) {
832+
if (p_connected) {
833+
DisplayServerWeb::get_singleton()->gamepad_count += 1;
834+
} else {
835+
DisplayServerWeb::get_singleton()->gamepad_count -= 1;
836+
}
837+
832838
Input *input = Input::get_singleton();
833839
if (p_connected) {
834840
input->joy_connection_changed(p_index, true, p_id, p_guid);
@@ -1432,8 +1438,11 @@ DisplayServer::VSyncMode DisplayServerWeb::window_get_vsync_mode(WindowID p_vsyn
14321438
void DisplayServerWeb::process_events() {
14331439
process_keys();
14341440
Input::get_singleton()->flush_buffered_events();
1435-
if (godot_js_input_gamepad_sample() == OK) {
1436-
process_joypads();
1441+
1442+
if (gamepad_count > 0) {
1443+
if (godot_js_input_gamepad_sample() == OK) {
1444+
process_joypads();
1445+
}
14371446
}
14381447
}
14391448

platform/web/display_server_web.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,8 @@ class DisplayServerWeb : public DisplayServer {
104104
bool swap_cancel_ok = false;
105105
NativeMenu *native_menu = nullptr;
106106

107+
int gamepad_count = 0;
108+
107109
MouseMode mouse_mode_base = MOUSE_MODE_VISIBLE;
108110
MouseMode mouse_mode_override = MOUSE_MODE_VISIBLE;
109111
bool mouse_mode_override_enabled = false;

0 commit comments

Comments
 (0)