[PATCH] Fixed simple-egl tear-down order to prevent a crash on exit time.
Pekka Paalanen
ppaalanen at gmail.com
Mon Apr 22 02:48:43 PDT 2013
On Fri, 19 Apr 2013 17:49:12 +0000
"Yeh, Sinclair" <sinclair.yeh at intel.com> wrote:
> wl_egl_window_destory() distroys the window handle that
> dri2_destroy_surface() later uses when eglTerminate() is called.
>
> Reordering the tear down order prevents such case from occuring.
> ---
> clients/simple-egl.c | 11 ++++++-----
> 1 files changed, 6 insertions(+), 5 deletions(-)
>
> diff --git a/clients/simple-egl.c b/clients/simple-egl.c index
> 26ebe5c..f4468b7 100644 --- a/clients/simple-egl.c
> +++ b/clients/simple-egl.c
> @@ -146,11 +146,6 @@ init_egl(struct display *display, int opaque)
> static void 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);
> eglReleaseThread();
> }
> @@ -330,6 +325,12 @@ create_surface(struct window *window) static
> void 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_shell_surface_destroy(window->shell_surface);
Wow, now that you actually point this out, it's pretty obvious. Though,
are you sure there is no Mesa bug to be fixed here?
The patch looks good to me.
Thanks,
pq
More information about the wayland-devel
mailing list