From 81ff956a48409857b6d2d0a0fba28458a53d78ab Mon Sep 17 00:00:00 2001 From: Megamouse Date: Mon, 23 Jan 2023 19:08:01 +0100 Subject: [PATCH] cellOskDialog: use getter instead of weak_ptr --- rpcs3/Emu/Cell/Modules/cellOskDialog.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/rpcs3/Emu/Cell/Modules/cellOskDialog.cpp b/rpcs3/Emu/Cell/Modules/cellOskDialog.cpp index 05a6a0d4a1..d0b3e66ffd 100644 --- a/rpcs3/Emu/Cell/Modules/cellOskDialog.cpp +++ b/rpcs3/Emu/Cell/Modules/cellOskDialog.cpp @@ -275,11 +275,16 @@ error_code cellOskDialogLoadAsync(u32 container, vm::ptr dia } } - osk->on_osk_close = [wptr = std::weak_ptr(osk)](s32 status) + osk->on_osk_close = [](s32 status) { cellOskDialog.notice("on_osk_close(status=%d)", status); - const auto osk = wptr.lock(); + const auto osk = _get_osk_dialog(false); + if (!osk) + { + return; + } + osk->state = OskDialogState::Closed; auto& info = g_fxo->get(); @@ -402,16 +407,17 @@ error_code cellOskDialogLoadAsync(u32 container, vm::ptr dia }; // Set key callback - osk->on_osk_key_input_entered = [wptr = std::weak_ptr(osk)](CellOskDialogKeyMessage key_message) + osk->on_osk_key_input_entered = [](CellOskDialogKeyMessage key_message) { - const auto osk = wptr.lock(); auto& info = g_fxo->get(); std::lock_guard lock(info.text_mtx); auto event_hook_callback = info.osk_hardware_keyboard_event_hook_callback.load(); cellOskDialog.notice("on_osk_key_input_entered: led=%d, mkey=%d, keycode=%d, hook_event_mode=%d, event_hook_callback=*0x%x", key_message.led, key_message.mkey, key_message.keycode, info.hook_event_mode.load(), event_hook_callback); - if (!event_hook_callback) + const auto osk = _get_osk_dialog(false); + + if (!osk || !event_hook_callback) { // Nothing to do here return;