Browse Source
Merge pull request #4726 from lioncash/applet
frontend/controller: Eliminate dependency on the global system instance
pull/15/merge
David
5 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with
15 additions and
6 deletions
-
src/core/core.h
-
src/core/frontend/applets/controller.cpp
-
src/core/frontend/applets/controller.h
-
src/core/hle/service/am/applets/applets.cpp
|
|
|
@ -120,7 +120,7 @@ public: |
|
|
|
* Gets the instance of the System singleton class. |
|
|
|
* @returns Reference to the instance of the System singleton class. |
|
|
|
*/ |
|
|
|
static System& GetInstance() { |
|
|
|
[[deprecated("Use of the global system instance is deprecated")]] static System& GetInstance() { |
|
|
|
return s_instance; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -4,7 +4,6 @@ |
|
|
|
|
|
|
|
#include "common/assert.h"
|
|
|
|
#include "common/logging/log.h"
|
|
|
|
#include "core/core.h"
|
|
|
|
#include "core/frontend/applets/controller.h"
|
|
|
|
#include "core/hle/service/hid/controllers/npad.h"
|
|
|
|
#include "core/hle/service/hid/hid.h"
|
|
|
|
@ -14,6 +13,9 @@ namespace Core::Frontend { |
|
|
|
|
|
|
|
ControllerApplet::~ControllerApplet() = default; |
|
|
|
|
|
|
|
DefaultControllerApplet::DefaultControllerApplet(Service::SM::ServiceManager& service_manager_) |
|
|
|
: service_manager{service_manager_} {} |
|
|
|
|
|
|
|
DefaultControllerApplet::~DefaultControllerApplet() = default; |
|
|
|
|
|
|
|
void DefaultControllerApplet::ReconfigureControllers(std::function<void()> callback, |
|
|
|
@ -21,9 +23,7 @@ void DefaultControllerApplet::ReconfigureControllers(std::function<void()> callb |
|
|
|
LOG_INFO(Service_HID, "called, deducing the best configuration based on the given parameters!"); |
|
|
|
|
|
|
|
auto& npad = |
|
|
|
Core::System::GetInstance() |
|
|
|
.ServiceManager() |
|
|
|
.GetService<Service::HID::Hid>("hid") |
|
|
|
service_manager.GetService<Service::HID::Hid>("hid") |
|
|
|
->GetAppletResource() |
|
|
|
->GetController<Service::HID::Controller_NPad>(Service::HID::HidController::NPad); |
|
|
|
|
|
|
|
|
|
|
|
@ -8,6 +8,10 @@ |
|
|
|
|
|
|
|
#include "common/common_types.h" |
|
|
|
|
|
|
|
namespace Service::SM { |
|
|
|
class ServiceManager; |
|
|
|
} |
|
|
|
|
|
|
|
namespace Core::Frontend { |
|
|
|
|
|
|
|
using BorderColor = std::array<u8, 4>; |
|
|
|
@ -39,10 +43,14 @@ public: |
|
|
|
|
|
|
|
class DefaultControllerApplet final : public ControllerApplet { |
|
|
|
public: |
|
|
|
explicit DefaultControllerApplet(Service::SM::ServiceManager& service_manager_); |
|
|
|
~DefaultControllerApplet() override; |
|
|
|
|
|
|
|
void ReconfigureControllers(std::function<void()> callback, |
|
|
|
ControllerParameters parameters) const override; |
|
|
|
|
|
|
|
private: |
|
|
|
Service::SM::ServiceManager& service_manager; |
|
|
|
}; |
|
|
|
|
|
|
|
} // namespace Core::Frontend |
|
|
|
@ -206,7 +206,8 @@ void AppletManager::SetDefaultAppletFrontendSet() { |
|
|
|
|
|
|
|
void AppletManager::SetDefaultAppletsIfMissing() { |
|
|
|
if (frontend.controller == nullptr) { |
|
|
|
frontend.controller = std::make_unique<Core::Frontend::DefaultControllerApplet>(); |
|
|
|
frontend.controller = |
|
|
|
std::make_unique<Core::Frontend::DefaultControllerApplet>(system.ServiceManager()); |
|
|
|
} |
|
|
|
|
|
|
|
if (frontend.e_commerce == nullptr) { |
|
|
|
|