Hi, On 11 November 2016 at 16:45, Emil Velikov <emil.l.veli...@gmail.com> wrote: > @@ -174,14 +172,24 @@ dri2_wl_create_surface(_EGLDriver *drv, _EGLDisplay > *disp, > config = dri2_get_dri_config(dri2_conf, EGL_WINDOW_BIT, > dri2_surf->base.GLColorspace); > > - dri2_surf->dri_drawable = > - (*dri2_dpy->dri2->createNewDrawable)(dri2_dpy->dri_screen, config, > - dri2_surf); > + if (dri2_dpy->dri2) { > + dri2_surf->wl_win->resize_callback = resize_callback; > + > + createNewDrawable = dri2_dpy->dri2->createNewDrawable; > + } else { > + createNewDrawable = dri2_dpy->swrast->createNewDrawable; > + }
Hm, we've just lost the place we set resize_callback for swrast now. :\ This should be called for both paths, no? And presumably also only set after calling createNewDrawable, so we the following doesn't explode: win = wl_egl_window_create(...); surf = eglCreateSurface(..., win); /* fails */ wl_egl_window_resize(win, ...); /* unexpectedly calls into resize_callback */ No wait, after reading that, resize_callback is essentially a no-op: the flush extension doesn't exist for swrast, so resize_callback will explode if ever called on swrast. Does this mean that 1/3 is generally wrong, and needs to set destroy_window_callback rather than resize_callback instead? Cheers, Daniel _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev