summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/hle/service/am/am.cpp11
-rw-r--r--src/core/hle/service/am/applets/applet_cabinet.cpp5
-rw-r--r--src/core/hle/service/am/applets/applet_cabinet.h1
-rw-r--r--src/core/hle/service/am/applets/applet_controller.cpp5
-rw-r--r--src/core/hle/service/am/applets/applet_controller.h1
-rw-r--r--src/core/hle/service/am/applets/applet_error.cpp5
-rw-r--r--src/core/hle/service/am/applets/applet_error.h1
-rw-r--r--src/core/hle/service/am/applets/applet_general_backend.cpp15
-rw-r--r--src/core/hle/service/am/applets/applet_general_backend.h3
-rw-r--r--src/core/hle/service/am/applets/applet_mii_edit.cpp5
-rw-r--r--src/core/hle/service/am/applets/applet_mii_edit.h1
-rw-r--r--src/core/hle/service/am/applets/applet_profile_select.cpp5
-rw-r--r--src/core/hle/service/am/applets/applet_profile_select.h1
-rw-r--r--src/core/hle/service/am/applets/applet_software_keyboard.cpp5
-rw-r--r--src/core/hle/service/am/applets/applet_software_keyboard.h1
-rw-r--r--src/core/hle/service/am/applets/applet_web_browser.cpp5
-rw-r--r--src/core/hle/service/am/applets/applet_web_browser.h1
-rw-r--r--src/core/hle/service/am/applets/applets.h1
18 files changed, 71 insertions, 1 deletions
diff --git a/src/core/hle/service/am/am.cpp b/src/core/hle/service/am/am.cpp
index deeca925d..8943e4a81 100644
--- a/src/core/hle/service/am/am.cpp
+++ b/src/core/hle/service/am/am.cpp
@@ -945,7 +945,7 @@ public:
945 {0, &ILibraryAppletAccessor::GetAppletStateChangedEvent, "GetAppletStateChangedEvent"}, 945 {0, &ILibraryAppletAccessor::GetAppletStateChangedEvent, "GetAppletStateChangedEvent"},
946 {1, &ILibraryAppletAccessor::IsCompleted, "IsCompleted"}, 946 {1, &ILibraryAppletAccessor::IsCompleted, "IsCompleted"},
947 {10, &ILibraryAppletAccessor::Start, "Start"}, 947 {10, &ILibraryAppletAccessor::Start, "Start"},
948 {20, nullptr, "RequestExit"}, 948 {20, &ILibraryAppletAccessor::RequestExit, "RequestExit"},
949 {25, nullptr, "Terminate"}, 949 {25, nullptr, "Terminate"},
950 {30, &ILibraryAppletAccessor::GetResult, "GetResult"}, 950 {30, &ILibraryAppletAccessor::GetResult, "GetResult"},
951 {50, nullptr, "SetOutOfFocusApplicationSuspendingEnabled"}, 951 {50, nullptr, "SetOutOfFocusApplicationSuspendingEnabled"},
@@ -1010,6 +1010,15 @@ private:
1010 rb.Push(ResultSuccess); 1010 rb.Push(ResultSuccess);
1011 } 1011 }
1012 1012
1013 void RequestExit(HLERequestContext& ctx) {
1014 LOG_DEBUG(Service_AM, "called");
1015
1016 ASSERT(applet != nullptr);
1017
1018 IPC::ResponseBuilder rb{ctx, 2};
1019 rb.Push(applet->RequestExit());
1020 }
1021
1013 void PushInData(HLERequestContext& ctx) { 1022 void PushInData(HLERequestContext& ctx) {
1014 LOG_DEBUG(Service_AM, "called"); 1023 LOG_DEBUG(Service_AM, "called");
1015 1024
diff --git a/src/core/hle/service/am/applets/applet_cabinet.cpp b/src/core/hle/service/am/applets/applet_cabinet.cpp
index 162687b29..d76a9ef5a 100644
--- a/src/core/hle/service/am/applets/applet_cabinet.cpp
+++ b/src/core/hle/service/am/applets/applet_cabinet.cpp
@@ -174,4 +174,9 @@ void Cabinet::Cancel() {
174 broker.SignalStateChanged(); 174 broker.SignalStateChanged();
175} 175}
176 176
177Result Cabinet::RequestExit() {
178 this->Cancel();
179 R_SUCCEED();
180}
181
177} // namespace Service::AM::Applets 182} // namespace Service::AM::Applets
diff --git a/src/core/hle/service/am/applets/applet_cabinet.h b/src/core/hle/service/am/applets/applet_cabinet.h
index 84197a807..edd295a27 100644
--- a/src/core/hle/service/am/applets/applet_cabinet.h
+++ b/src/core/hle/service/am/applets/applet_cabinet.h
@@ -89,6 +89,7 @@ public:
89 void Execute() override; 89 void Execute() override;
90 void DisplayCompleted(bool apply_changes, std::string_view amiibo_name); 90 void DisplayCompleted(bool apply_changes, std::string_view amiibo_name);
91 void Cancel(); 91 void Cancel();
92 Result RequestExit() override;
92 93
93private: 94private:
94 const Core::Frontend::CabinetApplet& frontend; 95 const Core::Frontend::CabinetApplet& frontend;
diff --git a/src/core/hle/service/am/applets/applet_controller.cpp b/src/core/hle/service/am/applets/applet_controller.cpp
index 58484519b..11b64dbbd 100644
--- a/src/core/hle/service/am/applets/applet_controller.cpp
+++ b/src/core/hle/service/am/applets/applet_controller.cpp
@@ -262,4 +262,9 @@ void Controller::ConfigurationComplete() {
262 broker.SignalStateChanged(); 262 broker.SignalStateChanged();
263} 263}
264 264
265Result Controller::RequestExit() {
266 this->ConfigurationComplete();
267 R_SUCCEED();
268}
269
265} // namespace Service::AM::Applets 270} // namespace Service::AM::Applets
diff --git a/src/core/hle/service/am/applets/applet_controller.h b/src/core/hle/service/am/applets/applet_controller.h
index 1f9adec65..1fbabee11 100644
--- a/src/core/hle/service/am/applets/applet_controller.h
+++ b/src/core/hle/service/am/applets/applet_controller.h
@@ -129,6 +129,7 @@ public:
129 Result GetStatus() const override; 129 Result GetStatus() const override;
130 void ExecuteInteractive() override; 130 void ExecuteInteractive() override;
131 void Execute() override; 131 void Execute() override;
132 Result RequestExit() override;
132 133
133 void ConfigurationComplete(); 134 void ConfigurationComplete();
134 135
diff --git a/src/core/hle/service/am/applets/applet_error.cpp b/src/core/hle/service/am/applets/applet_error.cpp
index b013896b4..d6935c09d 100644
--- a/src/core/hle/service/am/applets/applet_error.cpp
+++ b/src/core/hle/service/am/applets/applet_error.cpp
@@ -209,4 +209,9 @@ void Error::DisplayCompleted() {
209 broker.SignalStateChanged(); 209 broker.SignalStateChanged();
210} 210}
211 211
212Result Error::RequestExit() {
213 this->DisplayCompleted();
214 R_SUCCEED();
215}
216
212} // namespace Service::AM::Applets 217} // namespace Service::AM::Applets
diff --git a/src/core/hle/service/am/applets/applet_error.h b/src/core/hle/service/am/applets/applet_error.h
index d78d6f1d1..d822a32bb 100644
--- a/src/core/hle/service/am/applets/applet_error.h
+++ b/src/core/hle/service/am/applets/applet_error.h
@@ -34,6 +34,7 @@ public:
34 Result GetStatus() const override; 34 Result GetStatus() const override;
35 void ExecuteInteractive() override; 35 void ExecuteInteractive() override;
36 void Execute() override; 36 void Execute() override;
37 Result RequestExit() override;
37 38
38 void DisplayCompleted(); 39 void DisplayCompleted();
39 40
diff --git a/src/core/hle/service/am/applets/applet_general_backend.cpp b/src/core/hle/service/am/applets/applet_general_backend.cpp
index 1eefa85e3..baf680040 100644
--- a/src/core/hle/service/am/applets/applet_general_backend.cpp
+++ b/src/core/hle/service/am/applets/applet_general_backend.cpp
@@ -150,6 +150,11 @@ void Auth::AuthFinished(bool is_successful) {
150 broker.SignalStateChanged(); 150 broker.SignalStateChanged();
151} 151}
152 152
153Result Auth::RequestExit() {
154 this->AuthFinished(false);
155 R_SUCCEED();
156}
157
153PhotoViewer::PhotoViewer(Core::System& system_, LibraryAppletMode applet_mode_, 158PhotoViewer::PhotoViewer(Core::System& system_, LibraryAppletMode applet_mode_,
154 const Core::Frontend::PhotoViewerApplet& frontend_) 159 const Core::Frontend::PhotoViewerApplet& frontend_)
155 : Applet{system_, applet_mode_}, frontend{frontend_}, system{system_} {} 160 : Applet{system_, applet_mode_}, frontend{frontend_}, system{system_} {}
@@ -202,6 +207,11 @@ void PhotoViewer::ViewFinished() {
202 broker.SignalStateChanged(); 207 broker.SignalStateChanged();
203} 208}
204 209
210Result PhotoViewer::RequestExit() {
211 this->ViewFinished();
212 R_SUCCEED();
213}
214
205StubApplet::StubApplet(Core::System& system_, AppletId id_, LibraryAppletMode applet_mode_) 215StubApplet::StubApplet(Core::System& system_, AppletId id_, LibraryAppletMode applet_mode_)
206 : Applet{system_, applet_mode_}, id{id_}, system{system_} {} 216 : Applet{system_, applet_mode_}, id{id_}, system{system_} {}
207 217
@@ -250,4 +260,9 @@ void StubApplet::Execute() {
250 broker.SignalStateChanged(); 260 broker.SignalStateChanged();
251} 261}
252 262
263Result StubApplet::RequestExit() {
264 // Nothing to do.
265 R_SUCCEED();
266}
267
253} // namespace Service::AM::Applets 268} // namespace Service::AM::Applets
diff --git a/src/core/hle/service/am/applets/applet_general_backend.h b/src/core/hle/service/am/applets/applet_general_backend.h
index a9f2535a2..34ecaebb9 100644
--- a/src/core/hle/service/am/applets/applet_general_backend.h
+++ b/src/core/hle/service/am/applets/applet_general_backend.h
@@ -28,6 +28,7 @@ public:
28 Result GetStatus() const override; 28 Result GetStatus() const override;
29 void ExecuteInteractive() override; 29 void ExecuteInteractive() override;
30 void Execute() override; 30 void Execute() override;
31 Result RequestExit() override;
31 32
32 void AuthFinished(bool is_successful = true); 33 void AuthFinished(bool is_successful = true);
33 34
@@ -59,6 +60,7 @@ public:
59 Result GetStatus() const override; 60 Result GetStatus() const override;
60 void ExecuteInteractive() override; 61 void ExecuteInteractive() override;
61 void Execute() override; 62 void Execute() override;
63 Result RequestExit() override;
62 64
63 void ViewFinished(); 65 void ViewFinished();
64 66
@@ -80,6 +82,7 @@ public:
80 Result GetStatus() const override; 82 Result GetStatus() const override;
81 void ExecuteInteractive() override; 83 void ExecuteInteractive() override;
82 void Execute() override; 84 void Execute() override;
85 Result RequestExit() override;
83 86
84private: 87private:
85 AppletId id; 88 AppletId id;
diff --git a/src/core/hle/service/am/applets/applet_mii_edit.cpp b/src/core/hle/service/am/applets/applet_mii_edit.cpp
index ae80ef506..a4a3f3cfa 100644
--- a/src/core/hle/service/am/applets/applet_mii_edit.cpp
+++ b/src/core/hle/service/am/applets/applet_mii_edit.cpp
@@ -135,4 +135,9 @@ void MiiEdit::MiiEditOutputForCharInfoEditing(MiiEditResult result,
135 broker.SignalStateChanged(); 135 broker.SignalStateChanged();
136} 136}
137 137
138Result MiiEdit::RequestExit() {
139 this->MiiEditOutput(MiiEditResult::Cancel, -1);
140 R_SUCCEED();
141}
142
138} // namespace Service::AM::Applets 143} // namespace Service::AM::Applets
diff --git a/src/core/hle/service/am/applets/applet_mii_edit.h b/src/core/hle/service/am/applets/applet_mii_edit.h
index d18dd3cf5..3f46fae1b 100644
--- a/src/core/hle/service/am/applets/applet_mii_edit.h
+++ b/src/core/hle/service/am/applets/applet_mii_edit.h
@@ -25,6 +25,7 @@ public:
25 Result GetStatus() const override; 25 Result GetStatus() const override;
26 void ExecuteInteractive() override; 26 void ExecuteInteractive() override;
27 void Execute() override; 27 void Execute() override;
28 Result RequestExit() override;
28 29
29 void MiiEditOutput(MiiEditResult result, s32 index); 30 void MiiEditOutput(MiiEditResult result, s32 index);
30 31
diff --git a/src/core/hle/service/am/applets/applet_profile_select.cpp b/src/core/hle/service/am/applets/applet_profile_select.cpp
index 1d69f5447..5486d80dc 100644
--- a/src/core/hle/service/am/applets/applet_profile_select.cpp
+++ b/src/core/hle/service/am/applets/applet_profile_select.cpp
@@ -73,4 +73,9 @@ void ProfileSelect::SelectionComplete(std::optional<Common::UUID> uuid) {
73 broker.SignalStateChanged(); 73 broker.SignalStateChanged();
74} 74}
75 75
76Result ProfileSelect::RequestExit() {
77 this->SelectionComplete(std::nullopt);
78 R_SUCCEED();
79}
80
76} // namespace Service::AM::Applets 81} // namespace Service::AM::Applets
diff --git a/src/core/hle/service/am/applets/applet_profile_select.h b/src/core/hle/service/am/applets/applet_profile_select.h
index b77f1d205..85705c216 100644
--- a/src/core/hle/service/am/applets/applet_profile_select.h
+++ b/src/core/hle/service/am/applets/applet_profile_select.h
@@ -42,6 +42,7 @@ public:
42 Result GetStatus() const override; 42 Result GetStatus() const override;
43 void ExecuteInteractive() override; 43 void ExecuteInteractive() override;
44 void Execute() override; 44 void Execute() override;
45 Result RequestExit() override;
45 46
46 void SelectionComplete(std::optional<Common::UUID> uuid); 47 void SelectionComplete(std::optional<Common::UUID> uuid);
47 48
diff --git a/src/core/hle/service/am/applets/applet_software_keyboard.cpp b/src/core/hle/service/am/applets/applet_software_keyboard.cpp
index c18236045..6f7499731 100644
--- a/src/core/hle/service/am/applets/applet_software_keyboard.cpp
+++ b/src/core/hle/service/am/applets/applet_software_keyboard.cpp
@@ -770,6 +770,11 @@ void SoftwareKeyboard::ExitKeyboard() {
770 broker.SignalStateChanged(); 770 broker.SignalStateChanged();
771} 771}
772 772
773Result SoftwareKeyboard::RequestExit() {
774 this->ExitKeyboard();
775 R_SUCCEED();
776}
777
773// Inline Software Keyboard Requests 778// Inline Software Keyboard Requests
774 779
775void SoftwareKeyboard::RequestFinalize(const std::vector<u8>& request_data) { 780void SoftwareKeyboard::RequestFinalize(const std::vector<u8>& request_data) {
diff --git a/src/core/hle/service/am/applets/applet_software_keyboard.h b/src/core/hle/service/am/applets/applet_software_keyboard.h
index b01b31c98..2e919811b 100644
--- a/src/core/hle/service/am/applets/applet_software_keyboard.h
+++ b/src/core/hle/service/am/applets/applet_software_keyboard.h
@@ -31,6 +31,7 @@ public:
31 Result GetStatus() const override; 31 Result GetStatus() const override;
32 void ExecuteInteractive() override; 32 void ExecuteInteractive() override;
33 void Execute() override; 33 void Execute() override;
34 Result RequestExit() override;
34 35
35 /** 36 /**
36 * Submits the input text to the application. 37 * Submits the input text to the application.
diff --git a/src/core/hle/service/am/applets/applet_web_browser.cpp b/src/core/hle/service/am/applets/applet_web_browser.cpp
index f061bae80..59359e4d3 100644
--- a/src/core/hle/service/am/applets/applet_web_browser.cpp
+++ b/src/core/hle/service/am/applets/applet_web_browser.cpp
@@ -363,6 +363,11 @@ void WebBrowser::WebBrowserExit(WebExitReason exit_reason, std::string last_url)
363 broker.SignalStateChanged(); 363 broker.SignalStateChanged();
364} 364}
365 365
366Result WebBrowser::RequestExit() {
367 this->WebBrowserExit(WebExitReason::ExitRequested);
368 R_SUCCEED();
369}
370
366bool WebBrowser::InputTLVExistsInMap(WebArgInputTLVType input_tlv_type) const { 371bool WebBrowser::InputTLVExistsInMap(WebArgInputTLVType input_tlv_type) const {
367 return web_arg_input_tlv_map.find(input_tlv_type) != web_arg_input_tlv_map.end(); 372 return web_arg_input_tlv_map.find(input_tlv_type) != web_arg_input_tlv_map.end();
368} 373}
diff --git a/src/core/hle/service/am/applets/applet_web_browser.h b/src/core/hle/service/am/applets/applet_web_browser.h
index fd727fac8..99fe18659 100644
--- a/src/core/hle/service/am/applets/applet_web_browser.h
+++ b/src/core/hle/service/am/applets/applet_web_browser.h
@@ -35,6 +35,7 @@ public:
35 Result GetStatus() const override; 35 Result GetStatus() const override;
36 void ExecuteInteractive() override; 36 void ExecuteInteractive() override;
37 void Execute() override; 37 void Execute() override;
38 Result RequestExit() override;
38 39
39 void ExtractOfflineRomFS(); 40 void ExtractOfflineRomFS();
40 41
diff --git a/src/core/hle/service/am/applets/applets.h b/src/core/hle/service/am/applets/applets.h
index a22eb62a8..12f374199 100644
--- a/src/core/hle/service/am/applets/applets.h
+++ b/src/core/hle/service/am/applets/applets.h
@@ -142,6 +142,7 @@ public:
142 virtual Result GetStatus() const = 0; 142 virtual Result GetStatus() const = 0;
143 virtual void ExecuteInteractive() = 0; 143 virtual void ExecuteInteractive() = 0;
144 virtual void Execute() = 0; 144 virtual void Execute() = 0;
145 virtual Result RequestExit() = 0;
145 146
146 AppletDataBroker& GetBroker() { 147 AppletDataBroker& GetBroker() {
147 return broker; 148 return broker;