Browse Source

emulated_controller: Use std::move() in GetMappedDevices()

Avoids churning allocations in a loop.
Lioncash 3 năm trước cách đây
mục cha
commit
87543b9dea

+ 6 - 6
src/core/hid/emulated_controller.cpp

@@ -432,7 +432,7 @@ std::vector<Common::ParamPackage> EmulatedController::GetMappedDevices(
             continue;
             continue;
         }
         }
         const auto devices_it = std::find_if(
         const auto devices_it = std::find_if(
-            devices.begin(), devices.end(), [param](const Common::ParamPackage param_) {
+            devices.begin(), devices.end(), [&param](const Common::ParamPackage& param_) {
                 return param.Get("engine", "") == param_.Get("engine", "") &&
                 return param.Get("engine", "") == param_.Get("engine", "") &&
                        param.Get("guid", "") == param_.Get("guid", "") &&
                        param.Get("guid", "") == param_.Get("guid", "") &&
                        param.Get("port", 0) == param_.Get("port", 0) &&
                        param.Get("port", 0) == param_.Get("port", 0) &&
@@ -441,12 +441,12 @@ std::vector<Common::ParamPackage> EmulatedController::GetMappedDevices(
         if (devices_it != devices.end()) {
         if (devices_it != devices.end()) {
             continue;
             continue;
         }
         }
-        Common::ParamPackage device{};
+
+        auto& device = devices.emplace_back();
         device.Set("engine", param.Get("engine", ""));
         device.Set("engine", param.Get("engine", ""));
         device.Set("guid", param.Get("guid", ""));
         device.Set("guid", param.Get("guid", ""));
         device.Set("port", param.Get("port", 0));
         device.Set("port", param.Get("port", 0));
         device.Set("pad", param.Get("pad", 0));
         device.Set("pad", param.Get("pad", 0));
-        devices.push_back(device);
     }
     }
 
 
     for (const auto& param : stick_params) {
     for (const auto& param : stick_params) {
@@ -457,7 +457,7 @@ std::vector<Common::ParamPackage> EmulatedController::GetMappedDevices(
             continue;
             continue;
         }
         }
         const auto devices_it = std::find_if(
         const auto devices_it = std::find_if(
-            devices.begin(), devices.end(), [param](const Common::ParamPackage param_) {
+            devices.begin(), devices.end(), [&param](const Common::ParamPackage& param_) {
                 return param.Get("engine", "") == param_.Get("engine", "") &&
                 return param.Get("engine", "") == param_.Get("engine", "") &&
                        param.Get("guid", "") == param_.Get("guid", "") &&
                        param.Get("guid", "") == param_.Get("guid", "") &&
                        param.Get("port", 0) == param_.Get("port", 0) &&
                        param.Get("port", 0) == param_.Get("port", 0) &&
@@ -466,12 +466,12 @@ std::vector<Common::ParamPackage> EmulatedController::GetMappedDevices(
         if (devices_it != devices.end()) {
         if (devices_it != devices.end()) {
             continue;
             continue;
         }
         }
-        Common::ParamPackage device{};
+
+        auto& device = devices.emplace_back();
         device.Set("engine", param.Get("engine", ""));
         device.Set("engine", param.Get("engine", ""));
         device.Set("guid", param.Get("guid", ""));
         device.Set("guid", param.Get("guid", ""));
         device.Set("port", param.Get("port", 0));
         device.Set("port", param.Get("port", 0));
         device.Set("pad", param.Get("pad", 0));
         device.Set("pad", param.Get("pad", 0));
-        devices.push_back(device);
     }
     }
     return devices;
     return devices;
 }
 }