Place glyph privates at correct location within the allocate storage

A glyph allocation consists of :

  GlyphRec
  numScreens * PicturePtr
  glyph privates

Tell the dix private bits to start past the picture pointers.

Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
Keith Packard 2010-06-06 16:04:42 -07:00
parent 67b824a81b
commit f03be727d6

View File

@ -368,8 +368,6 @@ FindGlyph (GlyphSetPtr glyphSet, Glyph id)
return glyph;
}
#define GLYPH_SIZE (sizeof (GlyphRec) + dixPrivatesSize(PRIVATE_GLYPH))
GlyphPtr
AllocateGlyph (xGlyphInfo *gi, int fdepth)
{
@ -377,15 +375,17 @@ AllocateGlyph (xGlyphInfo *gi, int fdepth)
int size;
GlyphPtr glyph;
int i;
int head_size;
size = screenInfo.numScreens * sizeof (PicturePtr);
glyph = (GlyphPtr) malloc (size + GLYPH_SIZE);
head_size = sizeof (GlyphRec) + screenInfo.numScreens * sizeof (PicturePtr);
size = (head_size + dixPrivatesSize(PRIVATE_GLYPH));
glyph = (GlyphPtr) malloc (size);
if (!glyph)
return 0;
glyph->refcnt = 0;
glyph->size = size + sizeof (xGlyphInfo);
glyph->info = *gi;
dixInitPrivates(glyph, glyph + 1, PRIVATE_GLYPH);
dixInitPrivates(glyph, (char *) glyph + head_size, PRIVATE_GLYPH);
for (i = 0; i < screenInfo.numScreens; i++)
{