From f7870d49682aac1cc1950f119514f87868c69509 Mon Sep 17 00:00:00 2001 From: Megamouse Date: Mon, 20 Sep 2021 20:39:37 +0200 Subject: [PATCH] cellOsk: do not notify INPUT_ENTERED on each input Apparently the event is only sent when a user confirms the dialog during any continuous mode with seperate windows. --- rpcs3/Emu/Cell/Modules/cellOskDialog.cpp | 28 +++++++----------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/rpcs3/Emu/Cell/Modules/cellOskDialog.cpp b/rpcs3/Emu/Cell/Modules/cellOskDialog.cpp index b83998f561..09f4ce5efa 100644 --- a/rpcs3/Emu/Cell/Modules/cellOskDialog.cpp +++ b/rpcs3/Emu/Cell/Modules/cellOskDialog.cpp @@ -123,17 +123,15 @@ std::shared_ptr _get_osk_dialog(bool create = false) return osk.dlg; } - else + + const auto init = osk.init.access(); + + if (!init) { - const auto init = osk.init.access(); - - if (!init) - { - return nullptr; - } - - return osk.dlg; + return nullptr; } + + return osk.dlg; } error_code cellOskDialogLoadAsync(u32 container, vm::ptr dialogParam, vm::ptr inputFieldInfo) @@ -301,16 +299,6 @@ error_code cellOskDialogLoadAsync(u32 container, vm::ptr dia input::SetIntercepted(false); }; - osk->on_osk_input_entered = [wptr = std::weak_ptr(osk)]() - { - const auto osk = wptr.lock(); - - if (g_fxo->get().use_separate_windows.load() && (g_fxo->get().osk_continuous_mode.load() != CELL_OSKDIALOG_CONTINUOUS_MODE_NONE)) - { - sysutil_send_system_cmd(CELL_SYSUTIL_OSKDIALOG_INPUT_ENTERED, 0); - } - }; - input::SetIntercepted(true); Emu.CallAfter([=, &result]() @@ -332,7 +320,7 @@ error_code cellOskDialogLoadAsync(u32 container, vm::ptr dia error_code cellOskDialogLoadAsyncExt() { - UNIMPLEMENTED_FUNC(cellOskDialog); + cellOskDialog.todo("cellOskDialogLoadAsyncExt()"); return CELL_OK; }