From c1f1c6ee4189c43a8e50f04bf43206082b363e48 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Mon, 14 Feb 2011 16:04:01 +0000 Subject: [PATCH] [WIN32K] 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 --- reactos/subsystems/win32/win32k/eng/xlate.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/reactos/subsystems/win32/win32k/eng/xlate.c b/reactos/subsystems/win32/win32k/eng/xlate.c index f6aa48cd5fe..1f0fde662df 100644 --- a/reactos/subsystems/win32/win32k/eng/xlate.c +++ b/reactos/subsystems/win32/win32k/eng/xlate.c @@ -361,9 +361,7 @@ EXLATEOBJ_vInitialize( EXLATEOBJ_vInitTrivial(pexlo); - if (ppalDst == ppalSrc || !ppalSrc || !ppalDst || - ((ppalDst->flFlags == PAL_RGB || ppalDst->flFlags == PAL_BGR) && - ppalDst->flFlags == ppalSrc->flFlags)) + if (!ppalSrc || !ppalDst) { return; } @@ -372,6 +370,13 @@ EXLATEOBJ_vInitialize( pexlo->ppalDst = ppalDst; pexlo->xlo.iSrcType = ppalSrc->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 */ if (!(ppalSrc->flFlags & PAL_INDEXED) || !(ppalDst->flFlags & PAL_INDEXED)) @@ -607,13 +612,6 @@ EXLATEOBJ_vInitXlateFromDCs( psurfDst = pdcDst->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 */ EXLATEOBJ_vInitialize(pexlo, psurfSrc ? psurfSrc->ppal : &gpalMono, -- 2.17.1