Fix simple-egl tear-down order to prevent a crash on exit time
wl_egl_window_destory() destroys the window handle that dri2_destroy_surface() later uses when eglTerminate() is called. Reordering the tear down order prevents such case from occuring.
This commit is contained in:
committed by
Kristian Høgsberg
parent
93c76fe4b1
commit
952e6df8fc
@@ -146,11 +146,6 @@ init_egl(struct display *display, int opaque)
|
|||||||
static void
|
static void
|
||||||
fini_egl(struct display *display)
|
fini_egl(struct display *display)
|
||||||
{
|
{
|
||||||
/* Required, otherwise segfault in egl_dri2.c: dri2_make_current()
|
|
||||||
* on eglReleaseThread(). */
|
|
||||||
eglMakeCurrent(display->egl.dpy, EGL_NO_SURFACE, EGL_NO_SURFACE,
|
|
||||||
EGL_NO_CONTEXT);
|
|
||||||
|
|
||||||
eglTerminate(display->egl.dpy);
|
eglTerminate(display->egl.dpy);
|
||||||
eglReleaseThread();
|
eglReleaseThread();
|
||||||
}
|
}
|
||||||
@@ -330,6 +325,12 @@ create_surface(struct window *window)
|
|||||||
static void
|
static void
|
||||||
destroy_surface(struct window *window)
|
destroy_surface(struct window *window)
|
||||||
{
|
{
|
||||||
|
/* Required, otherwise segfault in egl_dri2.c: dri2_make_current()
|
||||||
|
* on eglReleaseThread(). */
|
||||||
|
eglMakeCurrent(window->display->egl.dpy, EGL_NO_SURFACE, EGL_NO_SURFACE,
|
||||||
|
EGL_NO_CONTEXT);
|
||||||
|
|
||||||
|
eglDestroySurface(window->display->egl.dpy, window->egl_surface);
|
||||||
wl_egl_window_destroy(window->native);
|
wl_egl_window_destroy(window->native);
|
||||||
|
|
||||||
wl_shell_surface_destroy(window->shell_surface);
|
wl_shell_surface_destroy(window->shell_surface);
|
||||||
|
|||||||
Reference in New Issue
Block a user