mirror of
				https://git.suyu.dev/suyu/suyu.git
				synced 2025-11-04 12:34:39 +08: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
					
				@ -51,7 +51,7 @@ void RunLoop(int tight_loop) {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    HW::Update();
 | 
			
		||||
    if (HLE::g_reschedule) {
 | 
			
		||||
    if (HLE::IsReschedulePending()) {
 | 
			
		||||
        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) {
 | 
			
		||||
    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();
 | 
			
		||||
 | 
			
		||||
    g_reschedule = true;
 | 
			
		||||
    reschedule = true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool IsReschedulePending() {
 | 
			
		||||
    return reschedule;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void DoneRescheduling() {
 | 
			
		||||
    reschedule = false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Init() {
 | 
			
		||||
    Service::Init();
 | 
			
		||||
 | 
			
		||||
    g_reschedule = false;
 | 
			
		||||
    reschedule = false;
 | 
			
		||||
 | 
			
		||||
    LOG_DEBUG(Kernel, "initialized OK");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -13,9 +13,9 @@ const Handle INVALID_HANDLE = 0;
 | 
			
		||||
 | 
			
		||||
namespace HLE {
 | 
			
		||||
 | 
			
		||||
extern bool g_reschedule;   ///< If true, immediately reschedules the CPU to a new thread
 | 
			
		||||
 | 
			
		||||
void Reschedule(const char *reason);
 | 
			
		||||
bool IsReschedulePending();
 | 
			
		||||
void DoneRescheduling();
 | 
			
		||||
 | 
			
		||||
void Init();
 | 
			
		||||
void Shutdown();
 | 
			
		||||
 | 
			
		||||
@ -483,7 +483,8 @@ void Reschedule() {
 | 
			
		||||
 | 
			
		||||
    Thread* cur = GetCurrentThread();
 | 
			
		||||
    Thread* next = PopNextReadyThread();
 | 
			
		||||
    HLE::g_reschedule = false;
 | 
			
		||||
 | 
			
		||||
    HLE::DoneRescheduling();
 | 
			
		||||
 | 
			
		||||
    // Don't bother switching to the same thread
 | 
			
		||||
    if (next == cur)
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user