vulkan/wsi/wayland: Stop caching Wayland displays
authorJason Ekstrand <jason.ekstrand@intel.com>
Tue, 26 Sep 2017 15:30:22 +0000 (08:30 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Wed, 27 Sep 2017 15:32:36 +0000 (08:32 -0700)
commit43691024982b3ea734ad001bd53cc7b563ccce5a
treeff2f9bb9d857975598b081a9ab5da6a099a22149
parent77181d95804b23210275c5b898e4d3b65f5a52a8
vulkan/wsi/wayland: Stop caching Wayland displays

We originally implemented caching to avoid unneeded round-trips to the
compositor when querying surface capabilities etc. to set up the
swapchain.  Unfortunately, this doesn't work if vkDestroyInstance is
called after the Wayland connection has been dropped.  In this case, we
end up trying to clean up already destroyed wl_proxy objects which leads
to crashes.  In particular most of dEQP-VK.wsi.wayland is crashing
thanks to this problem.

This commit gets rid of the cache and simply embeds the wsi_wl_display
struct in the swapchain.  While we're at it, we can get rid of the
wl_event_queue that we were storing in the swapchain because we can just
use the one in the embedded wsi_wl_display.

Reviewed-by: Daniel Stone <daniels@collabora.com>
Bugzilla: https://bugs.freedesktop.org/102578
Cc: mesa-stable@lists.freedesktop.org
src/vulkan/wsi/wsi_common_wayland.c