Răsfoiți Sursa

Merge pull request #6053 from Morph1984/time-CalculateSpanBetween

time: Fix CalculateSpanBetween implementation
bunnei 5 ani în urmă
părinte
comite
3b85ac2ac4
1 a modificat fișierele cu 9 adăugiri și 3 ștergeri
  1. 9 3
      src/core/hle/service/time/time.cpp

+ 9 - 3
src/core/hle/service/time/time.cpp

@@ -341,12 +341,18 @@ void Module::Interface::CalculateStandardUserSystemClockDifferenceByUser(
 void Module::Interface::CalculateSpanBetween(Kernel::HLERequestContext& ctx) {
     LOG_DEBUG(Service_Time, "called");
 
-    IPC::RequestParser rp{ctx};
-    const auto snapshot_a = rp.PopRaw<Clock::ClockSnapshot>();
-    const auto snapshot_b = rp.PopRaw<Clock::ClockSnapshot>();
+    Clock::ClockSnapshot snapshot_a;
+    Clock::ClockSnapshot snapshot_b;
+
+    const auto snapshot_a_data = ctx.ReadBuffer(0);
+    const auto snapshot_b_data = ctx.ReadBuffer(1);
+
+    std::memcpy(&snapshot_a, snapshot_a_data.data(), sizeof(Clock::ClockSnapshot));
+    std::memcpy(&snapshot_b, snapshot_b_data.data(), sizeof(Clock::ClockSnapshot));
 
     Clock::TimeSpanType time_span_type{};
     s64 span{};
+
     if (const ResultCode result{snapshot_a.steady_clock_time_point.GetSpanBetween(
             snapshot_b.steady_clock_time_point, span)};
         result != RESULT_SUCCESS) {