vi: Fix OpenLayer and CreateStrayLayer.

This commit is contained in:
bunnei 2018-02-11 17:28:07 -05:00
parent b26cdf1fe5
commit 068744db1b

View File

@ -101,8 +101,10 @@ public:
SerializeData(); SerializeData();
Header header{}; Header header{};
header.data_offset = sizeof(Header);
header.data_size = static_cast<u32_le>(write_index - sizeof(Header)); header.data_size = static_cast<u32_le>(write_index - sizeof(Header));
header.data_offset = sizeof(Header);
header.objects_size = 4;
header.objects_offset = sizeof(Header) + header.data_size;
std::memcpy(buffer.data(), &header, sizeof(Header)); std::memcpy(buffer.data(), &header, sizeof(Header));
return buffer; return buffer;
@ -142,11 +144,11 @@ protected:
private: private:
struct Data { struct Data {
u32_le magic = 2; u32_le magic = 2;
u32_le process_id; u32_le process_id = 1;
u32_le id; u32_le id;
INSERT_PADDING_BYTES(0xC); INSERT_PADDING_WORDS(3);
std::array<u8, 8> dispdrv = {'d', 'i', 's', 'p', 'd', 'r', 'v', '\0'}; std::array<u8, 8> dispdrv = {'d', 'i', 's', 'p', 'd', 'r', 'v', '\0'};
INSERT_PADDING_BYTES(8); INSERT_PADDING_WORDS(2);
}; };
static_assert(sizeof(Data) == 0x28, "ParcelData has wrong size"); static_assert(sizeof(Data) == 0x28, "ParcelData has wrong size");
@ -672,7 +674,7 @@ void IApplicationDisplayService::CloseDisplay(Kernel::HLERequestContext& ctx) {
} }
void IApplicationDisplayService::OpenLayer(Kernel::HLERequestContext& ctx) { void IApplicationDisplayService::OpenLayer(Kernel::HLERequestContext& ctx) {
LOG_WARNING(Service_VI, "(STUBBED) called"); LOG_DEBUG(Service_VI, "called");
IPC::RequestParser rp{ctx}; IPC::RequestParser rp{ctx};
auto name_buf = rp.PopRaw<std::array<u8, 0x40>>(); auto name_buf = rp.PopRaw<std::array<u8, 0x40>>();
auto end = std::find(name_buf.begin(), name_buf.end(), '\0'); auto end = std::find(name_buf.begin(), name_buf.end(), '\0');
@ -697,7 +699,7 @@ void IApplicationDisplayService::OpenLayer(Kernel::HLERequestContext& ctx) {
} }
void IApplicationDisplayService::CreateStrayLayer(Kernel::HLERequestContext& ctx) { void IApplicationDisplayService::CreateStrayLayer(Kernel::HLERequestContext& ctx) {
LOG_WARNING(Service, "(STUBBED) called"); LOG_DEBUG(Service_VI, "called");
IPC::RequestParser rp{ctx}; IPC::RequestParser rp{ctx};
u32 flags = rp.Pop<u32>(); u32 flags = rp.Pop<u32>();