mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 13:50:03 +00:00 
			
		
		
		
	WaitSynch: Always reschedule (verified behavior on hw).
This commit is contained in:
		
							parent
							
								
									4154560bd5
								
							
						
					
					
						commit
						caa58acc84
					
				
					 1 changed files with 4 additions and 4 deletions
				
			
		|  | @ -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…
	
	Add table
		Add a link
		
	
		Reference in a new issue