diff options
Diffstat (limited to '')
-rw-r--r-- | src/core/hle/service/time/standard_user_system_clock_core.cpp | 14 | ||||
-rw-r--r-- | src/core/hle/service/time/standard_user_system_clock_core.h | 7 | ||||
-rw-r--r-- | src/core/hle/service/time/system_clock_context_update_callback.h | 1 | ||||
-rw-r--r-- | src/core/hle/service/time/system_clock_core.cpp | 2 | ||||
-rw-r--r-- | src/core/hle/service/time/system_clock_core.h | 2 | ||||
-rw-r--r-- | src/core/hle/service/time/time.cpp | 2 | ||||
-rw-r--r-- | src/core/hle/service/time/time.h | 1 | ||||
-rw-r--r-- | src/core/hle/service/time/time_manager.cpp | 13 | ||||
-rw-r--r-- | src/core/hle/service/time/time_zone_service.cpp | 4 |
9 files changed, 29 insertions, 17 deletions
diff --git a/src/core/hle/service/time/standard_user_system_clock_core.cpp b/src/core/hle/service/time/standard_user_system_clock_core.cpp index ef79ab917..e94220a44 100644 --- a/src/core/hle/service/time/standard_user_system_clock_core.cpp +++ b/src/core/hle/service/time/standard_user_system_clock_core.cpp @@ -4,6 +4,7 @@ #include "common/assert.h" #include "core/core.h" +#include "core/hle/kernel/k_event.h" #include "core/hle/service/time/standard_local_system_clock_core.h" #include "core/hle/service/time/standard_network_system_clock_core.h" #include "core/hle/service/time/standard_user_system_clock_core.h" @@ -16,10 +17,15 @@ StandardUserSystemClockCore::StandardUserSystemClockCore( : SystemClockCore(local_system_clock_core_.GetSteadyClockCore()), local_system_clock_core{local_system_clock_core_}, network_system_clock_core{network_system_clock_core_}, - auto_correction_time{SteadyClockTimePoint::GetRandom()}, auto_correction_event{ - system_.Kernel()} { - Kernel::KAutoObject::Create(std::addressof(auto_correction_event)); - auto_correction_event.Initialize("StandardUserSystemClockCore:AutoCorrectionEvent"); + auto_correction_time{SteadyClockTimePoint::GetRandom()}, service_context{ + system_, + "StandardUserSystemClockCore"} { + auto_correction_event = + service_context.CreateEvent("StandardUserSystemClockCore:AutoCorrectionEvent"); +} + +StandardUserSystemClockCore::~StandardUserSystemClockCore() { + service_context.CloseEvent(auto_correction_event); } ResultCode StandardUserSystemClockCore::SetAutomaticCorrectionEnabled(Core::System& system, diff --git a/src/core/hle/service/time/standard_user_system_clock_core.h b/src/core/hle/service/time/standard_user_system_clock_core.h index bf9ec5e42..b7cb2b045 100644 --- a/src/core/hle/service/time/standard_user_system_clock_core.h +++ b/src/core/hle/service/time/standard_user_system_clock_core.h @@ -4,7 +4,7 @@ #pragma once -#include "core/hle/kernel/k_event.h" +#include "core/hle/service/kernel_helpers.h" #include "core/hle/service/time/clock_types.h" #include "core/hle/service/time/system_clock_core.h" @@ -27,6 +27,8 @@ public: StandardNetworkSystemClockCore& network_system_clock_core_, Core::System& system_); + ~StandardUserSystemClockCore() override; + ResultCode SetAutomaticCorrectionEnabled(Core::System& system, bool value); ResultCode GetClockContext(Core::System& system, SystemClockContext& ctx) const override; @@ -55,7 +57,8 @@ private: StandardNetworkSystemClockCore& network_system_clock_core; bool auto_correction_enabled{}; SteadyClockTimePoint auto_correction_time; - Kernel::KEvent auto_correction_event; + KernelHelpers::ServiceContext service_context; + Kernel::KEvent* auto_correction_event; }; } // namespace Service::Time::Clock diff --git a/src/core/hle/service/time/system_clock_context_update_callback.h b/src/core/hle/service/time/system_clock_context_update_callback.h index 797954958..6936397a5 100644 --- a/src/core/hle/service/time/system_clock_context_update_callback.h +++ b/src/core/hle/service/time/system_clock_context_update_callback.h @@ -4,6 +4,7 @@ #pragma once +#include <memory> #include <vector> #include "core/hle/service/time/clock_types.h" diff --git a/src/core/hle/service/time/system_clock_core.cpp b/src/core/hle/service/time/system_clock_core.cpp index bd334bbef..5c2354cdd 100644 --- a/src/core/hle/service/time/system_clock_core.cpp +++ b/src/core/hle/service/time/system_clock_core.cpp @@ -13,7 +13,7 @@ SystemClockCore::SystemClockCore(SteadyClockCore& steady_clock_core_) context.steady_time_point.clock_source_id = steady_clock_core.GetClockSourceId(); } -SystemClockCore ::~SystemClockCore() = default; +SystemClockCore::~SystemClockCore() = default; ResultCode SystemClockCore::GetCurrentTime(Core::System& system, s64& posix_time) const { posix_time = 0; diff --git a/src/core/hle/service/time/system_clock_core.h b/src/core/hle/service/time/system_clock_core.h index 83d0e5d62..b9237ad28 100644 --- a/src/core/hle/service/time/system_clock_core.h +++ b/src/core/hle/service/time/system_clock_core.h @@ -4,6 +4,8 @@ #pragma once +#include <memory> + #include "common/common_types.h" #include "core/hle/service/time/clock_types.h" diff --git a/src/core/hle/service/time/time.cpp b/src/core/hle/service/time/time.cpp index 8fdd5076f..d84a111c2 100644 --- a/src/core/hle/service/time/time.cpp +++ b/src/core/hle/service/time/time.cpp @@ -8,11 +8,11 @@ #include "core/core_timing_util.h" #include "core/hardware_properties.h" #include "core/hle/ipc_helpers.h" -#include "core/hle/kernel/k_client_port.h" #include "core/hle/kernel/k_scheduler.h" #include "core/hle/kernel/kernel.h" #include "core/hle/service/time/time.h" #include "core/hle/service/time/time_interface.h" +#include "core/hle/service/time/time_manager.h" #include "core/hle/service/time/time_sharedmemory.h" #include "core/hle/service/time/time_zone_service.h" diff --git a/src/core/hle/service/time/time.h b/src/core/hle/service/time/time.h index ce9c479c6..30e2cd369 100644 --- a/src/core/hle/service/time/time.h +++ b/src/core/hle/service/time/time.h @@ -6,7 +6,6 @@ #include "core/hle/service/service.h" #include "core/hle/service/time/clock_types.h" -#include "core/hle/service/time/time_manager.h" namespace Core { class System; diff --git a/src/core/hle/service/time/time_manager.cpp b/src/core/hle/service/time/time_manager.cpp index 4bbc606a1..9c4c960ef 100644 --- a/src/core/hle/service/time/time_manager.cpp +++ b/src/core/hle/service/time/time_manager.cpp @@ -13,18 +13,19 @@ #include "core/hle/service/time/time_manager.h" namespace Service::Time { - +namespace { constexpr Clock::TimeSpanType standard_network_clock_accuracy{0x0009356907420000ULL}; -static std::chrono::seconds GetSecondsSinceEpoch() { - return std::chrono::duration_cast<std::chrono::seconds>( - std::chrono::system_clock::now().time_since_epoch()) + +s64 GetSecondsSinceEpoch() { + const auto time_since_epoch = std::chrono::system_clock::now().time_since_epoch(); + return std::chrono::duration_cast<std::chrono::seconds>(time_since_epoch).count() + Settings::values.custom_rtc_differential; } -static s64 GetExternalRtcValue() { - return GetSecondsSinceEpoch().count() + TimeManager::GetExternalTimeZoneOffset(); +s64 GetExternalRtcValue() { + return GetSecondsSinceEpoch() + TimeManager::GetExternalTimeZoneOffset(); } +} // Anonymous namespace struct TimeManager::Impl final { explicit Impl(Core::System& system) diff --git a/src/core/hle/service/time/time_zone_service.cpp b/src/core/hle/service/time/time_zone_service.cpp index 5c3108768..3871e7316 100644 --- a/src/core/hle/service/time/time_zone_service.cpp +++ b/src/core/hle/service/time/time_zone_service.cpp @@ -10,8 +10,8 @@ namespace Service::Time { -ITimeZoneService ::ITimeZoneService(Core::System& system_, - TimeZone::TimeZoneContentManager& time_zone_manager_) +ITimeZoneService::ITimeZoneService(Core::System& system_, + TimeZone::TimeZoneContentManager& time_zone_manager_) : ServiceFramework{system_, "ITimeZoneService"}, time_zone_content_manager{time_zone_manager_} { static const FunctionInfo functions[] = { {0, &ITimeZoneService::GetDeviceLocationName, "GetDeviceLocationName"}, |