diff --git a/rpcs3/Emu/Cell/Modules/cellMsgDialog.cpp b/rpcs3/Emu/Cell/Modules/cellMsgDialog.cpp index 8a8c22708f..b98704dcb9 100644 --- a/rpcs3/Emu/Cell/Modules/cellMsgDialog.cpp +++ b/rpcs3/Emu/Cell/Modules/cellMsgDialog.cpp @@ -116,7 +116,7 @@ struct msg_dlg_thread_info continue; } - dlg->close(); + dlg->close(true, true); } } else if (const auto dlg = g_fxo->get()->get()) @@ -463,7 +463,7 @@ error_code cellMsgDialogAbort() if (auto dlg = manager->get()) { g_fxo->get()->wait_until = 0; - dlg->close(false); + dlg->close(false, true); return CELL_OK; } } diff --git a/rpcs3/Emu/RSX/Overlays/Shaders/shader_loading_dialog_native.cpp b/rpcs3/Emu/RSX/Overlays/Shaders/shader_loading_dialog_native.cpp index 7318f23d6e..65fe9243a1 100644 --- a/rpcs3/Emu/RSX/Overlays/Shaders/shader_loading_dialog_native.cpp +++ b/rpcs3/Emu/RSX/Overlays/Shaders/shader_loading_dialog_native.cpp @@ -50,6 +50,6 @@ namespace rsx void shader_loading_dialog_native::close() { dlg->return_code = CELL_OK; - dlg->close(); + dlg->close(false, false); } } diff --git a/rpcs3/Emu/RSX/Overlays/overlay_message_dialog.cpp b/rpcs3/Emu/RSX/Overlays/overlay_message_dialog.cpp index 0c46e79b87..19c3c853f4 100644 --- a/rpcs3/Emu/RSX/Overlays/overlay_message_dialog.cpp +++ b/rpcs3/Emu/RSX/Overlays/overlay_message_dialog.cpp @@ -159,7 +159,7 @@ namespace rsx default: return; } - close(); + close(true, true); } error_code message_dialog::show(bool is_blocking, const std::string& text, const MsgDialogType& type, std::function on_close) diff --git a/rpcs3/Emu/RSX/Overlays/overlay_osk.cpp b/rpcs3/Emu/RSX/Overlays/overlay_osk.cpp index 6c221fc3ad..7b36468516 100644 --- a/rpcs3/Emu/RSX/Overlays/overlay_osk.cpp +++ b/rpcs3/Emu/RSX/Overlays/overlay_osk.cpp @@ -23,7 +23,7 @@ namespace rsx } visible = false; - close(); + close(true, true); }; fade_animation.active = true; diff --git a/rpcs3/Emu/RSX/Overlays/overlay_save_dialog.cpp b/rpcs3/Emu/RSX/Overlays/overlay_save_dialog.cpp index 0fa93fce29..6e49502bdf 100644 --- a/rpcs3/Emu/RSX/Overlays/overlay_save_dialog.cpp +++ b/rpcs3/Emu/RSX/Overlays/overlay_save_dialog.cpp @@ -122,7 +122,7 @@ namespace rsx return_code = m_list->get_selected_index(); // Fall through case pad_button::circle: - close(); + close(true, true); break; case pad_button::dpad_up: m_list->select_previous(); diff --git a/rpcs3/Emu/RSX/Overlays/overlay_shader_compile_notification.cpp b/rpcs3/Emu/RSX/Overlays/overlay_shader_compile_notification.cpp index cf6c6b7038..776e3fb83b 100644 --- a/rpcs3/Emu/RSX/Overlays/overlay_shader_compile_notification.cpp +++ b/rpcs3/Emu/RSX/Overlays/overlay_shader_compile_notification.cpp @@ -72,7 +72,7 @@ namespace rsx { auto current_time = get_system_time(); if (current_time > expire_time) - close(); + close(false, false); update_animation(current_time); diff --git a/rpcs3/Emu/RSX/Overlays/overlay_trophy_notification.cpp b/rpcs3/Emu/RSX/Overlays/overlay_trophy_notification.cpp index 8e8d62b420..ea6ff79796 100644 --- a/rpcs3/Emu/RSX/Overlays/overlay_trophy_notification.cpp +++ b/rpcs3/Emu/RSX/Overlays/overlay_trophy_notification.cpp @@ -78,7 +78,7 @@ namespace rsx sliding_animation.on_finish = [this] { s_trophy_semaphore.release(); - close(); + close(false, false); }; sliding_animation.active = true; diff --git a/rpcs3/Emu/RSX/Overlays/overlays.cpp b/rpcs3/Emu/RSX/Overlays/overlays.cpp index 1aad08bad1..331b022c44 100644 --- a/rpcs3/Emu/RSX/Overlays/overlays.cpp +++ b/rpcs3/Emu/RSX/Overlays/overlays.cpp @@ -181,7 +181,7 @@ namespace rsx return 0; } - void user_interface::close(bool use_callback) + void user_interface::close(bool use_callback, bool stop_pad_interception) { // Force unload exit.release(true); @@ -197,7 +197,10 @@ namespace rsx thread_bits.wait(b); } - pad::SetIntercepted(false); + if (stop_pad_interception) + { + pad::SetIntercepted(false); + } if (on_close && use_callback) { diff --git a/rpcs3/Emu/RSX/Overlays/overlays.h b/rpcs3/Emu/RSX/Overlays/overlays.h index e7ddf88a97..c538ebc2f9 100644 --- a/rpcs3/Emu/RSX/Overlays/overlays.h +++ b/rpcs3/Emu/RSX/Overlays/overlays.h @@ -90,7 +90,7 @@ namespace rsx virtual void on_button_pressed(pad_button /*button_press*/) {} - void close(bool use_callback = true); + void close(bool use_callback, bool stop_pad_interception); s32 run_input_loop(); };