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

IPC: Make DuplicateSession return the Domain instead of the Session if the request was made on a Domain interface.

Subv 8 лет назад
Родитель
Сommit
c12c756539
2 измененных файлов с 7 добавлено и 2 удалено
  1. 2 1
      src/core/hle/service/pctl/pctl_a.cpp
  2. 5 1
      src/core/hle/service/sm/controller.cpp

+ 2 - 1
src/core/hle/service/pctl/pctl_a.cpp

@@ -11,8 +11,9 @@ namespace PCTL {
 
 void PCTL_A::GetService(Kernel::HLERequestContext& ctx) {
     LOG_WARNING(Service, "(STUBBED) called");
-    IPC::RequestBuilder rb{ctx, 1};
+    IPC::RequestBuilder rb{ctx, 2};
     rb.Push(RESULT_SUCCESS);
+    // TODO(Subv): This should return an IParentalControlService interface.
 }
 
 PCTL_A::PCTL_A() : ServiceFramework("pctl:a") {

+ 5 - 1
src/core/hle/service/sm/controller.cpp

@@ -23,7 +23,11 @@ void Controller::ConvertSessionToDomain(Kernel::HLERequestContext& ctx) {
 void Controller::DuplicateSession(Kernel::HLERequestContext& ctx) {
     IPC::RequestBuilder rb{ctx, 2, 0, 1};
     rb.Push(RESULT_SUCCESS);
-    rb.PushMoveObjects(ctx.ServerSession());
+    // TODO(Subv): Check if this is correct
+    if (ctx.IsDomain())
+        rb.PushMoveObjects(ctx.Domain());
+    else
+        rb.PushMoveObjects(ctx.ServerSession());
 
     LOG_DEBUG(Service, "called");
 }