Răsfoiți Sursa

AppletOE: Stubbed CreateManagedDisplayLayer to create a new layer in the Default display.

This function is used by libnx to obtain a new layer.
Subv 8 ani în urmă
părinte
comite
10c67bf395
1 a modificat fișierele cu 14 adăugiri și 0 ștergeri
  1. 14 0
      src/core/hle/service/am/applet_oe.cpp

+ 14 - 0
src/core/hle/service/am/applet_oe.cpp

@@ -67,6 +67,7 @@ public:
             {14, &ISelfController::SetRestartMessageEnabled, "SetRestartMessageEnabled"},
             {16, &ISelfController::SetOutOfFocusSuspendingEnabled,
              "SetOutOfFocusSuspendingEnabled"},
+            {40, &ISelfController::CreateManagedDisplayLayer, "CreateManagedDisplayLayer"},
         };
         RegisterHandlers(functions);
     }
@@ -147,6 +148,19 @@ private:
         LOG_WARNING(Service, "(STUBBED) called");
     }
 
+    void CreateManagedDisplayLayer(Kernel::HLERequestContext& ctx) {
+        // TODO(Subv): Find out how AM determines the display to use, for now just create the layer
+        // in the Default display.
+        u64 display_id = nvflinger->OpenDisplay("Default");
+        u64 layer_id = nvflinger->CreateLayer(display_id);
+
+        IPC::RequestBuilder rb{ctx, 4};
+        rb.Push(RESULT_SUCCESS);
+        rb.Push(layer_id);
+
+        LOG_WARNING(Service, "(STUBBED) called");
+    }
+
     std::shared_ptr<NVFlinger::NVFlinger> nvflinger;
 };