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:
parent
67b824a81b
commit
f03be727d6
|
@ -368,8 +368,6 @@ FindGlyph (GlyphSetPtr glyphSet, Glyph id)
|
||||||
return glyph;
|
return glyph;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define GLYPH_SIZE (sizeof (GlyphRec) + dixPrivatesSize(PRIVATE_GLYPH))
|
|
||||||
|
|
||||||
GlyphPtr
|
GlyphPtr
|
||||||
AllocateGlyph (xGlyphInfo *gi, int fdepth)
|
AllocateGlyph (xGlyphInfo *gi, int fdepth)
|
||||||
{
|
{
|
||||||
|
@ -377,15 +375,17 @@ AllocateGlyph (xGlyphInfo *gi, int fdepth)
|
||||||
int size;
|
int size;
|
||||||
GlyphPtr glyph;
|
GlyphPtr glyph;
|
||||||
int i;
|
int i;
|
||||||
|
int head_size;
|
||||||
|
|
||||||
size = screenInfo.numScreens * sizeof (PicturePtr);
|
head_size = sizeof (GlyphRec) + screenInfo.numScreens * sizeof (PicturePtr);
|
||||||
glyph = (GlyphPtr) malloc (size + GLYPH_SIZE);
|
size = (head_size + dixPrivatesSize(PRIVATE_GLYPH));
|
||||||
|
glyph = (GlyphPtr) malloc (size);
|
||||||
if (!glyph)
|
if (!glyph)
|
||||||
return 0;
|
return 0;
|
||||||
glyph->refcnt = 0;
|
glyph->refcnt = 0;
|
||||||
glyph->size = size + sizeof (xGlyphInfo);
|
glyph->size = size + sizeof (xGlyphInfo);
|
||||||
glyph->info = *gi;
|
glyph->info = *gi;
|
||||||
dixInitPrivates(glyph, glyph + 1, PRIVATE_GLYPH);
|
dixInitPrivates(glyph, (char *) glyph + head_size, PRIVATE_GLYPH);
|
||||||
|
|
||||||
for (i = 0; i < screenInfo.numScreens; i++)
|
for (i = 0; i < screenInfo.numScreens; i++)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue