summaryrefslogtreecommitdiff
path: root/src/core/core.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/core.cpp')
-rw-r--r--src/core/core.cpp50
1 files changed, 17 insertions, 33 deletions
diff --git a/src/core/core.cpp b/src/core/core.cpp
index 175a5f2ea..7106151bd 100644
--- a/src/core/core.cpp
+++ b/src/core/core.cpp
@@ -18,13 +18,18 @@
18#include "core/file_sys/registered_cache.h" 18#include "core/file_sys/registered_cache.h"
19#include "core/file_sys/vfs_concat.h" 19#include "core/file_sys/vfs_concat.h"
20#include "core/file_sys/vfs_real.h" 20#include "core/file_sys/vfs_real.h"
21#include "core/frontend/applets/error.h"
22#include "core/frontend/applets/general_frontend.h"
23#include "core/frontend/applets/profile_select.h"
24#include "core/frontend/applets/software_keyboard.h"
25#include "core/frontend/applets/web_browser.h"
21#include "core/gdbstub/gdbstub.h" 26#include "core/gdbstub/gdbstub.h"
22#include "core/hle/kernel/client_port.h" 27#include "core/hle/kernel/client_port.h"
23#include "core/hle/kernel/kernel.h" 28#include "core/hle/kernel/kernel.h"
24#include "core/hle/kernel/process.h" 29#include "core/hle/kernel/process.h"
25#include "core/hle/kernel/scheduler.h" 30#include "core/hle/kernel/scheduler.h"
26#include "core/hle/kernel/thread.h" 31#include "core/hle/kernel/thread.h"
27#include "core/hle/service/am/applets/software_keyboard.h" 32#include "core/hle/service/am/applets/applets.h"
28#include "core/hle/service/service.h" 33#include "core/hle/service/service.h"
29#include "core/hle/service/sm/sm.h" 34#include "core/hle/service/sm/sm.h"
30#include "core/loader/loader.h" 35#include "core/loader/loader.h"
@@ -110,12 +115,7 @@ struct System::Impl {
110 content_provider = std::make_unique<FileSys::ContentProviderUnion>(); 115 content_provider = std::make_unique<FileSys::ContentProviderUnion>();
111 116
112 /// Create default implementations of applets if one is not provided. 117 /// Create default implementations of applets if one is not provided.
113 if (profile_selector == nullptr) 118 applet_manager.SetDefaultAppletsIfMissing();
114 profile_selector = std::make_unique<Core::Frontend::DefaultProfileSelectApplet>();
115 if (software_keyboard == nullptr)
116 software_keyboard = std::make_unique<Core::Frontend::DefaultSoftwareKeyboardApplet>();
117 if (web_browser == nullptr)
118 web_browser = std::make_unique<Core::Frontend::DefaultWebBrowserApplet>();
119 119
120 telemetry_session = std::make_unique<Core::TelemetrySession>(); 120 telemetry_session = std::make_unique<Core::TelemetrySession>();
121 service_manager = std::make_shared<Service::SM::ServiceManager>(); 121 service_manager = std::make_shared<Service::SM::ServiceManager>();
@@ -223,9 +223,7 @@ struct System::Impl {
223 app_loader.reset(); 223 app_loader.reset();
224 224
225 // Clear all applets 225 // Clear all applets
226 profile_selector.reset(); 226 applet_manager.ClearAll();
227 software_keyboard.reset();
228 web_browser.reset();
229 227
230 LOG_DEBUG(Core, "Shutdown OK"); 228 LOG_DEBUG(Core, "Shutdown OK");
231 } 229 }
@@ -264,9 +262,7 @@ struct System::Impl {
264 std::unique_ptr<FileSys::CheatEngine> cheat_engine; 262 std::unique_ptr<FileSys::CheatEngine> cheat_engine;
265 263
266 /// Frontend applets 264 /// Frontend applets
267 std::unique_ptr<Core::Frontend::ProfileSelectApplet> profile_selector; 265 Service::AM::Applets::AppletManager applet_manager;
268 std::unique_ptr<Core::Frontend::SoftwareKeyboardApplet> software_keyboard;
269 std::unique_ptr<Core::Frontend::WebBrowserApplet> web_browser;
270 266
271 /// Service manager 267 /// Service manager
272 std::shared_ptr<Service::SM::ServiceManager> service_manager; 268 std::shared_ptr<Service::SM::ServiceManager> service_manager;
@@ -476,20 +472,20 @@ std::shared_ptr<FileSys::VfsFilesystem> System::GetFilesystem() const {
476 return impl->virtual_filesystem; 472 return impl->virtual_filesystem;
477} 473}
478 474
479void System::SetProfileSelector(std::unique_ptr<Frontend::ProfileSelectApplet> applet) { 475void System::SetAppletFrontendSet(Service::AM::Applets::AppletFrontendSet&& set) {
480 impl->profile_selector = std::move(applet); 476 impl->applet_manager.SetAppletFrontendSet(std::move(set));
481} 477}
482 478
483const Frontend::ProfileSelectApplet& System::GetProfileSelector() const { 479void System::SetDefaultAppletFrontendSet() {
484 return *impl->profile_selector; 480 impl->applet_manager.SetDefaultAppletFrontendSet();
485} 481}
486 482
487void System::SetSoftwareKeyboard(std::unique_ptr<Frontend::SoftwareKeyboardApplet> applet) { 483Service::AM::Applets::AppletManager& System::GetAppletManager() {
488 impl->software_keyboard = std::move(applet); 484 return impl->applet_manager;
489} 485}
490 486
491const Frontend::SoftwareKeyboardApplet& System::GetSoftwareKeyboard() const { 487const Service::AM::Applets::AppletManager& System::GetAppletManager() const {
492 return *impl->software_keyboard; 488 return impl->applet_manager;
493} 489}
494 490
495void System::SetContentProvider(std::unique_ptr<FileSys::ContentProviderUnion> provider) { 491void System::SetContentProvider(std::unique_ptr<FileSys::ContentProviderUnion> provider) {
@@ -513,18 +509,6 @@ void System::ClearContentProvider(FileSys::ContentProviderUnionSlot slot) {
513 impl->content_provider->ClearSlot(slot); 509 impl->content_provider->ClearSlot(slot);
514} 510}
515 511
516void System::SetWebBrowser(std::unique_ptr<Frontend::WebBrowserApplet> applet) {
517 impl->web_browser = std::move(applet);
518}
519
520Frontend::WebBrowserApplet& System::GetWebBrowser() {
521 return *impl->web_browser;
522}
523
524const Frontend::WebBrowserApplet& System::GetWebBrowser() const {
525 return *impl->web_browser;
526}
527
528System::ResultStatus System::Init(Frontend::EmuWindow& emu_window) { 512System::ResultStatus System::Init(Frontend::EmuWindow& emu_window) {
529 return impl->Init(*this, emu_window); 513 return impl->Init(*this, emu_window);
530} 514}