-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Ensures threads are stopped in sys_spu_thread_group_join #5310
Conversation
7694fd2 to
8e2eb91
Compare
|
Fixes freezing issue in Bleach: Soul Resurreccion. |
|
Can confirm, brings Catherine NPUB30698 back ingame for me Edit: Actually the emulator crashed after a cutscene (when Vincent wakes up the first time), I'm not sure if it's related but I'm dropping the log here just in case |
|
Cutscene issue is unrelated. See #4408 |
|
Catherine is now fixed for me: |
|
Ripley's on a roll! 👍 |
|
This PR probably fixes all issues on #4875 |
|
Linux tests done! Indeed fix errors in:
|
315e7b0 to
a7ce791
Compare
|
Build Fixes KH1.5 First Cutscene Blackscreen Freeze and in KH 2.5 After Final Battle Blackscreen Freeze. OS: Windows 7 |
Move lambda into a cpu_stop() Use running thread counter to synchronize with sys_spu_thread_group_join() Remove unnecessary waiting in sys_spu_thread_group_exit() Rollback some minor unnecessary changes Use shared_mutex in SPU TG
Move lambda into a cpu_stop() Use running thread counter to synchronize with sys_spu_thread_group_join() Remove unnecessary waiting in sys_spu_thread_group_exit() Rollback some minor unnecessary changes Use shared_mutex in SPU TG
Move lambda into a cpu_stop() Use running thread counter to synchronize with sys_spu_thread_group_join() Use SPU_STATUS_STOPPED_BY_STOP exclusively for sys_spu_thread_exit() as before Remove unnecessary waiting in sys_spu_thread_group_exit() Rollback some minor unnecessary changes Use shared_mutex in SPU TG
Move lambda into a cpu_stop() Use running thread counter to synchronize with sys_spu_thread_group_join() Use SPU_STATUS_STOPPED_BY_STOP exclusively for sys_spu_thread_exit() as before Remove unnecessary waiting in sys_spu_thread_group_exit() Rollback some minor unnecessary changes Use shared_mutex in SPU TG
|
This PR broke Ridge Racer 7 with SPU LLVM: #5342 |
Move lambda into a cpu_stop() Use running thread counter to synchronize with sys_spu_thread_group_join() Use SPU_STATUS_STOPPED_BY_STOP exclusively for sys_spu_thread_exit() as before Remove unnecessary waiting in sys_spu_thread_group_exit() Rollback some minor unnecessary changes Use shared_mutex in SPU TG
|
RipleyTom:CleanFix |



Only sets status to SPU_STATUS_STOPPED_BY_STOP when the thread is actually stopping(end of cpu_task).
sys_spu_thread_group_join will only finish when all threads have actually stopped.
Thanks whym for the logs and elad for helping me figure out the correct way to fix this.