mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-30 21:30:04 +00:00 
			
		
		
		
	Service: release shared memory object when finalize
Since last commit SharedMemory only reset source memory set on dtor, service should always release the ref as soon as possible to make the reset happen
This commit is contained in:
		
							parent
							
								
									cfa9a322c7
								
							
						
					
					
						commit
						d90094e8a7
					
				
					 4 changed files with 21 additions and 1 deletions
				
			
		|  | @ -136,6 +136,7 @@ void SoftwareKeyboard::Finalize() { | |||
|     SendParameter(message); | ||||
| 
 | ||||
|     is_running = false; | ||||
|     text_memory = nullptr; | ||||
| } | ||||
| 
 | ||||
| Frontend::KeyboardConfig SoftwareKeyboard::ToFrontendConfig( | ||||
|  |  | |||
|  | @ -443,6 +443,17 @@ void HTTP_C::CloseClientCertContext(Kernel::HLERequestContext& ctx) { | |||
|     LOG_DEBUG(Service_HTTP, "called, cert_handle={}", cert_handle); | ||||
| } | ||||
| 
 | ||||
| void HTTP_C::Finalize(Kernel::HLERequestContext& ctx) { | ||||
|     IPC::RequestParser rp(ctx, 0x39, 0, 0); | ||||
| 
 | ||||
|     shared_memory = nullptr; | ||||
| 
 | ||||
|     IPC::RequestBuilder rb = rp.MakeBuilder(1, 0); | ||||
|     rb.Push(RESULT_SUCCESS); | ||||
| 
 | ||||
|     LOG_WARNING(Service_HTTP, "(STUBBED) called"); | ||||
| } | ||||
| 
 | ||||
| void HTTP_C::DecryptClCertA() { | ||||
|     static constexpr u32 iv_length = 16; | ||||
| 
 | ||||
|  | @ -575,7 +586,7 @@ HTTP_C::HTTP_C() : ServiceFramework("http:C", 32) { | |||
|         {0x00360000, nullptr, "ClearDNSCache"}, | ||||
|         {0x00370080, nullptr, "SetKeepAlive"}, | ||||
|         {0x003800C0, nullptr, "SetPostDataTypeSize"}, | ||||
|         {0x00390000, nullptr, "Finalize"}, | ||||
|         {0x00390000, &HTTP_C::Finalize, "Finalize"}, | ||||
|     }; | ||||
|     RegisterHandlers(functions); | ||||
| 
 | ||||
|  |  | |||
|  | @ -240,6 +240,13 @@ private: | |||
|      */ | ||||
|     void CloseClientCertContext(Kernel::HLERequestContext& ctx); | ||||
| 
 | ||||
|     /**
 | ||||
|      * HTTP_C::Finalize service function | ||||
|      *  Outputs: | ||||
|      *      1 : Result of function, 0 on success, otherwise error code | ||||
|      */ | ||||
|     void Finalize(Kernel::HLERequestContext& ctx); | ||||
| 
 | ||||
|     void DecryptClCertA(); | ||||
| 
 | ||||
|     Kernel::SharedPtr<Kernel::SharedMemory> shared_memory = nullptr; | ||||
|  |  | |||
|  | @ -52,6 +52,7 @@ struct MIC_U::Impl { | |||
|     void UnmapSharedMem(Kernel::HLERequestContext& ctx) { | ||||
|         IPC::RequestParser rp{ctx, 0x02, 0, 0}; | ||||
|         IPC::RequestBuilder rb = rp.MakeBuilder(1, 0); | ||||
|         shared_memory = nullptr; | ||||
|         rb.Push(RESULT_SUCCESS); | ||||
|         LOG_WARNING(Service_MIC, "called"); | ||||
|     } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue