--- src/egl/drivers/dri2/platform_wayland.c | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-)
diff --git a/src/egl/drivers/dri2/platform_wayland.c b/src/egl/drivers/dri2/platform_wayland.c index 6e702ab..56f5d3c 100644 --- a/src/egl/drivers/dri2/platform_wayland.c +++ b/src/egl/drivers/dri2/platform_wayland.c @@ -447,18 +447,7 @@ dri2_swap_buffers(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *draw) struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp); struct dri2_egl_surface *dri2_surf = dri2_egl_surface(draw); __DRIbuffer buffer; - int i, ret = 0; - - while (dri2_surf->frame_callback && ret != -1) - ret = wl_display_dispatch_queue(dri2_dpy->wl_dpy, dri2_dpy->wl_queue); - if (ret < 0) - return EGL_FALSE; - - dri2_surf->frame_callback = wl_surface_frame(dri2_surf->wl_win->surface); - wl_callback_add_listener(dri2_surf->frame_callback, - &frame_listener, dri2_surf); - wl_proxy_set_queue((struct wl_proxy *) dri2_surf->frame_callback, - dri2_dpy->wl_queue); + int i, ret; for (i = 0; i < ARRAY_SIZE(dri2_surf->color_buffers); i++) if (dri2_surf->color_buffers[i].age > 0) @@ -502,11 +491,24 @@ dri2_swap_buffers(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *draw) wl_surface_damage(dri2_surf->wl_win->surface, 0, 0, dri2_surf->base.Width, dri2_surf->base.Height); + dri2_surf->frame_callback = wl_surface_frame(dri2_surf->wl_win->surface); + wl_callback_add_listener(dri2_surf->frame_callback, + &frame_listener, dri2_surf); + wl_proxy_set_queue((struct wl_proxy *) dri2_surf->frame_callback, + dri2_dpy->wl_queue); + wl_surface_commit(dri2_surf->wl_win->surface); (*dri2_dpy->flush->flush)(dri2_surf->dri_drawable); (*dri2_dpy->flush->invalidate)(dri2_surf->dri_drawable); + ret = 0; + + while (dri2_surf->frame_callback && ret != -1) + ret = wl_display_dispatch_queue(dri2_dpy->wl_dpy, dri2_dpy->wl_queue); + if (ret < 0) + return EGL_FALSE; + return EGL_TRUE; } -- 1.8.1.4 _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel