From 9df935591c7ef92d5466e26be89bb1f47ebf96e6 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Sun, 11 Jun 2023 03:09:09 +0200 Subject: [PATCH] vulkan: Handle new nodes being added correctly When nodes are added, nothing was warning us that we need to bump N_RENDER_NODES. Make sure that that's no longer necessary by refactoring the code to remove the define. --- gsk/vulkan/gskvulkanrenderpass.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/gsk/vulkan/gskvulkanrenderpass.c b/gsk/vulkan/gskvulkanrenderpass.c index c98c368973..f6e9ec27be 100644 --- a/gsk/vulkan/gskvulkanrenderpass.c +++ b/gsk/vulkan/gskvulkanrenderpass.c @@ -1123,10 +1123,8 @@ typedef gboolean (*GskVulkanRenderPassNodeFunc) (GskVulkanRenderPass *self const GskVulkanParseState *state, GskRenderNode *node); -#define N_RENDER_NODES (GSK_MASK_NODE + 1) - /* TODO: implement remaining nodes */ -static const GskVulkanRenderPassNodeFunc nodes_vtable[N_RENDER_NODES] = { +static const GskVulkanRenderPassNodeFunc nodes_vtable[] = { [GSK_NOT_A_RENDER_NODE] = gsk_vulkan_render_pass_implode, [GSK_CONTAINER_NODE] = gsk_vulkan_render_pass_add_container_node, [GSK_CAIRO_NODE] = gsk_vulkan_render_pass_add_cairo_node, @@ -1173,7 +1171,10 @@ gsk_vulkan_render_pass_add_node (GskVulkanRenderPass *self, return; node_type = gsk_render_node_get_node_type (node); - node_func = nodes_vtable[node_type]; + if (node_type < G_N_ELEMENTS (nodes_vtable)) + node_func = nodes_vtable[node_type]; + else + node_func = NULL; if (node_func) {