mirror of
https://github.com/glfw/glfw.git
synced 2024-11-25 19:42:00 +00:00
Wayland: Fix segfault on termination
A segfault could occur during termination if libdecor was found but no
windows were created between initialization and termination. The wait
for libdecor to finish its initialization was only performed before
window creation, not at termination.
Regression introduced by 9fdc425931
.
This commit is contained in:
parent
d9646631d6
commit
4e8c4901e9
@ -846,10 +846,15 @@ void _glfwTerminateWayland(void)
|
|||||||
_glfwTerminateEGL();
|
_glfwTerminateEGL();
|
||||||
_glfwTerminateOSMesa();
|
_glfwTerminateOSMesa();
|
||||||
|
|
||||||
if (_glfw.wl.libdecor.callback)
|
|
||||||
wl_callback_destroy(_glfw.wl.libdecor.callback);
|
|
||||||
if (_glfw.wl.libdecor.context)
|
if (_glfw.wl.libdecor.context)
|
||||||
|
{
|
||||||
|
// Allow libdecor to finish receiving all its requested globals
|
||||||
|
// and ensure the associated sync callback object is destroyed
|
||||||
|
while (!_glfw.wl.libdecor.ready)
|
||||||
|
_glfwWaitEventsWayland();
|
||||||
|
|
||||||
libdecor_unref(_glfw.wl.libdecor.context);
|
libdecor_unref(_glfw.wl.libdecor.context);
|
||||||
|
}
|
||||||
|
|
||||||
if (_glfw.wl.libdecor.handle)
|
if (_glfw.wl.libdecor.handle)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user