There is a bug in Cairo DirectFB backend. After applying the patch from the link below to cairo-1.12.14 http://cgit.freedesktop.org/cairo/commit/?id=631bf299256e11a17511977f357e0353fb5615f7 The directfb surface is locked in _cairo_dfb_surface_map_to_image() but not unlocked in _cairo_dfb_surface_unmap_image(). Therefore, it is preventing the application from using that directfb surface, such as surface->flip.
Yes, that is quite deliberate. Note that you are expected to call cairo_surface_flush() before manipulating any cairo surface directly (and has been in the documented interface since 1.0).
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.