[cairo] Patch improving fallbacks

Owen Taylor otaylor at redhat.com
Mon Jan 31 13:07:00 PST 2005


On Mon, 2005-01-31 at 09:20 -0800, Keith Packard wrote:
> Around 11 o'clock on Jan 31, Owen Taylor wrote:
> 
> > image_extra is just a void * for the backend to save a pointer
> > to backend specific resources.
> 
> If it's part of the image, it seems like we should tie it to the image 
> instead of having to carry it around separately.  It seems mystic to have 
> this separate argument floating around.

It's just private API :-) ... I was trying to keep my changes as
simple, and because the API was already paired adding the void ** was 
simple and didn't get into other issues.

If we can come up with a good user data system for surfaces, then
we could remove this.

My current thought for user data for surfaces is something pretty
generic:

 cairo_key_t cairo_key_alloc (void);

 cairo_status_t cairo_surface_set_data (cairo_key_t  key,
                                        void        *data,
                                        void       (*destroy) (void *data));

 void *cairo_surface_get_data (cairo_key_t key);

When the surface is destroyed, all associated data is destroyed
as well. (The cairo_status_t is needed because there would be
a linked list internally.)

This would be useful for handling things like creating a 
cairo_xlib_surface_t for a GdkPixbuf as well, and reverse association
for language bindings.

 - Single user data has generally turned out to be a bad idea in 
   the past. Two people try to do it at once.
 - User data without destroy notifiers is much, much less useful.

Regards,
						Owen


-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
Url : http://lists.freedesktop.org/archives/cairo/attachments/20050131/5ba02eff/attachment.pgp


More information about the cairo mailing list