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

olsc: rewrite ITransferTaskListController

Liam 2 лет назад
Родитель
Сommit
6b956a6951

+ 34 - 35
src/core/hle/service/olsc/transfer_task_list_controller.cpp

@@ -1,7 +1,7 @@
 // SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
 // SPDX-License-Identifier: GPL-2.0-or-later
 
-#include "core/hle/service/ipc_helpers.h"
+#include "core/hle/service/cmif_serialization.h"
 #include "core/hle/service/olsc/native_handle_holder.h"
 #include "core/hle/service/olsc/transfer_task_list_controller.h"
 
@@ -10,34 +10,34 @@ namespace Service::OLSC {
 ITransferTaskListController::ITransferTaskListController(Core::System& system_)
     : ServiceFramework{system_, "ITransferTaskListController"} {
     // clang-format off
-        static const FunctionInfo functions[] = {
-            {0, nullptr, "Unknown0"},
-            {1, nullptr, "Unknown1"},
-            {2, nullptr, "Unknown2"},
-            {3, nullptr, "Unknown3"},
-            {4, nullptr, "Unknown4"},
-            {5, &ITransferTaskListController::GetNativeHandleHolder , "GetNativeHandleHolder"},
-            {6, nullptr, "Unknown6"},
-            {7, nullptr, "Unknown7"},
-            {8, nullptr, "GetRemoteStorageController"},
-            {9, &ITransferTaskListController::GetNativeHandleHolder, "GetNativeHandleHolder2"},
-            {10, nullptr, "Unknown10"},
-            {11, nullptr, "Unknown11"},
-            {12, nullptr, "Unknown12"},
-            {13, nullptr, "Unknown13"},
-            {14, nullptr, "Unknown14"},
-            {15, nullptr, "Unknown15"},
-            {16, nullptr, "Unknown16"},
-            {17, nullptr, "Unknown17"},
-            {18, nullptr, "Unknown18"},
-            {19, nullptr, "Unknown19"},
-            {20, nullptr, "Unknown20"},
-            {21, nullptr, "Unknown21"},
-            {22, nullptr, "Unknown22"},
-            {23, nullptr, "Unknown23"},
-            {24, nullptr, "Unknown24"},
-            {25, nullptr, "Unknown25"},
-        };
+    static const FunctionInfo functions[] = {
+        {0, nullptr, "Unknown0"},
+        {1, nullptr, "Unknown1"},
+        {2, nullptr, "Unknown2"},
+        {3, nullptr, "Unknown3"},
+        {4, nullptr, "Unknown4"},
+        {5, D<&ITransferTaskListController::GetNativeHandleHolder>, "GetNativeHandleHolder"},
+        {6, nullptr, "Unknown6"},
+        {7, nullptr, "Unknown7"},
+        {8, nullptr, "GetRemoteStorageController"},
+        {9, D<&ITransferTaskListController::GetNativeHandleHolder>, "GetNativeHandleHolder2"},
+        {10, nullptr, "Unknown10"},
+        {11, nullptr, "Unknown11"},
+        {12, nullptr, "Unknown12"},
+        {13, nullptr, "Unknown13"},
+        {14, nullptr, "Unknown14"},
+        {15, nullptr, "Unknown15"},
+        {16, nullptr, "Unknown16"},
+        {17, nullptr, "Unknown17"},
+        {18, nullptr, "Unknown18"},
+        {19, nullptr, "Unknown19"},
+        {20, nullptr, "Unknown20"},
+        {21, nullptr, "Unknown21"},
+        {22, nullptr, "Unknown22"},
+        {23, nullptr, "Unknown23"},
+        {24, nullptr, "Unknown24"},
+        {25, nullptr, "Unknown25"},
+    };
     // clang-format on
 
     RegisterHandlers(functions);
@@ -45,12 +45,11 @@ ITransferTaskListController::ITransferTaskListController(Core::System& system_)
 
 ITransferTaskListController::~ITransferTaskListController() = default;
 
-void ITransferTaskListController::GetNativeHandleHolder(HLERequestContext& ctx) {
-    LOG_INFO(Service_OLSC, "called");
-
-    IPC::ResponseBuilder rb{ctx, 2, 0, 1};
-    rb.Push(ResultSuccess);
-    rb.PushIpcInterface<INativeHandleHolder>(system);
+Result ITransferTaskListController::GetNativeHandleHolder(
+    Out<SharedPointer<INativeHandleHolder>> out_holder) {
+    LOG_WARNING(Service_OLSC, "(STUBBED) called");
+    *out_holder = std::make_shared<INativeHandleHolder>(system);
+    R_SUCCEED();
 }
 
 } // namespace Service::OLSC

+ 4 - 1
src/core/hle/service/olsc/transfer_task_list_controller.h

@@ -1,17 +1,20 @@
 // SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
 // SPDX-License-Identifier: GPL-2.0-or-later
 
+#include "core/hle/service/cmif_types.h"
 #include "core/hle/service/service.h"
 
 namespace Service::OLSC {
 
+class INativeHandleHolder;
+
 class ITransferTaskListController final : public ServiceFramework<ITransferTaskListController> {
 public:
     explicit ITransferTaskListController(Core::System& system_);
     ~ITransferTaskListController() override;
 
 private:
-    void GetNativeHandleHolder(HLERequestContext& ctx);
+    Result GetNativeHandleHolder(Out<SharedPointer<INativeHandleHolder>> out_holder);
 };
 
 } // namespace Service::OLSC