diff --git a/blcrack/cracker/ui/hook.cpp b/blcrack/cracker/ui/hook.cpp index 289dd17bf..49750a634 100644 --- a/blcrack/cracker/ui/hook.cpp +++ b/blcrack/cracker/ui/hook.cpp @@ -58,7 +58,7 @@ int64_t my_Input(void* thiz, void* ex_ab, void* ex_ac) g_use_native_input.store(true); } - if (g_imgui_started.load()) { + if (g_imgui_started.load() && CrackerUI::get_instance().is_ui_showed()) { ImGui_ImplAndroid_HandleInputEvent((AInputEvent *) thiz); } @@ -88,7 +88,7 @@ int64_t my_Consume(void* thiz, int64_t arg1, char arg2, int64_t arg3, uint32_t* g_use_native_input.store(true); } - if (g_imgui_started.load()) { + if (g_imgui_started.load() && CrackerUI::get_instance().is_ui_showed()) { ImGui_ImplAndroid_HandleInputEvent(*input_event); } @@ -143,7 +143,7 @@ void My_ImGui_ImplAndroid_HandleInputEvent(const UnityEngine_Touch_o& touch) { using GlobalClickEventMgr_HandlePinchOnTouch_fnT = void(void* thiz, UnityEngine_Touch_array* touches); GlobalClickEventMgr_HandlePinchOnTouch_fnT* old_GlobalClickEventMgr_HandlePinchOnTouch = nullptr; void my_GlobalClickEventMgr_HandlePinchOnTouch(void* thiz, UnityEngine_Touch_array* touches) { - if (touches != nullptr && !g_use_native_input.load() && g_imgui_started.load()) { + if (touches != nullptr && !g_use_native_input.load() && g_imgui_started.load() && CrackerUI::get_instance().is_ui_showed()) { for(int i = 0; i < touches->max_length; i++) { My_ImGui_ImplAndroid_HandleInputEvent(touches->m_Items[i]); } diff --git a/blcrack/cracker/ui/ui.cpp b/blcrack/cracker/ui/ui.cpp index a4a00d138..eb6442ebb 100644 --- a/blcrack/cracker/ui/ui.cpp +++ b/blcrack/cracker/ui/ui.cpp @@ -220,6 +220,10 @@ void CrackerUI::close_ui() { m_is_show_ui.store(false); } +bool CrackerUI::is_ui_showed() { + return m_is_show_ui.load(); +} + CrackerUI& CrackerUI::get_instance() { static CrackerUI instance; return instance; diff --git a/blcrack/cracker/ui/ui.hpp b/blcrack/cracker/ui/ui.hpp index 71c705968..64f311179 100644 --- a/blcrack/cracker/ui/ui.hpp +++ b/blcrack/cracker/ui/ui.hpp @@ -16,6 +16,7 @@ public: void show_ui(); void close_ui(); + bool is_ui_showed(); static CrackerUI& get_instance();