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 bc9e887b6..aa578a589 100644
--- a/src/core/core.cpp
+++ b/src/core/core.cpp
@@ -20,13 +20,18 @@
20#include "core/file_sys/registered_cache.h" 20#include "core/file_sys/registered_cache.h"
21#include "core/file_sys/vfs_concat.h" 21#include "core/file_sys/vfs_concat.h"
22#include "core/file_sys/vfs_real.h" 22#include "core/file_sys/vfs_real.h"
23#include "core/frontend/applets/error.h"
24#include "core/frontend/applets/general_frontend.h"
25#include "core/frontend/applets/profile_select.h"
26#include "core/frontend/applets/software_keyboard.h"
27#include "core/frontend/applets/web_browser.h"
23#include "core/gdbstub/gdbstub.h" 28#include "core/gdbstub/gdbstub.h"
24#include "core/hle/kernel/client_port.h" 29#include "core/hle/kernel/client_port.h"
25#include "core/hle/kernel/kernel.h" 30#include "core/hle/kernel/kernel.h"
26#include "core/hle/kernel/process.h" 31#include "core/hle/kernel/process.h"
27#include "core/hle/kernel/scheduler.h" 32#include "core/hle/kernel/scheduler.h"
28#include "core/hle/kernel/thread.h" 33#include "core/hle/kernel/thread.h"
29#include "core/hle/service/am/applets/software_keyboard.h" 34#include "core/hle/service/am/applets/applets.h"
30#include "core/hle/service/service.h" 35#include "core/hle/service/service.h"
31#include "core/hle/service/sm/sm.h" 36#include "core/hle/service/sm/sm.h"
32#include "core/loader/loader.h" 37#include "core/loader/loader.h"
@@ -113,12 +118,7 @@ struct System::Impl {
113 content_provider = std::make_unique<FileSys::ContentProviderUnion>(); 118 content_provider = std::make_unique<FileSys::ContentProviderUnion>();
114 119
115 /// Create default implementations of applets if one is not provided. 120 /// Create default implementations of applets if one is not provided.
116 if (profile_selector == nullptr) 121 applet_manager.SetDefaultAppletsIfMissing();
117 profile_selector = std::make_unique<Core::Frontend::DefaultProfileSelectApplet>();
118 if (software_keyboard == nullptr)
119 software_keyboard = std::make_unique<Core::Frontend::DefaultSoftwareKeyboardApplet>();
120 if (web_browser == nullptr)
121 web_browser = std::make_unique<Core::Frontend::DefaultWebBrowserApplet>();
122 122
123 auto main_process = Kernel::Process::Create(system, "main"); 123 auto main_process = Kernel::Process::Create(system, "main");
124 kernel.MakeCurrentProcess(main_process.get()); 124 kernel.MakeCurrentProcess(main_process.get());
@@ -224,9 +224,7 @@ struct System::Impl {
224 app_loader.reset(); 224 app_loader.reset();
225 225
226 // Clear all applets 226 // Clear all applets
227 profile_selector.reset(); 227 applet_manager.ClearAll();
228 software_keyboard.reset();
229 web_browser.reset();
230 228
231 LOG_DEBUG(Core, "Shutdown OK"); 229 LOG_DEBUG(Core, "Shutdown OK");
232 } 230 }
@@ -265,9 +263,7 @@ struct System::Impl {
265 std::unique_ptr<FileSys::CheatEngine> cheat_engine; 263 std::unique_ptr<FileSys::CheatEngine> cheat_engine;
266 264
267 /// Frontend applets 265 /// Frontend applets
268 std::unique_ptr<Core::Frontend::ProfileSelectApplet> profile_selector; 266 Service::AM::Applets::AppletManager applet_manager;
269 std::unique_ptr<Core::Frontend::SoftwareKeyboardApplet> software_keyboard;
270 std::unique_ptr<Core::Frontend::WebBrowserApplet> web_browser;
271 267
272 /// Service manager 268 /// Service manager
273 std::shared_ptr<Service::SM::ServiceManager> service_manager; 269 std::shared_ptr<Service::SM::ServiceManager> service_manager;
@@ -477,20 +473,20 @@ std::shared_ptr<FileSys::VfsFilesystem> System::GetFilesystem() const {
477 return impl->virtual_filesystem; 473 return impl->virtual_filesystem;
478} 474}
479 475
480void System::SetProfileSelector(std::unique_ptr<Frontend::ProfileSelectApplet> applet) { 476void System::SetAppletFrontendSet(Service::AM::Applets::AppletFrontendSet&& set) {
481 impl->profile_selector = std::move(applet); 477 impl->applet_manager.SetAppletFrontendSet(std::move(set));
482} 478}
483 479
484const Frontend::ProfileSelectApplet& System::GetProfileSelector() const { 480void System::SetDefaultAppletFrontendSet() {
485 return *impl->profile_selector; 481 impl->applet_manager.SetDefaultAppletFrontendSet();
486} 482}
487 483
488void System::SetSoftwareKeyboard(std::unique_ptr<Frontend::SoftwareKeyboardApplet> applet) { 484Service::AM::Applets::AppletManager& System::GetAppletManager() {
489 impl->software_keyboard = std::move(applet); 485 return impl->applet_manager;
490} 486}
491 487
492const Frontend::SoftwareKeyboardApplet& System::GetSoftwareKeyboard() const { 488const Service::AM::Applets::AppletManager& System::GetAppletManager() const {
493 return *impl->software_keyboard; 489 return impl->applet_manager;
494} 490}
495 491
496void System::SetContentProvider(std::unique_ptr<FileSys::ContentProviderUnion> provider) { 492void System::SetContentProvider(std::unique_ptr<FileSys::ContentProviderUnion> provider) {
@@ -514,18 +510,6 @@ void System::ClearContentProvider(FileSys::ContentProviderUnionSlot slot) {
514 impl->content_provider->ClearSlot(slot); 510 impl->content_provider->ClearSlot(slot);
515} 511}
516 512
517void System::SetWebBrowser(std::unique_ptr<Frontend::WebBrowserApplet> applet) {
518 impl->web_browser = std::move(applet);
519}
520
521Frontend::WebBrowserApplet& System::GetWebBrowser() {
522 return *impl->web_browser;
523}
524
525const Frontend::WebBrowserApplet& System::GetWebBrowser() const {
526 return *impl->web_browser;
527}
528
529System::ResultStatus System::Init(Frontend::EmuWindow& emu_window) { 513System::ResultStatus System::Init(Frontend::EmuWindow& emu_window) {
530 return impl->Init(*this, emu_window); 514 return impl->Init(*this, emu_window);
531} 515}