Mark is_complete as atomic
This commit is contained in:
		| @@ -46,11 +46,11 @@ void IAsyncContext::Cancel(Kernel::HLERequestContext& ctx) { | ||||
| void IAsyncContext::HasDone(Kernel::HLERequestContext& ctx) { | ||||
|     LOG_DEBUG(Service_ACC, "called"); | ||||
|  | ||||
|     is_complete = IsComplete(); | ||||
|     is_complete.store(IsComplete()); | ||||
|  | ||||
|     IPC::ResponseBuilder rb{ctx, 3}; | ||||
|     rb.Push(ResultSuccess); | ||||
|     rb.Push(is_complete); | ||||
|     rb.Push(is_complete.load()); | ||||
| } | ||||
|  | ||||
| void IAsyncContext::GetResult(Kernel::HLERequestContext& ctx) { | ||||
| @@ -61,7 +61,7 @@ void IAsyncContext::GetResult(Kernel::HLERequestContext& ctx) { | ||||
| } | ||||
|  | ||||
| void IAsyncContext::MarkComplete() { | ||||
|     is_complete = true; | ||||
|     is_complete.store(true); | ||||
|     compeletion_event.GetWritableEvent().Signal(); | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -4,6 +4,7 @@ | ||||
|  | ||||
| #pragma once | ||||
|  | ||||
| #include <atomic> | ||||
| #include "core/hle/kernel/k_event.h" | ||||
| #include "core/hle/service/service.h" | ||||
|  | ||||
| @@ -29,7 +30,7 @@ protected: | ||||
|  | ||||
|     void MarkComplete(); | ||||
|  | ||||
|     bool is_complete{false}; | ||||
|     std::atomic<bool> is_complete{false}; | ||||
|     Kernel::KEvent compeletion_event; | ||||
| }; | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Chloe Marcec
					Chloe Marcec