mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-11-03 16:39:01 -06: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:
		@@ -587,7 +587,7 @@ public:
 | 
			
		||||
            {2203, nullptr, "SetLayerSize"},
 | 
			
		||||
            {2204, nullptr, "GetLayerZ"},
 | 
			
		||||
            {2205, &ISystemDisplayService::SetLayerZ, "SetLayerZ"},
 | 
			
		||||
            {2207, nullptr, "SetLayerVisibility"},
 | 
			
		||||
            {2207, &ISystemDisplayService::SetLayerVisibility, "SetLayerVisibility"},
 | 
			
		||||
            {2209, nullptr, "SetLayerAlpha"},
 | 
			
		||||
            {2312, nullptr, "CreateStrayLayer"},
 | 
			
		||||
            {2400, nullptr, "OpenIndirectLayer"},
 | 
			
		||||
@@ -637,6 +637,16 @@ private:
 | 
			
		||||
        IPC::ResponseBuilder rb = rp.MakeBuilder(2, 0, 0);
 | 
			
		||||
        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> {
 | 
			
		||||
@@ -668,7 +678,7 @@ public:
 | 
			
		||||
            {4206, nullptr, "SetDefaultDisplay"},
 | 
			
		||||
            {6000, &IManagerDisplayService::AddToLayerStack, "AddToLayerStack"},
 | 
			
		||||
            {6001, nullptr, "RemoveFromLayerStack"},
 | 
			
		||||
            {6002, nullptr, "SetLayerVisibility"},
 | 
			
		||||
            {6002, &IManagerDisplayService::SetLayerVisibility, "SetLayerVisibility"},
 | 
			
		||||
            {6003, nullptr, "SetLayerConfig"},
 | 
			
		||||
            {6004, nullptr, "AttachLayerPresentationTracer"},
 | 
			
		||||
            {6005, nullptr, "DetachLayerPresentationTracer"},
 | 
			
		||||
@@ -750,6 +760,16 @@ private:
 | 
			
		||||
        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;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@@ -820,15 +840,15 @@ private:
 | 
			
		||||
        IPC::RequestParser rp{ctx};
 | 
			
		||||
        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);
 | 
			
		||||
 | 
			
		||||
        if (Settings::values.use_docked_mode) {
 | 
			
		||||
            rb.Push(static_cast<u32>(DisplayResolution::DockedWidth));
 | 
			
		||||
            rb.Push(static_cast<u32>(DisplayResolution::DockedHeight));
 | 
			
		||||
            rb.Push(static_cast<u64>(DisplayResolution::DockedWidth));
 | 
			
		||||
            rb.Push(static_cast<u64>(DisplayResolution::DockedHeight));
 | 
			
		||||
        } else {
 | 
			
		||||
            rb.Push(static_cast<u32>(DisplayResolution::UndockedWidth));
 | 
			
		||||
            rb.Push(static_cast<u32>(DisplayResolution::UndockedHeight));
 | 
			
		||||
            rb.Push(static_cast<u64>(DisplayResolution::UndockedWidth));
 | 
			
		||||
            rb.Push(static_cast<u64>(DisplayResolution::UndockedHeight));
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user