[cairo] fflush in copy_page

TOKUNAGA Hiroyuki tkng at xem.jp
Thu Sep 16 03:49:51 PDT 2004

Hi folks,

Now I'm creating a new language binding for cairo and encounting a
problem. The binding is for Gauche, a scheme interpreter.

The problem is that, some functions such as cairo_png_surface_create
receive a file pointer as its arguments, and file pointer has a
buffering feature.

Scheme cannot handle file pointer, so I have to create file pointer from
a file descriptor (to be exactly, not from a file descriptor but from a
port) by fdopen in my binding.

When a user calls closing function to close the file descriptor, the
problem occurs. We don't have a reference to file pointer in the
binding, this means the user has no way to flush the file pointer before
close. This cause a data loss buffered by FILE.

Of course, solving this problem in binding side is not impossible, but
will be ugly. If fflush is called in the last of cairo_copy_page
function, the problem doesn't occur.

With attached patch, cairo calls fflush in _cairo_png_surface_copy_page
and _cairo_ps_surface_copy_page.

I'm happy if you apply this patch.


tkng at xem.jp
-------------- next part --------------
A non-text attachment was scrubbed...
Name: cairo_surface_fflush.patch
Type: application/octet-stream
Size: 951 bytes
Desc: not available
Url : http://lists.freedesktop.org/archives/cairo/attachments/20040916/c437ef4f/cairo_surface_fflush.obj

More information about the cairo mailing list