[Fontconfig] mmaping FcInit

Lars Knoll lars at trolltech.com
Sat Mar 26 20:10:58 EST 2005


On Friday 25 March 2005 22:25, Owen Taylor wrote:
> On Fri, 2005-03-25 at 01:53 -0500, Patrick Lam wrote:
> > BTW, Owen's suggested struct:
> > struct FcPattern {
> >     int refcount;
> >     FcPatternStorage storage; /* dynamic, static */
> >
> >     union {
> >       FcPatternDynamic *dynamic;
> >       FcPatternStatic *static;
> >     } u;
> >   };
> >
> > still seems to be a struct, and thus requiring mallocness and a pointer.
>
> The point of my suggestion is that we need a single *public* structure
> for:
>
>   - Patterns retrieved from the database of fonts on disk
>   - Patterns created on the fly through the FcPattern API
>
> But that public structure can be small, lightweight, and created on
> the fly.

Do you really? FcPattern is a completely opaque type. For patterns on the 
disk, you can just return a pointer to them. All that should be needed is one 
bitflag in the pattern structure itself marking it a begin readonly, and 
using the same data structure for dynamic patterns. 

This requires using the same endianness and packing for dynamic and static 
patterns and thus makes building up dynamic pattern a little more complex, 
but I don't think the overhead would be noticable (and the code is needed for 
the cache building anyway). The advantage would the that retrieving of 
properties from the pattern could use the same code.

Cheers,
Lars



More information about the Fontconfig mailing list