[cairo] bindings & memory management
behdad at behdad.org
Tue May 15 13:37:31 PDT 2007
On Tue, 2007-05-15 at 11:32 -0400, Tamas K Papp wrote:
> I am writing Common Lisp bindings for cairo (cl-cairo appears to be
> dormant and no longer compiles). As suggested in the manual, I don't
> want to expose the users to pointers and reference counts, but I don't
> know what's the best model for that.
Have you read the Bindings appendix of cairo's reference documentation?
It's shipped in the release tarball.
> Currently I am wrapping a class around cairo objects like cairo_t,
> which only contain a pointer, but I am not sure when I can destroy
> 1. surface is created, stored in a class
> 2. context is created from surface, stored in a class
> 3. can I destroy the surface now? My assumption is that the context is
> still referencing it, but that's ok for me, I just no longer need the
> surface explicitly.
> 4. when I am done with drawing on the context, can I just destroy the
> context and have the surface destroyed automatically?
Yes. It's a simple reference counting scheme. Like many other
languages and systems.
> Another quesion: when is the output "flushed", for example, for a PDF
> file -- when I destroy the context or when I destroy the surface?
When the surface is finished, which you can manually call with
cairo_surface_finish() or it will be automatically called when the
surface is being destroyed.
Have fun with cairo!
> cairo mailing list
> cairo at cairographics.org
"Those who would give up Essential Liberty to purchase a little
Temporary Safety, deserve neither Liberty nor Safety."
-- Benjamin Franklin, 1759
More information about the cairo