On Fri, 19 Apr 2013 17:49:12 +0000 "Yeh, Sinclair" <sinclair....@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 _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel