Просмотр исходного кода

hle: ipc_helpers: Add methods for copy/move references.

bunnei 5 лет назад
Родитель
Сommit
eba3bb9d21
1 измененных файлов с 24 добавлено и 2 удалено
  1. 24 2
      src/core/hle/ipc_helpers.h

+ 24 - 2
src/core/hle/ipc_helpers.h

@@ -217,9 +217,15 @@ public:
     template <typename... O>
     void PushMoveObjects(O*... pointers);
 
+    template <typename... O>
+    void PushMoveObjects(O&... pointers);
+
     template <typename... O>
     void PushCopyObjects(O*... pointers);
 
+    template <typename... O>
+    void PushCopyObjects(O&... pointers);
+
 private:
     u32 normal_params_size{};
     u32 num_handles_to_copy{};
@@ -304,7 +310,15 @@ template <typename... O>
 inline void ResponseBuilder::PushCopyObjects(O*... pointers) {
     auto objects = {pointers...};
     for (auto& object : objects) {
-        context->AddCopyObject(std::move(object));
+        context->AddCopyObject(object);
+    }
+}
+
+template <typename... O>
+inline void ResponseBuilder::PushCopyObjects(O&... pointers) {
+    auto objects = {&pointers...};
+    for (auto& object : objects) {
+        context->AddCopyObject(object);
     }
 }
 
@@ -312,7 +326,15 @@ template <typename... O>
 inline void ResponseBuilder::PushMoveObjects(O*... pointers) {
     auto objects = {pointers...};
     for (auto& object : objects) {
-        context->AddMoveObject(std::move(object));
+        context->AddMoveObject(object);
+    }
+}
+
+template <typename... O>
+inline void ResponseBuilder::PushMoveObjects(O&... pointers) {
+    auto objects = {&pointers...};
+    for (auto& object : objects) {
+        context->AddMoveObject(object);
     }
 }