From defbc44f672e9150df7d7ef4f2b9cd099a1a3569 Mon Sep 17 00:00:00 2001 From: Aleksey Bragin Date: Thu, 12 Mar 2009 10:48:52 +0000 Subject: [PATCH] Evgeniy Boltik - Use bitmap's DIB palette, if it exists. Fixes problems described in bug 4147. See issue #4147 for more details. svn path=/trunk/; revision=39975 --- reactos/subsystems/win32/win32k/objects/dibobj.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/reactos/subsystems/win32/win32k/objects/dibobj.c b/reactos/subsystems/win32/win32k/objects/dibobj.c index bc6cd2a3833..9c7725de1cd 100644 --- a/reactos/subsystems/win32/win32k/objects/dibobj.c +++ b/reactos/subsystems/win32/win32k/objects/dibobj.c @@ -271,8 +271,17 @@ IntSetDIBits( return 0; } - // Destination palette obtained from the hDC - hDCPalette = PALETTE_LockPalette(((GDIDEVICE *)DC->pPDev)->DevInfo.hpalDefault); + // Use hDIBPalette if it exists + if (bitmap->hDIBPalette) + { + DDB_Palette = bitmap->hDIBPalette; + } + else + { + // Destination palette obtained from the hDC + DDB_Palette = ((GDIDEVICE *)DC->pPDev)->DevInfo.hpalDefault; + } + hDCPalette = PALETTE_LockPalette(DDB_Palette); if (NULL == hDCPalette) { EngUnlockSurface(SourceSurf); @@ -282,7 +291,6 @@ IntSetDIBits( return 0; } DDB_Palette_Type = hDCPalette->Mode; - DDB_Palette = ((GDIDEVICE *)DC->pPDev)->DevInfo.hpalDefault; PALETTE_UnlockPalette(hDCPalette); // Source palette obtained from the BITMAPINFO