mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-30 21:30:04 +00:00 
			
		
		
		
	
							parent
							
								
									0b897c45d2
								
							
						
					
					
						commit
						e52ca85711
					
				
					 5 changed files with 20 additions and 13 deletions
				
			
		|  | @ -22,11 +22,6 @@ SharedPtr<Event> Event::Create(ResetType reset_type, std::string name) { | |||
|     evt->reset_type = reset_type; | ||||
|     evt->name = std::move(name); | ||||
| 
 | ||||
|     if (reset_type == ResetType::Pulse) { | ||||
|         LOG_ERROR(Kernel, "Unimplemented event reset type Pulse"); | ||||
|         UNIMPLEMENTED(); | ||||
|     } | ||||
| 
 | ||||
|     return evt; | ||||
| } | ||||
| 
 | ||||
|  | @ -37,8 +32,7 @@ bool Event::ShouldWait() { | |||
| void Event::Acquire() { | ||||
|     ASSERT_MSG(!ShouldWait(), "object unavailable!"); | ||||
| 
 | ||||
|     // Release the event if it's not sticky...
 | ||||
|     if (reset_type != ResetType::Sticky) | ||||
|     if (reset_type == ResetType::OneShot) | ||||
|         signaled = false; | ||||
| } | ||||
| 
 | ||||
|  | @ -51,4 +45,11 @@ void Event::Clear() { | |||
|     signaled = false; | ||||
| } | ||||
| 
 | ||||
| void Event::WakeupAllWaitingThreads() { | ||||
|     WaitObject::WakeupAllWaitingThreads(); | ||||
| 
 | ||||
|     if (reset_type == ResetType::Pulse) | ||||
|         signaled = false; | ||||
| } | ||||
| 
 | ||||
| } // namespace
 | ||||
|  |  | |||
|  | @ -38,6 +38,8 @@ public: | |||
|     bool ShouldWait() override; | ||||
|     void Acquire() override; | ||||
| 
 | ||||
|     void WakeupAllWaitingThreads() override; | ||||
| 
 | ||||
|     void Signal(); | ||||
|     void Clear(); | ||||
| 
 | ||||
|  |  | |||
|  | @ -156,7 +156,7 @@ public: | |||
|      * Wake up all threads waiting on this object that can be awoken, in priority order, | ||||
|      * and set the synchronization result and output of the thread. | ||||
|      */ | ||||
|     void WakeupAllWaitingThreads(); | ||||
|     virtual void WakeupAllWaitingThreads(); | ||||
| 
 | ||||
|     /// Obtains the highest priority thread that is ready to run from this object's waiting list.
 | ||||
|     SharedPtr<Thread> GetHighestPriorityReadyThread(); | ||||
|  |  | |||
|  | @ -31,11 +31,6 @@ SharedPtr<Timer> Timer::Create(ResetType reset_type, std::string name) { | |||
|     timer->interval_delay = 0; | ||||
|     timer->callback_handle = timer_callback_handle_table.Create(timer).MoveFrom(); | ||||
| 
 | ||||
|     if (reset_type == ResetType::Pulse) { | ||||
|         LOG_ERROR(Kernel, "Unimplemented timer reset type Pulse"); | ||||
|         UNIMPLEMENTED(); | ||||
|     } | ||||
| 
 | ||||
|     return timer; | ||||
| } | ||||
| 
 | ||||
|  | @ -70,6 +65,13 @@ void Timer::Clear() { | |||
|     signaled = false; | ||||
| } | ||||
| 
 | ||||
| void Timer::WakeupAllWaitingThreads() { | ||||
|     WaitObject::WakeupAllWaitingThreads(); | ||||
| 
 | ||||
|     if (reset_type == ResetType::Pulse) | ||||
|         signaled = false; | ||||
| } | ||||
| 
 | ||||
| /// The timer callback event, called when a timer is fired
 | ||||
| static void TimerCallback(u64 timer_handle, int cycles_late) { | ||||
|     SharedPtr<Timer> timer = | ||||
|  |  | |||
|  | @ -42,6 +42,8 @@ public: | |||
|     bool ShouldWait() override; | ||||
|     void Acquire() override; | ||||
| 
 | ||||
|     void WakeupAllWaitingThreads() override; | ||||
| 
 | ||||
|     /**
 | ||||
|      * Starts the timer, with the specified initial delay and interval. | ||||
|      * @param initial Delay until the timer is first fired | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue