forked from eden-emu/eden
		
	core: hid: Fix double lock on softlock and forced updates
This commit is contained in:
		
							parent
							
								
									c5b3ff2238
								
							
						
					
					
						commit
						b12a44a5ea
					
				
					 1 changed files with 12 additions and 2 deletions
				
			
		|  | @ -1173,17 +1173,22 @@ DebugPadButton EmulatedController::GetDebugPadButtons() const { | |||
| } | ||||
| 
 | ||||
| AnalogSticks EmulatedController::GetSticks() const { | ||||
|     std::scoped_lock lock{mutex}; | ||||
|     std::unique_lock lock{mutex}; | ||||
| 
 | ||||
|     if (is_configuring) { | ||||
|         return {}; | ||||
|     } | ||||
| 
 | ||||
|     // Some drivers like stick from buttons need constant refreshing
 | ||||
|     for (auto& device : stick_devices) { | ||||
|         if (!device) { | ||||
|             continue; | ||||
|         } | ||||
|         lock.unlock(); | ||||
|         device->SoftUpdate(); | ||||
|         lock.lock(); | ||||
|     } | ||||
| 
 | ||||
|     return controller.analog_stick_state; | ||||
| } | ||||
| 
 | ||||
|  | @ -1196,15 +1201,20 @@ NpadGcTriggerState EmulatedController::GetTriggers() const { | |||
| } | ||||
| 
 | ||||
| MotionState EmulatedController::GetMotions() const { | ||||
|     std::scoped_lock lock{mutex}; | ||||
|     std::unique_lock lock{mutex}; | ||||
| 
 | ||||
|     // Some drivers like mouse motion need constant refreshing
 | ||||
|     if (force_update_motion) { | ||||
|         for (auto& device : motion_devices) { | ||||
|             if (!device) { | ||||
|                 continue; | ||||
|             } | ||||
|             lock.unlock(); | ||||
|             device->ForceUpdate(); | ||||
|             lock.lock(); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     return controller.motion_state; | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Narr the Reg
						Narr the Reg