瀏覽代碼

Mark is_complete as atomic

Chloe Marcec 4 年之前
父節點
當前提交
543081e4a1
共有 2 個文件被更改,包括 5 次插入4 次删除
  1. 3 3
      src/core/hle/service/acc/async_context.cpp
  2. 2 1
      src/core/hle/service/acc/async_context.h

+ 3 - 3
src/core/hle/service/acc/async_context.cpp

@@ -46,11 +46,11 @@ void IAsyncContext::Cancel(Kernel::HLERequestContext& ctx) {
 void IAsyncContext::HasDone(Kernel::HLERequestContext& ctx) {
 void IAsyncContext::HasDone(Kernel::HLERequestContext& ctx) {
     LOG_DEBUG(Service_ACC, "called");
     LOG_DEBUG(Service_ACC, "called");
 
 
-    is_complete = IsComplete();
+    is_complete.store(IsComplete());
 
 
     IPC::ResponseBuilder rb{ctx, 3};
     IPC::ResponseBuilder rb{ctx, 3};
     rb.Push(ResultSuccess);
     rb.Push(ResultSuccess);
-    rb.Push(is_complete);
+    rb.Push(is_complete.load());
 }
 }
 
 
 void IAsyncContext::GetResult(Kernel::HLERequestContext& ctx) {
 void IAsyncContext::GetResult(Kernel::HLERequestContext& ctx) {
@@ -61,7 +61,7 @@ void IAsyncContext::GetResult(Kernel::HLERequestContext& ctx) {
 }
 }
 
 
 void IAsyncContext::MarkComplete() {
 void IAsyncContext::MarkComplete() {
-    is_complete = true;
+    is_complete.store(true);
     compeletion_event.GetWritableEvent().Signal();
     compeletion_event.GetWritableEvent().Signal();
 }
 }
 
 

+ 2 - 1
src/core/hle/service/acc/async_context.h

@@ -4,6 +4,7 @@
 
 
 #pragma once
 #pragma once
 
 
+#include <atomic>
 #include "core/hle/kernel/k_event.h"
 #include "core/hle/kernel/k_event.h"
 #include "core/hle/service/service.h"
 #include "core/hle/service/service.h"
 
 
@@ -29,7 +30,7 @@ protected:
 
 
     void MarkComplete();
     void MarkComplete();
 
 
-    bool is_complete{false};
+    std::atomic<bool> is_complete{false};
     Kernel::KEvent compeletion_event;
     Kernel::KEvent compeletion_event;
 };
 };