mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
				synced 2025-03-21 01:53:15 +00:00 
			
		
		
		
	WaitSynch: Always reschedule (verified behavior on hw).
This commit is contained in:
		
							parent
							
								
									4154560bd5
								
							
						
					
					
						commit
						caa58acc84
					
				@ -144,6 +144,8 @@ static ResultCode WaitSynchronization1(Handle handle, s64 nano_seconds) {
 | 
				
			|||||||
    LOG_TRACE(Kernel_SVC, "called handle=0x%08X(%s:%s), nanoseconds=%lld", handle,
 | 
					    LOG_TRACE(Kernel_SVC, "called handle=0x%08X(%s:%s), nanoseconds=%lld", handle,
 | 
				
			||||||
            object->GetTypeName().c_str(), object->GetName().c_str(), nano_seconds);
 | 
					            object->GetTypeName().c_str(), object->GetName().c_str(), nano_seconds);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    HLE::Reschedule(__func__);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Check for next thread to schedule
 | 
					    // Check for next thread to schedule
 | 
				
			||||||
    if (object->ShouldWait()) {
 | 
					    if (object->ShouldWait()) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -153,8 +155,6 @@ static ResultCode WaitSynchronization1(Handle handle, s64 nano_seconds) {
 | 
				
			|||||||
        // Create an event to wake the thread up after the specified nanosecond delay has passed
 | 
					        // Create an event to wake the thread up after the specified nanosecond delay has passed
 | 
				
			||||||
        Kernel::GetCurrentThread()->WakeAfterDelay(nano_seconds);
 | 
					        Kernel::GetCurrentThread()->WakeAfterDelay(nano_seconds);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        HLE::Reschedule(__func__);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // NOTE: output of this SVC will be set later depending on how the thread resumes
 | 
					        // NOTE: output of this SVC will be set later depending on how the thread resumes
 | 
				
			||||||
        return RESULT_INVALID;
 | 
					        return RESULT_INVALID;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -216,6 +216,8 @@ static ResultCode WaitSynchronizationN(s32* out, Handle* handles, s32 handle_cou
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    HLE::Reschedule(__func__);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // If thread should wait, then set its state to waiting and then reschedule...
 | 
					    // If thread should wait, then set its state to waiting and then reschedule...
 | 
				
			||||||
    if (wait_thread) {
 | 
					    if (wait_thread) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -229,8 +231,6 @@ static ResultCode WaitSynchronizationN(s32* out, Handle* handles, s32 handle_cou
 | 
				
			|||||||
        // Create an event to wake the thread up after the specified nanosecond delay has passed
 | 
					        // Create an event to wake the thread up after the specified nanosecond delay has passed
 | 
				
			||||||
        Kernel::GetCurrentThread()->WakeAfterDelay(nano_seconds);
 | 
					        Kernel::GetCurrentThread()->WakeAfterDelay(nano_seconds);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        HLE::Reschedule(__func__);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // NOTE: output of this SVC will be set later depending on how the thread resumes
 | 
					        // NOTE: output of this SVC will be set later depending on how the thread resumes
 | 
				
			||||||
        return RESULT_INVALID;
 | 
					        return RESULT_INVALID;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user