mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-04-20 19:45:20 +00:00
System.cpp: Fix Create PPU Cache regression
This commit is contained in:
parent
5985f0eefa
commit
557d015662
1 changed files with 21 additions and 22 deletions
|
@ -170,6 +170,7 @@ void Emulator::BlockingCallFromMainThread(std::function<void()>&& func) const
|
|||
|
||||
while (!wake_up && !IsStopped())
|
||||
{
|
||||
ensure(thread_ctrl::get_current());
|
||||
thread_ctrl::wait_on(wake_up, false);
|
||||
}
|
||||
}
|
||||
|
@ -1161,9 +1162,8 @@ game_boot_result Emulator::Load(const std::string& title_id, bool add_only, bool
|
|||
{
|
||||
m_state = system_state::ready;
|
||||
GetCallbacks().on_ready();
|
||||
g_fxo->init<ppu_module>();
|
||||
vm::init();
|
||||
g_fxo->init(false);
|
||||
Run(false);
|
||||
m_force_boot = false;
|
||||
|
||||
// Force LLVM recompiler
|
||||
|
@ -1189,12 +1189,13 @@ game_boot_result Emulator::Load(const std::string& title_id, bool add_only, bool
|
|||
argv[0] = "/dev_bdvd/PS3_GAME/USRDIR/EBOOT.BIN";
|
||||
m_dir = "/dev_bdvd/PS3_GAME";
|
||||
|
||||
g_fxo->init<named_thread>("SPRX Loader"sv, [this]
|
||||
{
|
||||
std::string path;
|
||||
std::vector<std::string> dir_queue;
|
||||
dir_queue.emplace_back(m_path + '/');
|
||||
Run(false);
|
||||
|
||||
std::string path;
|
||||
std::vector<std::string> dir_queue;
|
||||
dir_queue.emplace_back(m_path + '/');
|
||||
|
||||
{
|
||||
if (m_title_id.empty())
|
||||
{
|
||||
// Check if we are trying to scan vsh/module
|
||||
|
@ -1239,17 +1240,9 @@ game_boot_result Emulator::Load(const std::string& title_id, bool add_only, bool
|
|||
|
||||
const ppu_exec_object obj = src;
|
||||
|
||||
if (obj == elf_error::ok)
|
||||
if (obj == elf_error::ok && ppu_load_exec(obj))
|
||||
{
|
||||
auto& _main = g_fxo->get<ppu_module>();
|
||||
|
||||
ppu_load_exec(obj);
|
||||
|
||||
_main.path = path;
|
||||
|
||||
ConfigurePPUCache();
|
||||
|
||||
ppu_initialize(_main);
|
||||
g_fxo->get<ppu_module>().path = path;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1266,19 +1259,25 @@ game_boot_result Emulator::Load(const std::string& title_id, bool add_only, bool
|
|||
{
|
||||
m_path = m_path_old; // Reset m_path to fix boot from gui
|
||||
GetCallbacks().on_stop(); // Call on_stop to refresh gui
|
||||
return;
|
||||
return game_boot_result::no_errors;
|
||||
}
|
||||
}
|
||||
|
||||
g_fxo->init<named_thread>("SPRX Loader"sv, [this, dir_queue]() mutable
|
||||
{
|
||||
if (auto& _main = g_fxo->get<ppu_module>(); !_main.path.empty())
|
||||
{
|
||||
ppu_initialize(_main);
|
||||
}
|
||||
|
||||
ppu_precompile(dir_queue, nullptr);
|
||||
|
||||
// Exit "process"
|
||||
CallFromMainThread([]
|
||||
CallFromMainThread([this]
|
||||
{
|
||||
Emu.Kill(false);
|
||||
m_path = m_path_old; // Reset m_path to fix boot from gui
|
||||
});
|
||||
|
||||
m_path = m_path_old; // Reset m_path to fix boot from gui
|
||||
GetCallbacks().on_stop(); // Call on_stop to refresh gui
|
||||
});
|
||||
|
||||
return game_boot_result::no_errors;
|
||||
|
|
Loading…
Add table
Reference in a new issue