NtGdiRealizePalette(): Unlock palettes prior to call to IntEngCreateXlate(). (prevents double-lock)

svn path=/trunk/; revision=6039
This commit is contained in:
Aleksey Bragin 2003-09-10 21:03:18 +00:00
parent 156ce01884
commit e9d5901d8b

View file

@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/ */
/* $Id: color.c,v 1.23 2003/08/28 12:35:59 gvg Exp $ */ /* $Id: color.c,v 1.24 2003/09/10 21:03:18 fireball Exp $ */
// FIXME: Use PXLATEOBJ logicalToSystem instead of int *mapping // FIXME: Use PXLATEOBJ logicalToSystem instead of int *mapping
@ -342,6 +342,7 @@ UINT STDCALL NtGdiRealizePalette(HDC hDC)
HPALETTE systemPalette; HPALETTE systemPalette;
PSURFGDI SurfGDI; PSURFGDI SurfGDI;
BOOLEAN success; BOOLEAN success;
USHORT sysMode, palMode;
dc = DC_LockDc(hDC); dc = DC_LockDc(hDC);
if (!dc) if (!dc)
@ -374,6 +375,12 @@ UINT STDCALL NtGdiRealizePalette(HDC hDC)
} }
} }
// need to pass this to IntEngCreateXlate with palettes unlocked
sysMode = sysGDI->Mode;
palMode = palGDI->Mode;
PALETTE_UnlockPalette(systemPalette);
PALETTE_UnlockPalette(dc->w.hPalette);
// Step 3: Create the XLATEOBJ for device managed DCs // Step 3: Create the XLATEOBJ for device managed DCs
if(dc->w.flags != DC_MEMORY) if(dc->w.flags != DC_MEMORY)
{ {
@ -381,8 +388,6 @@ UINT STDCALL NtGdiRealizePalette(HDC hDC)
palPtr->logicalToSystem = IntEngCreateXlate(sysGDI->Mode, palGDI->Mode, systemPalette, dc->w.hPalette); palPtr->logicalToSystem = IntEngCreateXlate(sysGDI->Mode, palGDI->Mode, systemPalette, dc->w.hPalette);
} }
PALETTE_UnlockPalette(systemPalette);
PALETTE_UnlockPalette(dc->w.hPalette);
DC_UnlockDc(hDC); DC_UnlockDc(hDC);
return realized; return realized;