1
0
mirror of https://github.com/RPCS3/rpcs3.git synced 2024-11-22 18:53:28 +01:00

Workaround: Skip progress_dialog during gameplay

This commit is contained in:
Megamouse 2021-04-06 20:05:16 +02:00 committed by Ivan
parent 497fbb17a8
commit 02febd3f65
4 changed files with 16 additions and 5 deletions

View File

@ -964,6 +964,12 @@ void ppu_thread::cpu_task()
}
ppu_initialize(), spu_cache::initialize();
// Wait until the progress dialog is closed.
// We don't want to open a cell dialog while a native progress dialog is still open.
g_progr_ptotal.wait<atomic_wait::op_ne>(0);
g_fxo->get<progress_dialog_workaround>().skip_the_progress_dialog = true;
break;
}
case ppu_cmd::sleep:

View File

@ -420,10 +420,7 @@ void spu_cache::initialize()
if (g_cfg.core.spu_decoder == spu_decoder_type::asmjit || g_cfg.core.spu_decoder == spu_decoder_type::llvm)
{
// Initialize progress dialog (wait for previous progress done)
while (g_progr_ptotal)
{
g_progr_ptotal.wait<atomic_wait::op_ne>(0);
}
g_progr_ptotal.wait<atomic_wait::op_ne>(0);
g_progr_ptotal += ::size32(func_list);
progr.emplace("Building SPU cache...");

View File

@ -377,7 +377,7 @@ namespace
renderer && renderer->is_inited)
{
auto manager = g_fxo->try_get<rsx::overlays::display_manager>();
skip_this_one = manager && manager->get<rsx::overlays::message_dialog>();
skip_this_one = g_fxo->get<progress_dialog_workaround>().skip_the_progress_dialog || (manager && manager->get<rsx::overlays::message_dialog>());
if (manager && !skip_this_one)
{

View File

@ -10,6 +10,14 @@
#include "Emu/Cell/timers.hpp"
struct progress_dialog_workaround
{
// WORKAROUND:
// We don't want to show the native dialog during gameplay.
// This can currently interfere with cell dialogs.
atomic_t<bool> skip_the_progress_dialog = false;
};
enum class localized_string_id;
enum class video_renderer;