diff --git a/src/vulkan/wsi/wsi_common_wayland.c b/src/vulkan/wsi/wsi_common_wayland.c index 7c1efda1f27..938a9cd7c18 100644 --- a/src/vulkan/wsi/wsi_common_wayland.c +++ b/src/vulkan/wsi/wsi_common_wayland.c @@ -1238,8 +1238,9 @@ wsi_wl_swapchain_update_colorspace(struct wsi_wl_swapchain *chain) bool new_color_surface = !surface->color.color_surface; bool needs_color_surface_new = needs_color_surface(display, chain->color.colorspace); - bool needs_color_surface_old = needs_color_surface(display, surface->color.colorspace); - if ((new_color_surface || !needs_color_surface_old) && needs_color_surface_new) { + bool needs_color_surface_old = surface->color.color_surface && + needs_color_surface(display, surface->color.colorspace); + if (!needs_color_surface_old && needs_color_surface_new) { wsi_wl_surface_add_color_refcount(surface); } else if (needs_color_surface_old && !needs_color_surface_new) { wsi_wl_surface_remove_color_refcount(surface);