Fix initialization of XLATEOBJ, when source and dest format are equal. Patch by Thomas Faber (thfabba at gmx de)

See issue #5828 for more details.

svn path=/trunk/; revision=50694
This commit is contained in:
Timo Kreuzer 2011-02-14 16:04:01 +00:00
parent f571cf32bd
commit c1f1c6ee41

View file

@ -361,9 +361,7 @@ EXLATEOBJ_vInitialize(
EXLATEOBJ_vInitTrivial(pexlo); EXLATEOBJ_vInitTrivial(pexlo);
if (ppalDst == ppalSrc || !ppalSrc || !ppalDst || if (!ppalSrc || !ppalDst)
((ppalDst->flFlags == PAL_RGB || ppalDst->flFlags == PAL_BGR) &&
ppalDst->flFlags == ppalSrc->flFlags))
{ {
return; return;
} }
@ -372,6 +370,13 @@ EXLATEOBJ_vInitialize(
pexlo->ppalDst = ppalDst; pexlo->ppalDst = ppalDst;
pexlo->xlo.iSrcType = ppalSrc->flFlags; pexlo->xlo.iSrcType = ppalSrc->flFlags;
pexlo->xlo.iDstType = ppalDst->flFlags; pexlo->xlo.iDstType = ppalDst->flFlags;
if (ppalDst == ppalSrc ||
((ppalDst->flFlags == PAL_RGB || ppalDst->flFlags == PAL_BGR) &&
ppalDst->flFlags == ppalSrc->flFlags))
{
return;
}
/* Chack if both of the pallettes are indexed */ /* Chack if both of the pallettes are indexed */
if (!(ppalSrc->flFlags & PAL_INDEXED) || !(ppalDst->flFlags & PAL_INDEXED)) if (!(ppalSrc->flFlags & PAL_INDEXED) || !(ppalDst->flFlags & PAL_INDEXED))
@ -607,13 +612,6 @@ EXLATEOBJ_vInitXlateFromDCs(
psurfDst = pdcDst->dclevel.pSurface; psurfDst = pdcDst->dclevel.pSurface;
psurfSrc = pdcSrc->dclevel.pSurface; psurfSrc = pdcSrc->dclevel.pSurface;
/* Check for trivial color translation */
if (psurfDst == psurfSrc)
{
EXLATEOBJ_vInitTrivial(pexlo);
return;
}
/* Normal initialisation. No surface means DEFAULT_BITMAP */ /* Normal initialisation. No surface means DEFAULT_BITMAP */
EXLATEOBJ_vInitialize(pexlo, EXLATEOBJ_vInitialize(pexlo,
psurfSrc ? psurfSrc->ppal : &gpalMono, psurfSrc ? psurfSrc->ppal : &gpalMono,