mirror of
https://github.com/yuzu-emu/yuzu.git
synced 2024-07-04 23:31:19 +01:00
Service/VI: stub SetLayerVisibility, fix GetDisplayResolution output
both SetLayerVisibility() functions used in Lego games, GetDisplayResolution() fixed according switchbrew.org
This commit is contained in:
parent
2b082e2710
commit
5922f2c46d
1 changed files with 27 additions and 7 deletions
|
@ -587,7 +587,7 @@ public:
|
||||||
{2203, nullptr, "SetLayerSize"},
|
{2203, nullptr, "SetLayerSize"},
|
||||||
{2204, nullptr, "GetLayerZ"},
|
{2204, nullptr, "GetLayerZ"},
|
||||||
{2205, &ISystemDisplayService::SetLayerZ, "SetLayerZ"},
|
{2205, &ISystemDisplayService::SetLayerZ, "SetLayerZ"},
|
||||||
{2207, nullptr, "SetLayerVisibility"},
|
{2207, &ISystemDisplayService::SetLayerVisibility, "SetLayerVisibility"},
|
||||||
{2209, nullptr, "SetLayerAlpha"},
|
{2209, nullptr, "SetLayerAlpha"},
|
||||||
{2312, nullptr, "CreateStrayLayer"},
|
{2312, nullptr, "CreateStrayLayer"},
|
||||||
{2400, nullptr, "OpenIndirectLayer"},
|
{2400, nullptr, "OpenIndirectLayer"},
|
||||||
|
@ -637,6 +637,16 @@ private:
|
||||||
IPC::ResponseBuilder rb = rp.MakeBuilder(2, 0, 0);
|
IPC::ResponseBuilder rb = rp.MakeBuilder(2, 0, 0);
|
||||||
rb.Push(RESULT_SUCCESS);
|
rb.Push(RESULT_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SetLayerVisibility(Kernel::HLERequestContext& ctx) {
|
||||||
|
IPC::RequestParser rp{ctx};
|
||||||
|
u64 layer_id = rp.Pop<u64>();
|
||||||
|
bool visibility = rp.Pop<bool>();
|
||||||
|
IPC::ResponseBuilder rb = rp.MakeBuilder(2, 0, 0);
|
||||||
|
rb.Push(RESULT_SUCCESS);
|
||||||
|
LOG_WARNING(Service_VI, "(STUBBED) called, layer_id=0x%x, visibility=%u", layer_id,
|
||||||
|
visibility);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class IManagerDisplayService final : public ServiceFramework<IManagerDisplayService> {
|
class IManagerDisplayService final : public ServiceFramework<IManagerDisplayService> {
|
||||||
|
@ -668,7 +678,7 @@ public:
|
||||||
{4206, nullptr, "SetDefaultDisplay"},
|
{4206, nullptr, "SetDefaultDisplay"},
|
||||||
{6000, &IManagerDisplayService::AddToLayerStack, "AddToLayerStack"},
|
{6000, &IManagerDisplayService::AddToLayerStack, "AddToLayerStack"},
|
||||||
{6001, nullptr, "RemoveFromLayerStack"},
|
{6001, nullptr, "RemoveFromLayerStack"},
|
||||||
{6002, nullptr, "SetLayerVisibility"},
|
{6002, &IManagerDisplayService::SetLayerVisibility, "SetLayerVisibility"},
|
||||||
{6003, nullptr, "SetLayerConfig"},
|
{6003, nullptr, "SetLayerConfig"},
|
||||||
{6004, nullptr, "AttachLayerPresentationTracer"},
|
{6004, nullptr, "AttachLayerPresentationTracer"},
|
||||||
{6005, nullptr, "DetachLayerPresentationTracer"},
|
{6005, nullptr, "DetachLayerPresentationTracer"},
|
||||||
|
@ -750,6 +760,16 @@ private:
|
||||||
rb.Push(RESULT_SUCCESS);
|
rb.Push(RESULT_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SetLayerVisibility(Kernel::HLERequestContext& ctx) {
|
||||||
|
IPC::RequestParser rp{ctx};
|
||||||
|
u64 layer_id = rp.Pop<u64>();
|
||||||
|
bool visibility = rp.Pop<bool>();
|
||||||
|
IPC::ResponseBuilder rb = rp.MakeBuilder(2, 0, 0);
|
||||||
|
rb.Push(RESULT_SUCCESS);
|
||||||
|
LOG_WARNING(Service_VI, "(STUBBED) called, layer_id=0x%x, visibility=%u", layer_id,
|
||||||
|
visibility);
|
||||||
|
}
|
||||||
|
|
||||||
std::shared_ptr<NVFlinger::NVFlinger> nv_flinger;
|
std::shared_ptr<NVFlinger::NVFlinger> nv_flinger;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -820,15 +840,15 @@ private:
|
||||||
IPC::RequestParser rp{ctx};
|
IPC::RequestParser rp{ctx};
|
||||||
u64 display_id = rp.Pop<u64>();
|
u64 display_id = rp.Pop<u64>();
|
||||||
|
|
||||||
IPC::ResponseBuilder rb = rp.MakeBuilder(4, 0, 0);
|
IPC::ResponseBuilder rb = rp.MakeBuilder(6, 0, 0);
|
||||||
rb.Push(RESULT_SUCCESS);
|
rb.Push(RESULT_SUCCESS);
|
||||||
|
|
||||||
if (Settings::values.use_docked_mode) {
|
if (Settings::values.use_docked_mode) {
|
||||||
rb.Push(static_cast<u32>(DisplayResolution::DockedWidth));
|
rb.Push(static_cast<u64>(DisplayResolution::DockedWidth));
|
||||||
rb.Push(static_cast<u32>(DisplayResolution::DockedHeight));
|
rb.Push(static_cast<u64>(DisplayResolution::DockedHeight));
|
||||||
} else {
|
} else {
|
||||||
rb.Push(static_cast<u32>(DisplayResolution::UndockedWidth));
|
rb.Push(static_cast<u64>(DisplayResolution::UndockedWidth));
|
||||||
rb.Push(static_cast<u32>(DisplayResolution::UndockedHeight));
|
rb.Push(static_cast<u64>(DisplayResolution::UndockedHeight));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue