mirror of
https://github.com/wiiu-env/ScreenshotWUPS.git
synced 2024-11-25 15:26:53 +01:00
Boost the thread priority of the IO thread to avoid softlocks when exiting on some games (e.g. fixes Yoshis Woolly World)
This commit is contained in:
parent
378654f668
commit
087a6c3a4e
@ -74,7 +74,7 @@ static int32_t fsIOthreadCallback([[maybe_unused]] int argc, const char **argv)
|
|||||||
OSMessage recv;
|
OSMessage recv;
|
||||||
while (OSReceiveMessage(&magic->queue, &recv, OS_MESSAGE_FLAGS_BLOCKING)) {
|
while (OSReceiveMessage(&magic->queue, &recv, OS_MESSAGE_FLAGS_BLOCKING)) {
|
||||||
if (recv.args[0] == FS_IO_QUEUE_COMMAND_STOP) {
|
if (recv.args[0] == FS_IO_QUEUE_COMMAND_STOP) {
|
||||||
DEBUG_FUNCTION_LINE_VERBOSE("Received break command! Stop thread");
|
DEBUG_FUNCTION_LINE("Received break command! Stop thread");
|
||||||
break;
|
break;
|
||||||
} else if (recv.args[0] == FS_IO_QUEUE_COMMAND_PROCESS_FS_COMMAND) {
|
} else if (recv.args[0] == FS_IO_QUEUE_COMMAND_PROCESS_FS_COMMAND) {
|
||||||
auto *message = (SaveScreenshotMessage *) recv.message;
|
auto *message = (SaveScreenshotMessage *) recv.message;
|
||||||
@ -184,6 +184,11 @@ void stopFSIOThreads() {
|
|||||||
message.args[0] = FS_IO_QUEUE_COMMAND_STOP;
|
message.args[0] = FS_IO_QUEUE_COMMAND_STOP;
|
||||||
OSSendMessage(&thread->queue, &message, OS_MESSAGE_FLAGS_BLOCKING);
|
OSSendMessage(&thread->queue, &message, OS_MESSAGE_FLAGS_BLOCKING);
|
||||||
|
|
||||||
|
if (!OSSetThreadPriority(thread->thread, 0)) {
|
||||||
|
DEBUG_FUNCTION_LINE_ERR("Failed to boost priority, the game might softlock");
|
||||||
|
} else {
|
||||||
|
DEBUG_FUNCTION_LINE_VERBOSE("Set priority to 0!");
|
||||||
|
}
|
||||||
if (OSIsThreadSuspended(thread->thread)) {
|
if (OSIsThreadSuspended(thread->thread)) {
|
||||||
OSResumeThread(thread->thread);
|
OSResumeThread(thread->thread);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user