The Cairo documentation tells us to always call cairo_device_flush() before using other rendering APIs on the cairo surface, especially where the Cairo device shares state with us (that is, EGL and GL state in this case).
Add a call to cairo_device_flush() into display_acquire_window_surface(), which the toytoolkit offers for switching to native (GL) rendering. Signed-off-by: Pekka Paalanen <ppaala...@gmail.com> --- This patch is the same as the first one, but without the "drawback" chapter in the message. The drawbacks are fixed in current Cairo master HEAD, so there are no drawbacks. Well, gears will probably break for those who have not yet updated to the current Cairo master HEAD. The Cairo HEAD indeed seems to work enough that we can default to it again. The only problem I have seen so far is the unlock dialog's button: it's now square and stuff. clients/window.c | 6 +----- 1 files changed, 1 insertions(+), 5 deletions(-) diff --git a/clients/window.c b/clients/window.c index 2124899..053d991 100644 --- a/clients/window.c +++ b/clients/window.c @@ -1007,11 +1007,6 @@ window_draw_decorations(struct window *window) cairo_show_text(cr, window->title); cairo_destroy(cr); - - /* FIXME: this breakes gears, fix cairo? */ -#if 0 - cairo_device_flush (window->display->device); -#endif } void @@ -2675,6 +2670,7 @@ display_acquire_window_surface(struct display *display, data = cairo_surface_get_user_data(window->cairo_surface, &surface_data_key); + cairo_device_flush(device); cairo_device_acquire(device); if (!eglMakeCurrent(display->dpy, data->surf, data->surf, ctx)) fprintf(stderr, "failed to make surface current\n"); -- 1.7.3.4 _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel