Просмотр исходного кода

vi: Fix OpenLayer and CreateStrayLayer.

bunnei 8 лет назад
Родитель
Сommit
068744db1b
1 измененных файлов с 8 добавлено и 6 удалено
  1. 8 6
      src/core/hle/service/vi/vi.cpp

+ 8 - 6
src/core/hle/service/vi/vi.cpp

@@ -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>();