dix: Extract CopySprite() utility
This commit is contained in:
parent
acd819ac07
commit
5b0c5344b7
|
@ -1220,3 +1220,29 @@ xi2mask_get_one_mask(const XI2Mask *mask, int deviceid)
|
|||
|
||||
return mask->masks[deviceid];
|
||||
}
|
||||
|
||||
/**
|
||||
* Copies a sprite data from src to dst sprites.
|
||||
*
|
||||
* Returns FALSE on error.
|
||||
*/
|
||||
Bool
|
||||
CopySprite(SpritePtr src, SpritePtr dst)
|
||||
{
|
||||
WindowPtr *trace;
|
||||
if (src->spriteTraceGood > dst->spriteTraceSize) {
|
||||
trace = reallocarray(dst->spriteTrace,
|
||||
src->spriteTraceSize, sizeof(*trace));
|
||||
if (!trace) {
|
||||
dst->spriteTraceGood = 0;
|
||||
return FALSE;
|
||||
}
|
||||
dst->spriteTrace = trace;
|
||||
dst->spriteTraceSize = src->spriteTraceGood;
|
||||
}
|
||||
memcpy(dst->spriteTrace, src->spriteTrace,
|
||||
src->spriteTraceGood * sizeof(*trace));
|
||||
dst->spriteTraceGood = src->spriteTraceGood;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
17
dix/touch.c
17
dix/touch.c
|
@ -500,7 +500,6 @@ TouchBuildDependentSpriteTrace(DeviceIntPtr dev, SpritePtr sprite)
|
|||
{
|
||||
int i;
|
||||
TouchClassPtr t = dev->touch;
|
||||
WindowPtr *trace;
|
||||
SpritePtr srcsprite;
|
||||
|
||||
/* All touches should have the same sprite trace, so find and reuse an
|
||||
|
@ -516,21 +515,7 @@ TouchBuildDependentSpriteTrace(DeviceIntPtr dev, SpritePtr sprite)
|
|||
else
|
||||
return FALSE;
|
||||
|
||||
if (srcsprite->spriteTraceGood > sprite->spriteTraceSize) {
|
||||
trace = reallocarray(sprite->spriteTrace,
|
||||
srcsprite->spriteTraceSize, sizeof(*trace));
|
||||
if (!trace) {
|
||||
sprite->spriteTraceGood = 0;
|
||||
return FALSE;
|
||||
}
|
||||
sprite->spriteTrace = trace;
|
||||
sprite->spriteTraceSize = srcsprite->spriteTraceGood;
|
||||
}
|
||||
memcpy(sprite->spriteTrace, srcsprite->spriteTrace,
|
||||
srcsprite->spriteTraceGood * sizeof(*trace));
|
||||
sprite->spriteTraceGood = srcsprite->spriteTraceGood;
|
||||
|
||||
return TRUE;
|
||||
return CopySprite(srcsprite, sprite);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -70,4 +70,7 @@ size_t xi2mask_mask_size(const XI2Mask *mask);
|
|||
void xi2mask_set_one_mask(XI2Mask *xi2mask, int deviceid,
|
||||
const unsigned char *mask, size_t mask_size);
|
||||
const unsigned char *xi2mask_get_one_mask(const XI2Mask *xi2mask, int deviceid);
|
||||
|
||||
Bool CopySprite(SpritePtr src, SpritePtr dst);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue