From 4e2aa50cefd56f4bb119c9c6e6ab89afbb31351e Mon Sep 17 00:00:00 2001 From: Chloe Marcec Date: Mon, 6 Sep 2021 21:16:21 +1000 Subject: account: EnsureTokenIdCacheAsync Closes #2547, #6946 --- src/core/hle/service/acc/async_context.h | 36 ++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/core/hle/service/acc/async_context.h (limited to 'src/core/hle/service/acc/async_context.h') diff --git a/src/core/hle/service/acc/async_context.h b/src/core/hle/service/acc/async_context.h new file mode 100644 index 000000000..2453a79f5 --- /dev/null +++ b/src/core/hle/service/acc/async_context.h @@ -0,0 +1,36 @@ +// Copyright 2021 yuzu emulator team +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include "core/hle/kernel/k_event.h" +#include "core/hle/service/service.h" + +namespace Core { +class System; +} + +namespace Service::Account { + +class IAsyncContext : public ServiceFramework { +public: + explicit IAsyncContext(Core::System& system_); + + void GetSystemEvent(Kernel::HLERequestContext& ctx); + void Cancel(Kernel::HLERequestContext& ctx); + void HasDone(Kernel::HLERequestContext& ctx); + void GetResult(Kernel::HLERequestContext& ctx); + +protected: + virtual bool IsComplete() = 0; + virtual void Cancel() = 0; + virtual ResultCode GetResult() = 0; + + void MarkComplete(); + + bool is_complete{false}; + Kernel::KEvent compeletion_event; +}; + +} // namespace Service::Account -- cgit v1.2.3 From 89958e27aa81fb376005f262d725692698321607 Mon Sep 17 00:00:00 2001 From: Chloe Marcec Date: Thu, 9 Sep 2021 00:09:04 +1000 Subject: Addressed issues --- src/core/hle/service/acc/async_context.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/core/hle/service/acc/async_context.h') diff --git a/src/core/hle/service/acc/async_context.h b/src/core/hle/service/acc/async_context.h index 2453a79f5..6592326d0 100644 --- a/src/core/hle/service/acc/async_context.h +++ b/src/core/hle/service/acc/async_context.h @@ -23,9 +23,9 @@ public: void GetResult(Kernel::HLERequestContext& ctx); protected: - virtual bool IsComplete() = 0; + virtual bool IsComplete() const = 0; virtual void Cancel() = 0; - virtual ResultCode GetResult() = 0; + virtual ResultCode GetResult() const = 0; void MarkComplete(); -- cgit v1.2.3 From 543081e4a198386a7208d0fe63411c149c4e36f5 Mon Sep 17 00:00:00 2001 From: Chloe Marcec Date: Thu, 9 Sep 2021 00:10:52 +1000 Subject: Mark is_complete as atomic --- src/core/hle/service/acc/async_context.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/core/hle/service/acc/async_context.h') diff --git a/src/core/hle/service/acc/async_context.h b/src/core/hle/service/acc/async_context.h index 6592326d0..c694b4946 100644 --- a/src/core/hle/service/acc/async_context.h +++ b/src/core/hle/service/acc/async_context.h @@ -4,6 +4,7 @@ #pragma once +#include #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 is_complete{false}; Kernel::KEvent compeletion_event; }; -- cgit v1.2.3