mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-30 21:30:04 +00:00 
			
		
		
		
	Merge pull request #1762 from bunnei/global
hle: Get rid of direct global access to g_reschedule
This commit is contained in:
		
						commit
						75cbfeee58
					
				
					 4 changed files with 21 additions and 8 deletions
				
			
		|  | @ -51,7 +51,7 @@ void RunLoop(int tight_loop) { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     HW::Update(); |     HW::Update(); | ||||||
|     if (HLE::g_reschedule) { |     if (HLE::IsReschedulePending()) { | ||||||
|         Kernel::Reschedule(); |         Kernel::Reschedule(); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -12,9 +12,13 @@ | ||||||
| 
 | 
 | ||||||
| ////////////////////////////////////////////////////////////////////////////////////////////////////
 | ////////////////////////////////////////////////////////////////////////////////////////////////////
 | ||||||
| 
 | 
 | ||||||
| namespace HLE { | namespace { | ||||||
| 
 | 
 | ||||||
| bool g_reschedule; ///< If true, immediately reschedules the CPU to a new thread
 | bool reschedule; ///< If true, immediately reschedules the CPU to a new thread
 | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | namespace HLE { | ||||||
| 
 | 
 | ||||||
| void Reschedule(const char *reason) { | void Reschedule(const char *reason) { | ||||||
|     DEBUG_ASSERT_MSG(reason != nullptr && strlen(reason) < 256, "Reschedule: Invalid or too long reason."); |     DEBUG_ASSERT_MSG(reason != nullptr && strlen(reason) < 256, "Reschedule: Invalid or too long reason."); | ||||||
|  | @ -27,13 +31,21 @@ void Reschedule(const char *reason) { | ||||||
| 
 | 
 | ||||||
|     Core::g_app_core->PrepareReschedule(); |     Core::g_app_core->PrepareReschedule(); | ||||||
| 
 | 
 | ||||||
|     g_reschedule = true; |     reschedule = true; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | bool IsReschedulePending() { | ||||||
|  |     return reschedule; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void DoneRescheduling() { | ||||||
|  |     reschedule = false; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void Init() { | void Init() { | ||||||
|     Service::Init(); |     Service::Init(); | ||||||
| 
 | 
 | ||||||
|     g_reschedule = false; |     reschedule = false; | ||||||
| 
 | 
 | ||||||
|     LOG_DEBUG(Kernel, "initialized OK"); |     LOG_DEBUG(Kernel, "initialized OK"); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -13,9 +13,9 @@ const Handle INVALID_HANDLE = 0; | ||||||
| 
 | 
 | ||||||
| namespace HLE { | namespace HLE { | ||||||
| 
 | 
 | ||||||
| extern bool g_reschedule;   ///< If true, immediately reschedules the CPU to a new thread
 |  | ||||||
| 
 |  | ||||||
| void Reschedule(const char *reason); | void Reschedule(const char *reason); | ||||||
|  | bool IsReschedulePending(); | ||||||
|  | void DoneRescheduling(); | ||||||
| 
 | 
 | ||||||
| void Init(); | void Init(); | ||||||
| void Shutdown(); | void Shutdown(); | ||||||
|  |  | ||||||
|  | @ -483,7 +483,8 @@ void Reschedule() { | ||||||
| 
 | 
 | ||||||
|     Thread* cur = GetCurrentThread(); |     Thread* cur = GetCurrentThread(); | ||||||
|     Thread* next = PopNextReadyThread(); |     Thread* next = PopNextReadyThread(); | ||||||
|     HLE::g_reschedule = false; | 
 | ||||||
|  |     HLE::DoneRescheduling(); | ||||||
| 
 | 
 | ||||||
|     // Don't bother switching to the same thread
 |     // Don't bother switching to the same thread
 | ||||||
|     if (next == cur) |     if (next == cur) | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue