diff --git a/rpcs3/Emu/RSX/Overlays/overlay_message_dialog.cpp b/rpcs3/Emu/RSX/Overlays/overlay_message_dialog.cpp index 8494a61f52..cc990c4bed 100644 --- a/rpcs3/Emu/RSX/Overlays/overlay_message_dialog.cpp +++ b/rpcs3/Emu/RSX/Overlays/overlay_message_dialog.cpp @@ -182,6 +182,16 @@ namespace rsx close(true, true); } + void message_dialog::close(bool use_callback, bool stop_pad_interception) + { + if (num_progress_bars > 0) + { + Emu.GetCallbacks().handle_taskbar_progress(0, 1); + } + + user_interface::close(use_callback, stop_pad_interception); + } + struct msg_dialog_thread { static constexpr auto thread_name = "MsgDialog Thread"sv; diff --git a/rpcs3/Emu/RSX/Overlays/overlay_message_dialog.h b/rpcs3/Emu/RSX/Overlays/overlay_message_dialog.h index a9663450fc..9bccea4751 100644 --- a/rpcs3/Emu/RSX/Overlays/overlay_message_dialog.h +++ b/rpcs3/Emu/RSX/Overlays/overlay_message_dialog.h @@ -32,6 +32,7 @@ namespace rsx compiled_resource get_compiled() override; void on_button_pressed(pad_button button_press) override; + void close(bool use_callback, bool stop_pad_interception) override; error_code show(bool is_blocking, const std::string& text, const MsgDialogType& type, std::function on_close); diff --git a/rpcs3/Emu/RSX/Overlays/overlays.cpp b/rpcs3/Emu/RSX/Overlays/overlays.cpp index e3f4d48bba..9379e95fd2 100644 --- a/rpcs3/Emu/RSX/Overlays/overlays.cpp +++ b/rpcs3/Emu/RSX/Overlays/overlays.cpp @@ -218,12 +218,6 @@ namespace rsx // NOTE: Object removal should be the last step if (auto& manager = g_fxo->get(); g_fxo->is_init()) { - if (auto dlg = manager.get()) - { - if (dlg->progress_bar_count()) - Emu.GetCallbacks().handle_taskbar_progress(0, 1); - } - manager.remove(uid); } } diff --git a/rpcs3/Emu/RSX/Overlays/overlays.h b/rpcs3/Emu/RSX/Overlays/overlays.h index a25bcf2971..d47f785864 100644 --- a/rpcs3/Emu/RSX/Overlays/overlays.h +++ b/rpcs3/Emu/RSX/Overlays/overlays.h @@ -89,7 +89,7 @@ namespace rsx virtual void on_button_pressed(pad_button /*button_press*/) {} - void close(bool use_callback, bool stop_pad_interception); + virtual void close(bool use_callback, bool stop_pad_interception); s32 run_input_loop(); };