[cairo] const-ness fixes for transform_distance and
transform_point
Keith Packard
keithp at keithp.com
Mon May 9 10:30:03 PDT 2005
On Mon, 2005-05-09 at 13:26 -0400, Owen Taylor wrote:
> On Mon, 2005-05-09 at 10:07 -0700, Keith Packard wrote:
> > On Mon, 2005-05-09 at 13:06 -0400, Owen Taylor wrote:
> >
> > > This does muddle the "plain structure returns are out-parameters"
> > > rule that I documented in the language binding appendix.
> >
> > And what about the re-entrancy issues of returning a pointer to static
> > data?
>
> cairo_surface_t *cairo_get_target (cairo_t *cr);
>
> is returning a pointer to non-referenced data, so that already prevents
> us from enabling simultaneous access to the same cairo_t from
> multiple threads.
>
I don't see these as equivalent; cairo_get_target always returns the
"same" value -- the target surface is always the same surface; I see
this as a logically fixed mapping from the cairo_t to the persistant
'surface object'.
In contrast the matrix appears as a transformation whose value is not
related to its storage, but rather as a pure coordinate mapping
function. In this way, it is equivalent to the font extents example.
Would you have the cairo_t contain a static font extents structure just
so we could return a pointer to it?
The fact that cairo_t *does* contain a cairo_matrix_t is an
implementation detail that is clouding the issue here.
-keith
-------------- 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/20050509/1471ad49/attachment.pgp
More information about the cairo
mailing list