rpcsx-os: do not freeze on memory save data, part 2

This commit is contained in:
DH 2024-10-01 19:48:18 +03:00
parent d099439a32
commit 825c192c49
2 changed files with 10 additions and 2 deletions

View File

@ -181,7 +181,8 @@ static SysResult keventChange(KQueue *kq, KEvent &change, Thread *thread) {
}
kq->cv.notify_all(kq->mtx);
} else if (change.filter == kEvFiltDisplay) {
if (change.ident != 0x51000100000000 && change.ident != 0x63010100000000) {
if (change.ident != 0x51000100000000 && change.ident != 0x63010100000000 &&
change.ident != 0x06000000000000) {
nodeIt->triggered = true;
kq->cv.notify_all(kq->mtx);
}

View File

@ -1481,7 +1481,7 @@ static void createShellCoreObjects(orbis::Process *process) {
createIpmiServer(process, "ScePsmSharedDmem");
auto saveDataSem = createSemaphore("SceSaveData0000000000000001", 0x101, 0, 1);
createSemaphore("SceSaveData0000000000000001_0", 0x101, 0, 1);
auto saveDataSem_0 = createSemaphore("SceSaveData0000000000000001_0", 0x101, 0, 1);
createShm("SceSaveData0000000000000001_0", 0x202, 0x1b6, 0x40000);
createShm("SceSaveDataI0000000000000001", 0x202, 0x1b6, 43008);
createShm("SceSaveDataI0000000000000001_0", 0x202, 0x1b6, 43008);
@ -1493,7 +1493,14 @@ static void createShellCoreObjects(orbis::Process *process) {
0x12340000,
[=](void *out, std::uint64_t &size) -> std::int32_t {
ruiEvf->set(~0ull);
{
saveDataSem->value++;
saveDataSem->cond.notify_one(saveDataSem->mtx);
}
{
saveDataSem_0->value++;
saveDataSem_0->cond.notify_one(saveDataSem_0->mtx);
}
return 0;
})
.addSyncMethod(