diff options
| -rw-r--r-- | src/core/hle/service/vi/vi.cpp | 20 | 
1 files changed, 19 insertions, 1 deletions
| diff --git a/src/core/hle/service/vi/vi.cpp b/src/core/hle/service/vi/vi.cpp index 2ee60f1ec..bbc02abcc 100644 --- a/src/core/hle/service/vi/vi.cpp +++ b/src/core/hle/service/vi/vi.cpp @@ -612,7 +612,7 @@ public:              {3000, nullptr, "ListDisplayModes"},              {3001, nullptr, "ListDisplayRgbRanges"},              {3002, nullptr, "ListDisplayContentTypes"}, -            {3200, nullptr, "GetDisplayMode"}, +            {3200, &ISystemDisplayService::GetDisplayMode, "GetDisplayMode"},              {3201, nullptr, "SetDisplayMode"},              {3202, nullptr, "GetDisplayUnderscan"},              {3203, nullptr, "SetDisplayUnderscan"}, @@ -663,6 +663,24 @@ private:          LOG_WARNING(Service_VI, "(STUBBED) called, layer_id=0x{:08X}, visibility={}", layer_id,                      visibility);      } + +    void GetDisplayMode(Kernel::HLERequestContext& ctx) { +        IPC::ResponseBuilder rb{ctx, 6}; +        rb.Push(RESULT_SUCCESS); + +        if (Settings::values.use_docked_mode) { +            rb.Push(static_cast<u32>(Service::VI::DisplayResolution::DockedWidth)); +            rb.Push(static_cast<u32>(Service::VI::DisplayResolution::DockedHeight)); +        } else { +            rb.Push(static_cast<u32>(Service::VI::DisplayResolution::UndockedWidth)); +            rb.Push(static_cast<u32>(Service::VI::DisplayResolution::UndockedHeight)); +        } + +        rb.PushRaw<float>(60.0f); +        rb.Push<u32>(0); + +        LOG_DEBUG(Service_VI, "called"); +    }  };  class IManagerDisplayService final : public ServiceFramework<IManagerDisplayService> { | 
