summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Zach Hilman2019-07-06 21:19:20 -0400
committerGravatar GitHub2019-07-06 21:19:20 -0400
commitf732cd5a4bc47461069ac21c00a833172bcc7d79 (patch)
tree55050d98f0bdb252d61d639d9d7e2fc5519035ed /src
parentMerge pull request #2601 from FernandoS27/texture_cache (diff)
parentclang-format fixes (diff)
downloadyuzu-f732cd5a4bc47461069ac21c00a833172bcc7d79.tar.gz
yuzu-f732cd5a4bc47461069ac21c00a833172bcc7d79.tar.xz
yuzu-f732cd5a4bc47461069ac21c00a833172bcc7d79.zip
Merge pull request #2684 from SciresM/suspend_tick
am: Implement GetAccumulatedSuspendedTickValue
Diffstat (limited to 'src')
-rw-r--r--src/core/hle/service/am/am.cpp26
-rw-r--r--src/core/hle/service/am/am.h1
2 files changed, 20 insertions, 7 deletions
diff --git a/src/core/hle/service/am/am.cpp b/src/core/hle/service/am/am.cpp
index 33cebb48b..eced38001 100644
--- a/src/core/hle/service/am/am.cpp
+++ b/src/core/hle/service/am/am.cpp
@@ -270,7 +270,7 @@ ISelfController::ISelfController(std::shared_ptr<NVFlinger::NVFlinger> nvflinger
270 {70, nullptr, "ReportMultimediaError"}, 270 {70, nullptr, "ReportMultimediaError"},
271 {71, nullptr, "GetCurrentIlluminanceEx"}, 271 {71, nullptr, "GetCurrentIlluminanceEx"},
272 {80, nullptr, "SetWirelessPriorityMode"}, 272 {80, nullptr, "SetWirelessPriorityMode"},
273 {90, nullptr, "GetAccumulatedSuspendedTickValue"}, 273 {90, &ISelfController::GetAccumulatedSuspendedTickValue, "GetAccumulatedSuspendedTickValue"},
274 {91, &ISelfController::GetAccumulatedSuspendedTickChangedEvent, "GetAccumulatedSuspendedTickChangedEvent"}, 274 {91, &ISelfController::GetAccumulatedSuspendedTickChangedEvent, "GetAccumulatedSuspendedTickChangedEvent"},
275 {100, nullptr, "SetAlbumImageTakenNotificationEnabled"}, 275 {100, nullptr, "SetAlbumImageTakenNotificationEnabled"},
276 {1000, nullptr, "GetDebugStorageChannel"}, 276 {1000, nullptr, "GetDebugStorageChannel"},
@@ -283,10 +283,14 @@ ISelfController::ISelfController(std::shared_ptr<NVFlinger::NVFlinger> nvflinger
283 launchable_event = Kernel::WritableEvent::CreateEventPair(kernel, Kernel::ResetType::Manual, 283 launchable_event = Kernel::WritableEvent::CreateEventPair(kernel, Kernel::ResetType::Manual,
284 "ISelfController:LaunchableEvent"); 284 "ISelfController:LaunchableEvent");
285 285
286 // TODO(ogniK): Figure out where, when and why this event gets signalled 286 // This event is created by AM on the first time GetAccumulatedSuspendedTickChangedEvent() is
287 // called. Yuzu can just create it unconditionally, since it doesn't need to support multiple
288 // ISelfControllers. The event is signaled on creation, and on transition from suspended -> not
289 // suspended if the event has previously been created by a call to
290 // GetAccumulatedSuspendedTickChangedEvent.
287 accumulated_suspended_tick_changed_event = Kernel::WritableEvent::CreateEventPair( 291 accumulated_suspended_tick_changed_event = Kernel::WritableEvent::CreateEventPair(
288 kernel, Kernel::ResetType::Manual, "ISelfController:AccumulatedSuspendedTickChangedEvent"); 292 kernel, Kernel::ResetType::Manual, "ISelfController:AccumulatedSuspendedTickChangedEvent");
289 accumulated_suspended_tick_changed_event.writable->Signal(); // Is signalled on creation 293 accumulated_suspended_tick_changed_event.writable->Signal();
290} 294}
291 295
292ISelfController::~ISelfController() = default; 296ISelfController::~ISelfController() = default;
@@ -449,11 +453,19 @@ void ISelfController::GetIdleTimeDetectionExtension(Kernel::HLERequestContext& c
449 rb.Push<u32>(idle_time_detection_extension); 453 rb.Push<u32>(idle_time_detection_extension);
450} 454}
451 455
456void ISelfController::GetAccumulatedSuspendedTickValue(Kernel::HLERequestContext& ctx) {
457 LOG_DEBUG(Service_AM, "called.");
458
459 // This command returns the total number of system ticks since ISelfController creation
460 // where the game was suspended. Since Yuzu doesn't implement game suspension, this command
461 // can just always return 0 ticks.
462 IPC::ResponseBuilder rb{ctx, 4};
463 rb.Push(RESULT_SUCCESS);
464 rb.Push<u64>(0);
465}
466
452void ISelfController::GetAccumulatedSuspendedTickChangedEvent(Kernel::HLERequestContext& ctx) { 467void ISelfController::GetAccumulatedSuspendedTickChangedEvent(Kernel::HLERequestContext& ctx) {
453 // The implementation of this function is fine as is, the reason we're labelling it as stubbed 468 LOG_DEBUG(Service_AM, "called.");
454 // is because we're currently unsure when and where accumulated_suspended_tick_changed_event is
455 // actually signalled for the time being.
456 LOG_WARNING(Service_AM, "(STUBBED) called");
457 469
458 IPC::ResponseBuilder rb{ctx, 2, 1}; 470 IPC::ResponseBuilder rb{ctx, 2, 1};
459 rb.Push(RESULT_SUCCESS); 471 rb.Push(RESULT_SUCCESS);
diff --git a/src/core/hle/service/am/am.h b/src/core/hle/service/am/am.h
index 4ea609d23..49ff20959 100644
--- a/src/core/hle/service/am/am.h
+++ b/src/core/hle/service/am/am.h
@@ -133,6 +133,7 @@ private:
133 void SetHandlesRequestToDisplay(Kernel::HLERequestContext& ctx); 133 void SetHandlesRequestToDisplay(Kernel::HLERequestContext& ctx);
134 void SetIdleTimeDetectionExtension(Kernel::HLERequestContext& ctx); 134 void SetIdleTimeDetectionExtension(Kernel::HLERequestContext& ctx);
135 void GetIdleTimeDetectionExtension(Kernel::HLERequestContext& ctx); 135 void GetIdleTimeDetectionExtension(Kernel::HLERequestContext& ctx);
136 void GetAccumulatedSuspendedTickValue(Kernel::HLERequestContext& ctx);
136 void GetAccumulatedSuspendedTickChangedEvent(Kernel::HLERequestContext& ctx); 137 void GetAccumulatedSuspendedTickChangedEvent(Kernel::HLERequestContext& ctx);
137 138
138 std::shared_ptr<NVFlinger::NVFlinger> nvflinger; 139 std::shared_ptr<NVFlinger::NVFlinger> nvflinger;