Close the libwayland-cursor handle after destroying the cursor theme

Fixes a segfault on glfwTerminate().
This commit is contained in:
Emmanuel Gil Peyrot 2018-01-29 04:55:55 +01:00
parent eb7c9994bf
commit 525ad7bfb8

View File

@ -827,39 +827,38 @@ int _glfwPlatformInit(void)
void _glfwPlatformTerminate(void) void _glfwPlatformTerminate(void)
{ {
_glfwTerminateEGL();
_glfwTerminateJoysticksLinux(); _glfwTerminateJoysticksLinux();
_glfwTerminateEGL();
if (_glfw.wl.egl.handle)
{
_glfw_dlclose(_glfw.wl.egl.handle);
_glfw.wl.egl.handle = NULL;
}
#ifdef HAVE_XKBCOMMON_COMPOSE_H #ifdef HAVE_XKBCOMMON_COMPOSE_H
if (_glfw.wl.xkb.composeState) if (_glfw.wl.xkb.composeState)
xkb_compose_state_unref(_glfw.wl.xkb.composeState); xkb_compose_state_unref(_glfw.wl.xkb.composeState);
#endif #endif
if (_glfw.wl.xkb.keymap) if (_glfw.wl.xkb.keymap)
xkb_keymap_unref(_glfw.wl.xkb.keymap); xkb_keymap_unref(_glfw.wl.xkb.keymap);
if (_glfw.wl.xkb.state) if (_glfw.wl.xkb.state)
xkb_state_unref(_glfw.wl.xkb.state); xkb_state_unref(_glfw.wl.xkb.state);
if (_glfw.wl.xkb.context) if (_glfw.wl.xkb.context)
xkb_context_unref(_glfw.wl.xkb.context); xkb_context_unref(_glfw.wl.xkb.context);
if (_glfw.wl.xkb.handle) if (_glfw.wl.xkb.handle)
{ {
_glfw_dlclose(_glfw.wl.xkb.handle); _glfw_dlclose(_glfw.wl.xkb.handle);
_glfw.wl.xkb.handle = NULL; _glfw.wl.xkb.handle = NULL;
} }
if (_glfw.wl.egl.handle)
{ if (_glfw.wl.cursorTheme)
_glfw_dlclose(_glfw.wl.egl.handle); wl_cursor_theme_destroy(_glfw.wl.cursorTheme);
_glfw.wl.egl.handle = NULL;
}
if (_glfw.wl.cursor.handle) if (_glfw.wl.cursor.handle)
{ {
_glfw_dlclose(_glfw.wl.cursor.handle); _glfw_dlclose(_glfw.wl.cursor.handle);
_glfw.wl.cursor.handle = NULL; _glfw.wl.cursor.handle = NULL;
} }
if (_glfw.wl.cursorTheme)
wl_cursor_theme_destroy(_glfw.wl.cursorTheme);
if (_glfw.wl.cursorSurface) if (_glfw.wl.cursorSurface)
wl_surface_destroy(_glfw.wl.cursorSurface); wl_surface_destroy(_glfw.wl.cursorSurface);
if (_glfw.wl.compositor) if (_glfw.wl.compositor)