forked from suyu/suyu
b533f18ab9
This doesn't modify internal member state.
46 lines
1.3 KiB
C++
46 lines
1.3 KiB
C++
// Copyright 2019 yuzu emulator team
|
|
// Licensed under GPLv2 or any later version
|
|
// Refer to the license.txt file included.
|
|
|
|
#pragma once
|
|
|
|
#include "core/hle/service/time/clock_types.h"
|
|
#include "core/hle/service/time/steady_clock_core.h"
|
|
#include "core/hle/service/time/system_clock_core.h"
|
|
|
|
namespace Core {
|
|
class System;
|
|
}
|
|
|
|
namespace Service::Time::Clock {
|
|
|
|
class StandardNetworkSystemClockCore final : public SystemClockCore {
|
|
public:
|
|
explicit StandardNetworkSystemClockCore(SteadyClockCore& steady_clock_core)
|
|
: SystemClockCore{steady_clock_core} {}
|
|
|
|
void SetStandardNetworkClockSufficientAccuracy(TimeSpanType value) {
|
|
standard_network_clock_sufficient_accuracy = value;
|
|
}
|
|
|
|
bool IsStandardNetworkSystemClockAccuracySufficient(Core::System& system) const {
|
|
SystemClockContext context{};
|
|
if (GetClockContext(system, context) != RESULT_SUCCESS) {
|
|
return {};
|
|
}
|
|
|
|
s64 span{};
|
|
if (context.steady_time_point.GetSpanBetween(
|
|
GetSteadyClockCore().GetCurrentTimePoint(system), span) != RESULT_SUCCESS) {
|
|
return {};
|
|
}
|
|
|
|
return TimeSpanType{span}.nanoseconds <
|
|
standard_network_clock_sufficient_accuracy.nanoseconds;
|
|
}
|
|
|
|
private:
|
|
TimeSpanType standard_network_clock_sufficient_accuracy{};
|
|
};
|
|
|
|
} // namespace Service::Time::Clock
|