فهرست منبع

psc: rewrite IPmService

Liam 2 سال پیش
والد
کامیت
352297d361
2فایلهای تغییر یافته به همراه9 افزوده شده و 8 حذف شده
  1. 5 7
      src/core/hle/service/psc/pm_service.cpp
  2. 4 1
      src/core/hle/service/psc/pm_service.h

+ 5 - 7
src/core/hle/service/psc/pm_service.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/psc/pm_module.h"
 #include "core/hle/service/psc/pm_service.h"
 
@@ -10,7 +10,7 @@ namespace Service::PSC {
 IPmService::IPmService(Core::System& system_) : ServiceFramework{system_, "psc:m"} {
     // clang-format off
     static const FunctionInfo functions[] = {
-        {0, &IPmService::GetPmModule, "GetPmModule"},
+        {0, D<&IPmService::GetPmModule>, "GetPmModule"},
     };
     // clang-format on
 
@@ -19,12 +19,10 @@ IPmService::IPmService(Core::System& system_) : ServiceFramework{system_, "psc:m
 
 IPmService::~IPmService() = default;
 
-void IPmService::GetPmModule(HLERequestContext& ctx) {
+Result IPmService::GetPmModule(Out<SharedPointer<IPmModule>> out_module) {
     LOG_DEBUG(Service_PSC, "called");
-
-    IPC::ResponseBuilder rb{ctx, 2, 0, 1};
-    rb.Push(ResultSuccess);
-    rb.PushIpcInterface<IPmModule>(system);
+    *out_module = std::make_shared<IPmModule>(system);
+    R_SUCCEED();
 }
 
 } // namespace Service::PSC

+ 4 - 1
src/core/hle/service/psc/pm_service.h

@@ -3,17 +3,20 @@
 
 #pragma once
 
+#include "core/hle/service/cmif_types.h"
 #include "core/hle/service/service.h"
 
 namespace Service::PSC {
 
+class IPmModule;
+
 class IPmService final : public ServiceFramework<IPmService> {
 public:
     explicit IPmService(Core::System& system_);
     ~IPmService() override;
 
 private:
-    void GetPmModule(HLERequestContext& ctx);
+    Result GetPmModule(Out<SharedPointer<IPmModule>> out_module);
 };
 
 } // namespace Service::PSC