mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-11-04 00:49:02 -06:00 
			
		
		
		
	gpu: Add shut down method to synchronize threads before destruction
This commit is contained in:
		@@ -317,6 +317,8 @@ struct System::Impl {
 | 
			
		||||
        is_powered_on = false;
 | 
			
		||||
        exit_lock = false;
 | 
			
		||||
 | 
			
		||||
        gpu_core->NotifyShutdown();
 | 
			
		||||
 | 
			
		||||
        services.reset();
 | 
			
		||||
        service_manager.reset();
 | 
			
		||||
        cheat_engine.reset();
 | 
			
		||||
 
 | 
			
		||||
@@ -312,6 +312,12 @@ struct GPU::Impl {
 | 
			
		||||
        cpu_context->MakeCurrent();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void NotifyShutdown() {
 | 
			
		||||
        std::unique_lock lk{sync_mutex};
 | 
			
		||||
        shutting_down.store(true, std::memory_order::relaxed);
 | 
			
		||||
        sync_cv.notify_all();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// Obtain the CPU Context
 | 
			
		||||
    void ObtainContext() {
 | 
			
		||||
        cpu_context->MakeCurrent();
 | 
			
		||||
@@ -859,6 +865,10 @@ void GPU::Start() {
 | 
			
		||||
    impl->Start();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void GPU::NotifyShutdown() {
 | 
			
		||||
    impl->NotifyShutdown();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void GPU::ObtainContext() {
 | 
			
		||||
    impl->ObtainContext();
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -232,6 +232,9 @@ public:
 | 
			
		||||
    /// core timing events.
 | 
			
		||||
    void Start();
 | 
			
		||||
 | 
			
		||||
    /// Performs any additional necessary steps to shutdown GPU emulation.
 | 
			
		||||
    void NotifyShutdown();
 | 
			
		||||
 | 
			
		||||
    /// Obtain the CPU Context
 | 
			
		||||
    void ObtainContext();
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user