+ dri2_surf->wl_queue = wl_display_create_queue(dri2_dpy->wl_dpy);
+ if (!window) {
+ _eglError(EGL_BAD_ALLOC, "dri2_create_surface");
+ goto cleanup_surf;
+ }
+
+ if (dri2_dpy->wl_drm) {
+ dri2_surf->wl_drm_wrapper = wl_proxy_create_wrapper(dri2_dpy->wl_drm);
+ if (!dri2_surf->wl_drm_wrapper) {
+ _eglError(EGL_BAD_ALLOC, "dri2_create_surface");
+ goto cleanup_queue;
+ }
+ wl_proxy_set_queue((struct wl_proxy *)dri2_surf->wl_drm_wrapper,
+ dri2_surf->wl_queue);
+ }
+
+ dri2_surf->wl_dpy_wrapper = wl_proxy_create_wrapper(dri2_dpy->wl_dpy);
+ if (!dri2_surf->wl_dpy_wrapper) {
+ _eglError(EGL_BAD_ALLOC, "dri2_create_surface");
+ goto cleanup_drm;
+ }
+ wl_proxy_set_queue((struct wl_proxy *)dri2_surf->wl_dpy_wrapper,
+ dri2_surf->wl_queue);
+
+ dri2_surf->wl_surface_wrapper = wl_proxy_create_wrapper(window->surface);
+ if (!dri2_surf->wl_surface_wrapper) {
+ _eglError(EGL_BAD_ALLOC, "dri2_create_surface");
+ goto cleanup_drm;
+ }
+ wl_proxy_set_queue((struct wl_proxy *)dri2_surf->wl_surface_wrapper,
+ dri2_surf->wl_queue);