diff options
author | David Marcec <dmarcecguzman@gmail.com> | 2019-06-26 08:52:34 +0200 |
---|---|---|
committer | David Marcec <dmarcecguzman@gmail.com> | 2019-06-26 08:52:34 +0200 |
commit | f67039c067282e560175b1b346405e898b40e993 (patch) | |
tree | 664a798153170057b0ebbe9ffe1b3705cefc8e64 /src/core/hle/service/time/time_sharedmemory.cpp | |
parent | Implement Time::GetSharedMemoryNativeHandle (diff) | |
download | yuzu-f67039c067282e560175b1b346405e898b40e993.tar yuzu-f67039c067282e560175b1b346405e898b40e993.tar.gz yuzu-f67039c067282e560175b1b346405e898b40e993.tar.bz2 yuzu-f67039c067282e560175b1b346405e898b40e993.tar.lz yuzu-f67039c067282e560175b1b346405e898b40e993.tar.xz yuzu-f67039c067282e560175b1b346405e898b40e993.tar.zst yuzu-f67039c067282e560175b1b346405e898b40e993.zip |
Diffstat (limited to '')
-rw-r--r-- | src/core/hle/service/time/time_sharedmemory.cpp | 47 |
1 files changed, 28 insertions, 19 deletions
diff --git a/src/core/hle/service/time/time_sharedmemory.cpp b/src/core/hle/service/time/time_sharedmemory.cpp index 650c9af7a..bfc81b83c 100644 --- a/src/core/hle/service/time/time_sharedmemory.cpp +++ b/src/core/hle/service/time/time_sharedmemory.cpp @@ -1,4 +1,4 @@ -// Copyright 2018 yuzu emulator team +// Copyright 2019 yuzu emulator team // Licensed under GPLv2 or any later version // Refer to the license.txt file included. @@ -6,15 +6,17 @@ #include "core/hle/service/time/time_sharedmemory.h" namespace Service::Time { +const std::size_t SHARED_MEMORY_SIZE = 0x1000; SharedMemory::SharedMemory(Core::System& system) : system(system) { shared_memory_holder = Kernel::SharedMemory::Create( system.Kernel(), nullptr, SHARED_MEMORY_SIZE, Kernel::MemoryPermission::ReadWrite, Kernel::MemoryPermission::Read, 0, Kernel::MemoryRegion::BASE, "Time:SharedMemory"); - shared_memory_format = reinterpret_cast<Format*>(shared_memory_holder->GetPointer()); - shared_memory_format->format_version = - 14; // Seems static from 1.0.0 -> 8.1.0. Specific games seem to check this value and crash - // if it's set to anything else + + // Seems static from 1.0.0 -> 8.1.0. Specific games seem to check this value and crash + // if it's set to anything else + shared_memory_format.format_version = 14; + std::memcpy(shared_memory_holder->GetPointer(), &shared_memory_format, sizeof(Format)); } SharedMemory::~SharedMemory() = default; @@ -24,36 +26,43 @@ Kernel::SharedPtr<Kernel::SharedMemory> SharedMemory::GetSharedMemoryHolder() co } void SharedMemory::SetStandardSteadyClockTimepoint(const SteadyClockTimePoint& timepoint) { - shared_memory_format->standard_steady_clock_timepoint.StoreData(timepoint); + shared_memory_format.standard_steady_clock_timepoint.StoreData( + shared_memory_holder->GetPointer(), timepoint); } void SharedMemory::SetStandardLocalSystemClockContext(const SystemClockContext& context) { - shared_memory_format->standard_local_system_clock_context.StoreData(context); + shared_memory_format.standard_local_system_clock_context.StoreData( + shared_memory_holder->GetPointer(), context); } void SharedMemory::SetStandardNetworkSystemClockContext(const SystemClockContext& context) { - shared_memory_format->standard_network_system_clock_context.StoreData(context); + shared_memory_format.standard_network_system_clock_context.StoreData( + shared_memory_holder->GetPointer(), context); } -void SharedMemory::SetStandardUserSystemClockAutomaticCorrectionEnabled(const bool enabled) { - shared_memory_format->standard_user_system_clock_automatic_correction.StoreData(enabled ? 1 - : 0); +void SharedMemory::SetStandardUserSystemClockAutomaticCorrectionEnabled(bool enabled) { + shared_memory_format.standard_user_system_clock_automatic_correction.StoreData( + shared_memory_holder->GetPointer(), enabled); } -SteadyClockTimePoint SharedMemory::GetStandardSteadyClockTimepoint() const { - return shared_memory_format->standard_steady_clock_timepoint.ReadData(); +SteadyClockTimePoint SharedMemory::GetStandardSteadyClockTimepoint() { + return shared_memory_format.standard_steady_clock_timepoint.ReadData( + shared_memory_holder->GetPointer()); } -SystemClockContext SharedMemory::GetStandardLocalSystemClockContext() const { - return shared_memory_format->standard_local_system_clock_context.ReadData(); +SystemClockContext SharedMemory::GetStandardLocalSystemClockContext() { + return shared_memory_format.standard_local_system_clock_context.ReadData( + shared_memory_holder->GetPointer()); } -SystemClockContext SharedMemory::GetStandardNetworkSystemClockContext() const { - return shared_memory_format->standard_network_system_clock_context.ReadData(); +SystemClockContext SharedMemory::GetStandardNetworkSystemClockContext() { + return shared_memory_format.standard_network_system_clock_context.ReadData( + shared_memory_holder->GetPointer()); } -bool SharedMemory::GetStandardUserSystemClockAutomaticCorrectionEnabled() const { - return shared_memory_format->standard_user_system_clock_automatic_correction.ReadData() > 0; +bool SharedMemory::GetStandardUserSystemClockAutomaticCorrectionEnabled() { + return shared_memory_format.standard_user_system_clock_automatic_correction.ReadData( + shared_memory_holder->GetPointer()); } } // namespace Service::Time |