Author: fireball
Date: Wed Jul 23 13:20:32 2008
New Revision: 34695
URL:
http://svn.reactos.org/svn/reactos?rev=34695&view=rev
Log:
- Partly revert 24104: "I do not known if I done right in NtGdiRealizePalette step2,
step2 is not tested." - if you don't know, don't do at all!
Memory DC "supports drawing operations on a bitmap" according to MSDN, so why
changing device's palette? I think it was not done for a reason, and if you can't
test, don't touch before you have a test application.
- Reformat another part of 24104, and include warning messages too, to track palette
failures.
- Put two mandatory debug prints to see when the code is being hit (one to memory managed
DC case, and another one to the code commented out by Jim).
- Tested with abiword, FF 1.5 and 2.0, openoffice 2.0 installer, in 8, 24 and 32 bit color
modes, no problem arised, and no debug messages flood happened.
Modified:
trunk/reactos/subsystems/win32/win32k/objects/color.c
Modified: trunk/reactos/subsystems/win32/win32k/objects/color.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ob…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/objects/color.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/objects/color.c [iso-8859-1] Wed Jul 23 13:20:32
2008
@@ -488,7 +488,7 @@
{
/*
* This function doesn't do any real work now and there's plenty
- * of bugd in it (calling SetPalette for high/true-color modes,
+ * of bugs in it (calling SetPalette for high/true-color modes,
* using DEFAULT_PALETTE instead of the device palette, ...).
*/
@@ -497,12 +497,11 @@
int realized = 0;
PDC dc;
HPALETTE systemPalette;
- BOOLEAN success;
+ //BOOLEAN success;
USHORT sysMode, palMode;
dc = DC_LockDc(hDC);
- if (!dc)
- return 0;
+ if (!dc) return 0;
systemPalette = NtGdiGetStockObject((INT)DEFAULT_PALETTE);
palGDI = PALETTE_LockPalette(dc->DcLevel.hpal);
@@ -510,12 +509,9 @@
if (palGDI == NULL)
{
- /* FIXME - Handle palGDI == NULL!!!!
- we should not unlock dc and return 0 ??
- shall we create the pallete ??
- */
- DC_UnlockDc(dc);
- return 0;
+ DPRINT1("IntGdiRealizePalette(): palGDI is NULL, exiting\n");
+ DC_UnlockDc(dc);
+ return 0;
}
sysGDI = PALETTE_LockPalette(systemPalette);
@@ -523,13 +519,10 @@
if (sysGDI == NULL)
{
- /* FIXME - Handle sysGDI == NULL!!!!!
- we should not unlock dc and return 0 ??
- shall we create the pallete ??
- */
- PALETTE_UnlockPalette(palGDI);
- DC_UnlockDc(dc);
- return 0;
+ DPRINT1("IntGdiRealizePalette(): sysGDI is NULL, exiting\n");
+ PALETTE_UnlockPalette(palGDI);
+ DC_UnlockDc(dc);
+ return 0;
}
@@ -551,12 +544,10 @@
if(dc->DC_Type == DC_TYPE_MEMORY)
{
// Memory managed DC
- ASSERT(sysGDI->NumColors <= 256);
- success = ((GDIDEVICE *)dc->pPDev)->DriverFunctions.SetPalette(
- dc->PDev, sysPtr, 0, 0, sysGDI->NumColors);
-
-/* See bug 733, keep the code for now.
- } else {
+ DPRINT1("win32k: realizepalette unimplemented step 2 for DC_MEMORY\n");
+ } else {
+ DPRINT1("win32k: realizepalette commented out step 2\n");
+ /* See bug 733, keep the code for now.
if( ((GDIDEVICE *)dc->pPDev)->DriverFunctions.SetPalette)
{
ASSERT(palGDI->NumColors <= 256);