|
@@ -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) {
|