[Cairo] Semantics of cairo_copy changed in 0.1.7

James Henstridge james at daa.com.au
Tue Sep 30 19:44:36 PDT 2003

On 1/10/2003 10:21 AM, Keith Packard wrote:

>Around 21 o'clock on Sep 30, Owen Taylor wrote:
>>But I'm really not sure how to interpret that. If you mass replace the
>>contents of a cairo_t how is that different from creating a new cairo_t?
>>malloc() / free() are not expensive, and I don't think it's worth giving
>>up API simplicity to save a few.
>the new copy function replaces only the top of the destination gstate 
>stack, leaving underlying elements in place.  This allows you to save/
>restore the gstate with:
>	cairo_t	*temp = cairo_create ();
>	cairo_copy (temp, cs);
>	<muck with cs state>
>	cairo_copy (cs, temp);
>	cairo_destroy (temp);
>The old copy function wouldn't permit this usage as it wouldn't permit the 
>second cairo_copy.
With the old cairo_copy, couldn't you restate the above as this?
    cairo_t *temp = cairo_copy(cs);
    <muck with temp state>

I thought that was the point of the old API.  What does the new copy 
operation give you that the old one didn't?  The only difference seems 
to be which cairo_t you are mucking around with.


Email: james at daa.com.au
WWW:   http://www.daa.com.au/~james/

More information about the cairo mailing list