mirror of
				https://git.tardis.systems/mirrors/yuzu
				synced 2025-10-31 02:34:11 +01:00 
			
		
		
		
	fixup! hle: kernel: Migrate KSession, KClientSession, and KServerSession to KAutoObject.
This commit is contained in:
		
							parent
							
								
									1b074b8984
								
							
						
					
					
						commit
						f6d45b747e
					
				| @ -47,11 +47,11 @@ public: | ||||
| 
 | ||||
|     void Initialize(KSession* parent_, std::string&& name_); | ||||
| 
 | ||||
|     constexpr KSession* GetParent() { | ||||
|     KSession* GetParent() { | ||||
|         return parent; | ||||
|     } | ||||
| 
 | ||||
|     constexpr const KSession* GetParent() const { | ||||
|     const KSession* GetParent() const { | ||||
|         return parent; | ||||
|     } | ||||
| 
 | ||||
|  | ||||
| @ -49,24 +49,30 @@ void KSession::Initialize(KClientPort* port_, const std::string& name_) { | ||||
| } | ||||
| 
 | ||||
| void KSession::Finalize() { | ||||
|     if (port != nullptr) { | ||||
|         port->OnSessionFinalized(); | ||||
|         port->Close(); | ||||
|     if (port == nullptr) { | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     port->OnSessionFinalized(); | ||||
|     port->Close(); | ||||
| } | ||||
| 
 | ||||
| void KSession::OnServerClosed() { | ||||
|     if (GetState() == State::Normal) { | ||||
|         SetState(State::ServerClosed); | ||||
|         client.OnServerClosed(); | ||||
|     if (GetState() != State::Normal) { | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     SetState(State::ServerClosed); | ||||
|     client.OnServerClosed(); | ||||
| } | ||||
| 
 | ||||
| void KSession::OnClientClosed() { | ||||
|     if (GetState() == State::Normal) { | ||||
|         SetState(State::ClientClosed); | ||||
|         server.OnClientClosed(); | ||||
|     if (GetState() != State::Normal) { | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     SetState(State::ClientClosed); | ||||
|     server.OnClientClosed(); | ||||
| } | ||||
| 
 | ||||
| void KSession::PostDestroy(uintptr_t arg) { | ||||
|  | ||||
| @ -16,14 +16,6 @@ namespace Kernel { | ||||
| class KSession final : public KAutoObjectWithSlabHeapAndContainer<KSession, KAutoObjectWithList> { | ||||
|     KERNEL_AUTOOBJECT_TRAITS(KSession, KAutoObject); | ||||
| 
 | ||||
| private: | ||||
|     enum class State : u8 { | ||||
|         Invalid = 0, | ||||
|         Normal = 1, | ||||
|         ClientClosed = 2, | ||||
|         ServerClosed = 3, | ||||
|     }; | ||||
| 
 | ||||
| public: | ||||
|     explicit KSession(KernelCore& kernel); | ||||
|     virtual ~KSession() override; | ||||
| @ -74,20 +66,28 @@ public: | ||||
|         return port; | ||||
|     } | ||||
| 
 | ||||
| private: | ||||
|     enum class State : u8 { | ||||
|         Invalid = 0, | ||||
|         Normal = 1, | ||||
|         ClientClosed = 2, | ||||
|         ServerClosed = 3, | ||||
|     }; | ||||
| 
 | ||||
| private: | ||||
|     void SetState(State state) { | ||||
|         atomic_state = static_cast<u8>(state); | ||||
|     } | ||||
| 
 | ||||
|     State GetState() const { | ||||
|         return static_cast<State>(atomic_state.load()); | ||||
|         return static_cast<State>(atomic_state.load(std::memory_order_relaxed)); | ||||
|     } | ||||
| 
 | ||||
| private: | ||||
|     KServerSession server; | ||||
|     KClientSession client; | ||||
|     std::atomic<std::underlying_type<State>::type> atomic_state{ | ||||
|         static_cast<std::underlying_type<State>::type>(State::Invalid)}; | ||||
|     std::atomic<std::underlying_type_t<State>> atomic_state{ | ||||
|         static_cast<std::underlying_type_t<State>>(State::Invalid)}; | ||||
|     KClientPort* port{}; | ||||
|     KProcess* process{}; | ||||
|     bool initialized{}; | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user