- In BITMAP_CopyBitmap, also "copy" the palette of the source bitmap, instead of assuming the one created by GreCreateBitmapEx matches the bitmap bits we have copied.
Fixes broken colors on the firefox firstrun page
See issue #5902 for more details.

svn path=/trunk/; revision=50902
This commit is contained in:
Timo Kreuzer 2011-02-25 17:37:25 +00:00
parent 0fcd8261f2
commit 25a9c6fb49

View file

@ -842,7 +842,7 @@ BITMAP_CopyBitmap(HBITMAP hBitmap)
return 0;
}
Bitmap = SURFACE_LockSurface(hBitmap);
Bitmap = SURFACE_ShareLockSurface(hBitmap);
if (Bitmap == NULL)
{
return 0;
@ -867,11 +867,14 @@ BITMAP_CopyBitmap(HBITMAP hBitmap)
if (res)
{
resBitmap = SURFACE_LockSurface(res);
resBitmap = SURFACE_ShareLockSurface(res);
if (resBitmap)
{
IntSetBitmapBits(resBitmap, Bitmap->SurfObj.cjBits, Bitmap->SurfObj.pvBits);
SURFACE_UnlockSurface(resBitmap);
GDIOBJ_IncrementShareCount(&Bitmap->ppal->BaseObject);
GDIOBJ_ShareUnlockObjByPtr(&resBitmap->ppal->BaseObject);
resBitmap->ppal = Bitmap->ppal;
SURFACE_ShareUnlockSurface(resBitmap);
}
else
{
@ -880,7 +883,7 @@ BITMAP_CopyBitmap(HBITMAP hBitmap)
}
}
SURFACE_UnlockSurface(Bitmap);
SURFACE_ShareUnlockSurface(Bitmap);
return res;
}