Merge pull request #37519 from HaSa1002/fix-duplicate-inputs-win
Fix input event being dispatched multiple times on Windows
This commit is contained in:
commit
1702fb7ad2
2 changed files with 10 additions and 0 deletions
|
@ -1695,6 +1695,12 @@ void DisplayServerWindows::_dispatch_input_events(const Ref<InputEvent> &p_event
|
|||
}
|
||||
|
||||
void DisplayServerWindows::_dispatch_input_event(const Ref<InputEvent> &p_event) {
|
||||
_THREAD_SAFE_METHOD_
|
||||
if (in_dispatch_input_event) {
|
||||
return;
|
||||
}
|
||||
|
||||
in_dispatch_input_event = true;
|
||||
Variant ev = p_event;
|
||||
Variant *evp = &ev;
|
||||
Variant ret;
|
||||
|
@ -1706,6 +1712,7 @@ void DisplayServerWindows::_dispatch_input_event(const Ref<InputEvent> &p_event)
|
|||
ERR_FAIL_COND(!windows.has(event_from_window->get_window_id()));
|
||||
Callable callable = windows[event_from_window->get_window_id()].input_event_callback;
|
||||
if (callable.is_null()) {
|
||||
in_dispatch_input_event = false;
|
||||
return;
|
||||
}
|
||||
callable.call((const Variant **)&evp, 1, ret, ce);
|
||||
|
@ -1719,6 +1726,8 @@ void DisplayServerWindows::_dispatch_input_event(const Ref<InputEvent> &p_event)
|
|||
callable.call((const Variant **)&evp, 1, ret, ce);
|
||||
}
|
||||
}
|
||||
|
||||
in_dispatch_input_event = false;
|
||||
}
|
||||
|
||||
LRESULT DisplayServerWindows::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
|
||||
|
|
|
@ -388,6 +388,7 @@ class DisplayServerWindows : public DisplayServer {
|
|||
uint32_t last_button_state = 0;
|
||||
bool use_raw_input = false;
|
||||
bool drop_events = false;
|
||||
bool in_dispatch_input_event = false;
|
||||
bool console_visible = false;
|
||||
|
||||
WNDCLASSEXW wc;
|
||||
|
|
Loading…
Reference in a new issue