Просмотр исходного кода

am: Add RequestExit event to AppletMessageQueue
Tested against libnx, signals to games to begin cleanup.

Zach Hilman 7 лет назад
Родитель
Сommit
4c1c8801a5
2 измененных файлов с 6 добавлено и 0 удалено
  1. 4 0
      src/core/hle/service/am/am.cpp
  2. 2 0
      src/core/hle/service/am/am.h

+ 4 - 0
src/core/hle/service/am/am.cpp

@@ -550,6 +550,10 @@ void AppletMessageQueue::OperationModeChanged() {
     on_operation_mode_changed.writable->Signal();
 }
 
+void AppletMessageQueue::RequestExit() {
+    PushMessage(AppletMessage::ExitRequested);
+}
+
 ICommonStateGetter::ICommonStateGetter(Core::System& system,
                                        std::shared_ptr<AppletMessageQueue> msg_queue)
     : ServiceFramework("ICommonStateGetter"), system(system), msg_queue(std::move(msg_queue)) {

+ 2 - 0
src/core/hle/service/am/am.h

@@ -45,6 +45,7 @@ class AppletMessageQueue {
 public:
     enum class AppletMessage : u32 {
         NoMessage = 0,
+        ExitRequested = 4,
         FocusStateChanged = 15,
         OperationModeChanged = 30,
         PerformanceModeChanged = 31,
@@ -59,6 +60,7 @@ public:
     AppletMessage PopMessage();
     std::size_t GetMessageCount() const;
     void OperationModeChanged();
+    void RequestExit();
 
 private:
     std::queue<AppletMessage> messages;