> https://developer.gnome.org/gdk2/stable/gdk2-Cairo-Interaction.html#gdk-cairo-create
> "Note that due to double-buffering, Cairo contexts created in a GTK+
> expose event handler cannot be cached and reused between different
> expose events. "

If I understand correctly, this means a Cairo context should not be global, 
then? 

> https://developer.gnome.org/gdk3/stable/gdk3-Cairo-Interaction.html#gdk-cairo-create
> "A newly created Cairo context. Free with cairo_destroy() when you are
> done drawing."

There is no cairo_destroy method in perl-Cairo (or none, at least, I could not 
find it). There is a DESTROY method in Cairo.xs that calls the cairo_destroy 
Cairo internal.

If $cr is global, calling $cr=undef; after the last $cr->paint; removes the X 
error crash.

Incidentally, I also need to do $cr=undef; to force a "flush" when I create a 
pdf file from Cairo (i.e. I can't open the pdf file while the main loop is 
running, unless I call $cr=undef; after the last paint is done).

All of this is fine, but still does not explain why the behaviour is so 
different between my two systems.

>From the backtrace, it seems the problem is happening in cairo_surface_flush() 
>from /usr/lib64/libcairo.so.2...

Cheers,

Guillaume

_______________________________________________
gtk-perl-list mailing list
gtk-perl-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-perl-list

Reply via email to