mirror of
https://github.com/glfw/glfw.git
synced 2026-09-19 15:25:50 +00:00
Wayland: Use tags to verify proxy ownership
This is in preparation for adding support for libdecor, which creates its own proxies on our display. It will likely also be helpful to some people using native access on Wayland. This is partly based on the implementation of libdecor support in PR #1693 by @ christianrauch.
This commit is contained in:
+9
-1
@@ -507,6 +507,8 @@ int _glfwInitWayland(void)
|
||||
_glfw.wl.keyRepeatTimerfd = -1;
|
||||
_glfw.wl.cursorTimerfd = -1;
|
||||
|
||||
_glfw.wl.tag = glfwGetVersionString();
|
||||
|
||||
_glfw.wl.client.display_flush = (PFN_wl_display_flush)
|
||||
_glfwPlatformGetModuleSymbol(_glfw.wl.client.handle, "wl_display_flush");
|
||||
_glfw.wl.client.display_cancel_read = (PFN_wl_display_cancel_read)
|
||||
@@ -537,6 +539,10 @@ int _glfwInitWayland(void)
|
||||
_glfwPlatformGetModuleSymbol(_glfw.wl.client.handle, "wl_proxy_get_user_data");
|
||||
_glfw.wl.client.proxy_set_user_data = (PFN_wl_proxy_set_user_data)
|
||||
_glfwPlatformGetModuleSymbol(_glfw.wl.client.handle, "wl_proxy_set_user_data");
|
||||
_glfw.wl.client.proxy_get_tag = (PFN_wl_proxy_get_tag)
|
||||
_glfwPlatformGetModuleSymbol(_glfw.wl.client.handle, "wl_proxy_get_tag");
|
||||
_glfw.wl.client.proxy_set_tag = (PFN_wl_proxy_set_tag)
|
||||
_glfwPlatformGetModuleSymbol(_glfw.wl.client.handle, "wl_proxy_set_tag");
|
||||
_glfw.wl.client.proxy_get_version = (PFN_wl_proxy_get_version)
|
||||
_glfwPlatformGetModuleSymbol(_glfw.wl.client.handle, "wl_proxy_get_version");
|
||||
_glfw.wl.client.proxy_marshal_flags = (PFN_wl_proxy_marshal_flags)
|
||||
@@ -556,7 +562,9 @@ int _glfwInitWayland(void)
|
||||
!_glfw.wl.client.proxy_marshal_constructor ||
|
||||
!_glfw.wl.client.proxy_marshal_constructor_versioned ||
|
||||
!_glfw.wl.client.proxy_get_user_data ||
|
||||
!_glfw.wl.client.proxy_set_user_data)
|
||||
!_glfw.wl.client.proxy_set_user_data ||
|
||||
!_glfw.wl.client.proxy_get_tag ||
|
||||
!_glfw.wl.client.proxy_set_tag)
|
||||
{
|
||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||
"Wayland: Failed to load libwayland-client entry point");
|
||||
|
||||
Reference in New Issue
Block a user