[Cairo] Cairo on older X servers, (eg. with Render version 0.2)
keithp at keithp.com
Sun Oct 12 09:57:44 PDT 2003
I was thinking about the new functions Carl mentioned to permit
asynchronous drawing for legacy X servers. I fear that applications won't
effectively test against such servers and so we'd better make sure that
semantics for both targets are as close as possible.
/* Clear the current target surface (to solid white). */
cairo_erase (cairo_t *cr);
I'd like cairo_erase to be implicitly called at cairo_set_target_surface
time unless the application specifies otherwise. Essentially, we want to
know if the surface is dirty or not at this time. A
'cairo_surface_mark_dirty' API could perform this task.
/* Guarantee that the results of all previous painting
commands have been applied to the surface. */
cairo_flush (cairo_t *cr);
I'd like to see if we can't make this call unnecessary in essentially all
cases. Xlib provides extension hooks to track calls to XFlush; with
sufficient care, I think we could take advantage of that to push cairo
changes across the wire in a timely fashion. cairo_flush may still be
needed to synchronize within an application when mixing cairo and
non-cairo rendering calls.
More information about the cairo