From 9015ead7d6a380946ea4a077831c2b155caddf18 Mon Sep 17 00:00:00 2001 From: Pekka Paalanen Date: Mon, 19 Dec 2011 13:57:59 +0200 Subject: [PATCH] window: do proper Cairo device flushing 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 --- clients/window.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/clients/window.c b/clients/window.c index e8e3508d..d06d4aa5 100644 --- a/clients/window.c +++ b/clients/window.c @@ -995,11 +995,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 @@ -2529,6 +2524,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");