mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-03-29 22:20:48 +00:00
Reschedule in cellMsgDialogOpen2
This commit is contained in:
parent
9446bd2d3f
commit
1e9d3346d1
@ -1,7 +1,9 @@
|
|||||||
#include "stdafx.h"
|
#include "stdafx.h"
|
||||||
#include "Emu/System.h"
|
#include "Emu/System.h"
|
||||||
#include "Emu/IdManager.h"
|
#include "Emu/IdManager.h"
|
||||||
#include "Emu/Cell/PPUModule.h"
|
#include "Emu/Cell/PPUModule.h"
|
||||||
|
#include "Emu/Cell/PPUThread.h"
|
||||||
|
#include "Emu/Cell/lv2/sys_sync.h"
|
||||||
#include "Emu/RSX/Overlays/overlays.h"
|
#include "Emu/RSX/Overlays/overlays.h"
|
||||||
|
|
||||||
#include "cellSysutil.h"
|
#include "cellSysutil.h"
|
||||||
@ -219,18 +221,24 @@ error_code cellMsgDialogOpen2(u32 type, vm::cptr<char> msgString, vm::ptr<CellMs
|
|||||||
|
|
||||||
pad::SetIntercepted(true);
|
pad::SetIntercepted(true);
|
||||||
|
|
||||||
atomic_t<bool> result(false);
|
auto& ppu = *get_current_cpu_thread();
|
||||||
|
lv2_obj::sleep(ppu);
|
||||||
|
|
||||||
// Run asynchronously in GUI thread
|
// Run asynchronously in GUI thread
|
||||||
Emu.CallAfter([&]()
|
Emu.CallAfter([&]()
|
||||||
{
|
{
|
||||||
dlg->Create(msgString.get_ptr());
|
dlg->Create(msgString.get_ptr());
|
||||||
result = true;
|
lv2_obj::awake(ppu);
|
||||||
});
|
});
|
||||||
|
|
||||||
while (!result)
|
while (!ppu.state.test_and_reset(cpu_flag::signal))
|
||||||
{
|
{
|
||||||
thread_ctrl::wait_for(1000);
|
if (ppu.is_stopped())
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
thread_ctrl::wait();
|
||||||
}
|
}
|
||||||
|
|
||||||
return CELL_OK;
|
return CELL_OK;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user