From 6b5f56532451631b63a57ca858dabc111b05711b Mon Sep 17 00:00:00 2001
From: Lioncash <mathew1800@gmail.com>
Date: Mon, 26 Oct 2020 19:36:58 -0400
Subject: [PATCH] controller: Pass ControllerParameters by reference in
 ReconfigureControllers()

Prevents unnecessary copies and heap reallocations from occurring.
---
 src/core/frontend/applets/controller.cpp | 2 +-
 src/core/frontend/applets/controller.h   | 4 ++--
 src/yuzu/applets/controller.cpp          | 2 +-
 src/yuzu/applets/controller.h            | 8 +++++---
 4 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/src/core/frontend/applets/controller.cpp b/src/core/frontend/applets/controller.cpp
index c5d65f2d08..5582091f4b 100644
--- a/src/core/frontend/applets/controller.cpp
+++ b/src/core/frontend/applets/controller.cpp
@@ -19,7 +19,7 @@ DefaultControllerApplet::DefaultControllerApplet(Service::SM::ServiceManager& se
 DefaultControllerApplet::~DefaultControllerApplet() = default;
 
 void DefaultControllerApplet::ReconfigureControllers(std::function<void()> callback,
-                                                     ControllerParameters parameters) const {
+                                                     const ControllerParameters& parameters) const {
     LOG_INFO(Service_HID, "called, deducing the best configuration based on the given parameters!");
 
     auto& npad =
diff --git a/src/core/frontend/applets/controller.h b/src/core/frontend/applets/controller.h
index 3e49cdbb93..dff71d8d98 100644
--- a/src/core/frontend/applets/controller.h
+++ b/src/core/frontend/applets/controller.h
@@ -38,7 +38,7 @@ public:
     virtual ~ControllerApplet();
 
     virtual void ReconfigureControllers(std::function<void()> callback,
-                                        ControllerParameters parameters) const = 0;
+                                        const ControllerParameters& parameters) const = 0;
 };
 
 class DefaultControllerApplet final : public ControllerApplet {
@@ -47,7 +47,7 @@ public:
     ~DefaultControllerApplet() override;
 
     void ReconfigureControllers(std::function<void()> callback,
-                                ControllerParameters parameters) const override;
+                                const ControllerParameters& parameters) const override;
 
 private:
     Service::SM::ServiceManager& service_manager;
diff --git a/src/yuzu/applets/controller.cpp b/src/yuzu/applets/controller.cpp
index 2760487a3a..a3f7a0f622 100644
--- a/src/yuzu/applets/controller.cpp
+++ b/src/yuzu/applets/controller.cpp
@@ -589,7 +589,7 @@ QtControllerSelector::QtControllerSelector(GMainWindow& parent) {
 QtControllerSelector::~QtControllerSelector() = default;
 
 void QtControllerSelector::ReconfigureControllers(
-    std::function<void()> callback, Core::Frontend::ControllerParameters parameters) const {
+    std::function<void()> callback, const Core::Frontend::ControllerParameters& parameters) const {
     this->callback = std::move(callback);
     emit MainWindowReconfigureControllers(parameters);
 }
diff --git a/src/yuzu/applets/controller.h b/src/yuzu/applets/controller.h
index 2d6d588c62..729ecc831f 100644
--- a/src/yuzu/applets/controller.h
+++ b/src/yuzu/applets/controller.h
@@ -120,11 +120,13 @@ public:
     explicit QtControllerSelector(GMainWindow& parent);
     ~QtControllerSelector() override;
 
-    void ReconfigureControllers(std::function<void()> callback,
-                                Core::Frontend::ControllerParameters parameters) const override;
+    void ReconfigureControllers(
+        std::function<void()> callback,
+        const Core::Frontend::ControllerParameters& parameters) const override;
 
 signals:
-    void MainWindowReconfigureControllers(Core::Frontend::ControllerParameters parameters) const;
+    void MainWindowReconfigureControllers(
+        const Core::Frontend::ControllerParameters& parameters) const;
 
 private:
     void MainWindowReconfigureFinished();
-- 
GitLab