GetSharedFontInOrderOfPriority

This commit is contained in:
David Marcec
2018-04-22 18:37:46 -07:00
parent ebb8e06df0
commit df23548e58
2 changed files with 32 additions and 1 deletions

View File

@@ -37,7 +37,7 @@ PL_U::PL_U() : ServiceFramework("pl:u") {
{2, &PL_U::GetSize, "GetSize"},
{3, &PL_U::GetSharedMemoryAddressOffset, "GetSharedMemoryAddressOffset"},
{4, &PL_U::GetSharedMemoryNativeHandle, "GetSharedMemoryNativeHandle"},
{5, nullptr, "GetSharedFontInOrderOfPriority"},
{5, &PL_U::GetSharedFontInOrderOfPriority, "GetSharedFontInOrderOfPriority"},
};
RegisterHandlers(functions);
@@ -116,4 +116,34 @@ void PL_U::GetSharedMemoryNativeHandle(Kernel::HLERequestContext& ctx) {
rb.PushCopyObjects(shared_font_mem);
}
void PL_U::GetSharedFontInOrderOfPriority(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp{ctx};
const u32 language_code{rp.Pop<u32>()};
LOG_DEBUG(Service_NS, "called, language_code=%d", language_code);
IPC::ResponseBuilder rb{ctx, 4};
rb.Push(RESULT_SUCCESS);
rb.Push<u8>(static_cast<u8>(LoadState::Done)); // Fonts Loaded
rb.Push<u32>(static_cast<u32>(SHARED_FONT_REGIONS.size()));
std::vector<u32> languages;
std::vector<u32> offsets;
std::vector<u32> sizes;
Memory::Write32(ctx.BufferDescriptorB()[0].Address(), language_code);
Memory::Write32(ctx.BufferDescriptorB()[1].Address(),
SHARED_FONT_REGIONS[language_code].offset);
Memory::Write32(ctx.BufferDescriptorB()[2].Address(), SHARED_FONT_REGIONS[language_code].size);
for (int i = 0, offset = 4; i < SHARED_FONT_REGIONS.size(); i++) {
if (i == language_code)
continue;
Memory::Write32(ctx.BufferDescriptorB()[0].Address() + offset, language_code);
Memory::Write32(ctx.BufferDescriptorB()[1].Address() + offset,
SHARED_FONT_REGIONS[language_code].offset);
Memory::Write32(ctx.BufferDescriptorB()[2].Address() + offset,
SHARED_FONT_REGIONS[language_code].size);
offset += 4;
}
}
} // namespace Service::NS

View File

@@ -21,6 +21,7 @@ private:
void GetSize(Kernel::HLERequestContext& ctx);
void GetSharedMemoryAddressOffset(Kernel::HLERequestContext& ctx);
void GetSharedMemoryNativeHandle(Kernel::HLERequestContext& ctx);
void GetSharedFontInOrderOfPriority(Kernel::HLERequestContext& ctx);
/// Handle to shared memory region designated for a shared font
Kernel::SharedPtr<Kernel::SharedMemory> shared_font_mem;