diff options
author | David <25727384+ogniK5377@users.noreply.github.com> | 2018-05-01 22:28:36 +0200 |
---|---|---|
committer | bunnei <bunneidev@gmail.com> | 2018-05-01 22:28:36 +0200 |
commit | ff2f0d980ae613e64a9bc46ec4793b1a033426b3 (patch) | |
tree | 337e684389231717c18c7bdd6c0bef85c294f24e /src/core/hle/service/ns/pl_u.cpp | |
parent | Merge pull request #425 from lioncash/namespace (diff) | |
download | yuzu-ff2f0d980ae613e64a9bc46ec4793b1a033426b3.tar yuzu-ff2f0d980ae613e64a9bc46ec4793b1a033426b3.tar.gz yuzu-ff2f0d980ae613e64a9bc46ec4793b1a033426b3.tar.bz2 yuzu-ff2f0d980ae613e64a9bc46ec4793b1a033426b3.tar.lz yuzu-ff2f0d980ae613e64a9bc46ec4793b1a033426b3.tar.xz yuzu-ff2f0d980ae613e64a9bc46ec4793b1a033426b3.tar.zst yuzu-ff2f0d980ae613e64a9bc46ec4793b1a033426b3.zip |
Diffstat (limited to 'src/core/hle/service/ns/pl_u.cpp')
-rw-r--r-- | src/core/hle/service/ns/pl_u.cpp | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/src/core/hle/service/ns/pl_u.cpp b/src/core/hle/service/ns/pl_u.cpp index c2a647e89..636af9a1e 100644 --- a/src/core/hle/service/ns/pl_u.cpp +++ b/src/core/hle/service/ns/pl_u.cpp @@ -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,29 @@ void PL_U::GetSharedMemoryNativeHandle(Kernel::HLERequestContext& ctx) { rb.PushCopyObjects(shared_font_mem); } +void PL_U::GetSharedFontInOrderOfPriority(Kernel::HLERequestContext& ctx) { + IPC::RequestParser rp{ctx}; + const u64 language_code{rp.Pop<u64>()}; // TODO(ogniK): Find out what this is used for + NGLOG_DEBUG(Service_NS, "called, language_code=%lx", language_code); + IPC::ResponseBuilder rb{ctx, 4}; + std::vector<u32> font_codes; + std::vector<u32> font_offsets; + std::vector<u32> font_sizes; + + // TODO(ogniK): Have actual priority order + for (size_t i = 0; i < SHARED_FONT_REGIONS.size(); i++) { + font_codes.push_back(static_cast<u32>(i)); + font_offsets.push_back(SHARED_FONT_REGIONS[i].offset); + font_sizes.push_back(SHARED_FONT_REGIONS[i].size); + } + + ctx.WriteBuffer(font_codes.data(), font_codes.size(), 0); + ctx.WriteBuffer(font_offsets.data(), font_offsets.size(), 1); + ctx.WriteBuffer(font_sizes.data(), font_sizes.size(), 2); + + rb.Push(RESULT_SUCCESS); + rb.Push<u8>(static_cast<u8>(LoadState::Done)); // Fonts Loaded + rb.Push<u32>(static_cast<u32>(font_codes.size())); +} + } // namespace Service::NS |