On 11 November 2016 at 17:19, Daniel Stone <dan...@fooishbar.org> wrote: > 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? > Yes that's correct - copy/pasta mistake in 1/3. Moving setting resize_callback after the createNewDrawable sounds like a good thing- I'll flesh it out.
Thanks Emil _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev