Author: amunger
Date: Thu Jun 1 06:09:11 2006
New Revision: 22139
URL:
http://svn.reactos.ru/svn/reactos?rev=22139&view=rev
Log:
Merged win32k fixes from trunk, per GreatLord.
Revisions: 21995, 22010, 22014
Modified:
branches/ros-branch-0_3_0/reactos/subsystems/win32/win32k/dib/dib16bpp.c
branches/ros-branch-0_3_0/reactos/subsystems/win32/win32k/dib/dib32bpp.c
branches/ros-branch-0_3_0/reactos/subsystems/win32/win32k/eng/xlate.c
branches/ros-branch-0_3_0/reactos/subsystems/win32/win32k/objects/dibobj.c
Modified: branches/ros-branch-0_3_0/reactos/subsystems/win32/win32k/dib/dib16bpp.c
URL:
http://svn.reactos.ru/svn/reactos/branches/ros-branch-0_3_0/reactos/subsyst…
==============================================================================
--- branches/ros-branch-0_3_0/reactos/subsystems/win32/win32k/dib/dib16bpp.c (original)
+++ branches/ros-branch-0_3_0/reactos/subsystems/win32/win32k/dib/dib16bpp.c Thu Jun 1
06:09:11 2006
@@ -687,8 +687,9 @@
sx = ((DesX * SrcSizeX) / DesSizeX) + SourceRect->left;
color = DIB_4BPP_GetPixel(SourceSurf, sx, sy);
+ color = XLATEOBJ_iXlate(ColorTranslation, color);
- *DestBits = XLATEOBJ_iXlate(ColorTranslation, color);
+ *DestBits = color;
DestBits = (PULONG)((ULONG_PTR)DestBits + 2);
}
DestBits = (PULONG)((ULONG_PTR)DestBits + DifflDelta);
@@ -713,8 +714,8 @@
sx = ((DesX * SrcSizeX) / DesSizeX) + SourceRect->left;
color = DIB_8BPP_GetPixel(SourceSurf, sx, sy);
-
- *DestBits = XLATEOBJ_iXlate(ColorTranslation, color);
+ color = XLATEOBJ_iXlate(ColorTranslation, color);
+ *DestBits = color;
DestBits = (PULONG)((ULONG_PTR)DestBits + 2);
}
DestBits = (PULONG)((ULONG_PTR)DestBits + DifflDelta);
@@ -740,8 +741,9 @@
sx = ((DesX * SrcSizeX) / DesSizeX) + SourceRect->left;
color = DIB_24BPP_GetPixel(SourceSurf, sx, sy);
+ color = XLATEOBJ_iXlate(ColorTranslation, color);
- *DestBits = XLATEOBJ_iXlate(ColorTranslation, color);
+ *DestBits = color;
DestBits = (PULONG)((ULONG_PTR)DestBits + 2);
}
DestBits = (PULONG)((ULONG_PTR)DestBits + DifflDelta);
@@ -766,8 +768,9 @@
sx = ((DesX * SrcSizeX) / DesSizeX) + SourceRect->left;
color = DIB_32BPP_GetPixel(SourceSurf, sx, sy);
+ color = XLATEOBJ_iXlate(ColorTranslation, color);
- *DestBits = XLATEOBJ_iXlate(ColorTranslation, color);
+ *DestBits = color;
DestBits = (PULONG)((ULONG_PTR)DestBits + 2);
}
DestBits = (PULONG)((ULONG_PTR)DestBits + DifflDelta);
Modified: branches/ros-branch-0_3_0/reactos/subsystems/win32/win32k/dib/dib32bpp.c
URL:
http://svn.reactos.ru/svn/reactos/branches/ros-branch-0_3_0/reactos/subsyst…
==============================================================================
--- branches/ros-branch-0_3_0/reactos/subsystems/win32/win32k/dib/dib32bpp.c (original)
+++ branches/ros-branch-0_3_0/reactos/subsystems/win32/win32k/dib/dib32bpp.c Thu Jun 1
06:09:11 2006
@@ -609,7 +609,8 @@
{
sx = ((DesX * SrcSizeX) / DesSizeX) + SourceRect->left;
color = DIB_4BPP_GetPixel(SourceSurf, sx, sy);
- *DestBits = XLATEOBJ_iXlate(ColorTranslation, color);
+ color = XLATEOBJ_iXlate(ColorTranslation, color);
+ *DestBits = color;
}
DestBits = (PULONG)((ULONG_PTR)DestBits + DifflDelta);
@@ -633,7 +634,8 @@
{
sx = ((DesX * SrcSizeX) / DesSizeX) + SourceRect->left;
color = DIB_8BPP_GetPixel(SourceSurf, sx, sy);
- *DestBits = XLATEOBJ_iXlate(ColorTranslation, color);
+ color = XLATEOBJ_iXlate(ColorTranslation, color);
+ *DestBits = color;
}
DestBits = (PULONG)((ULONG_PTR)DestBits + DifflDelta);
}
@@ -656,7 +658,8 @@
{
sx = ((DesX * SrcSizeX) / DesSizeX) + SourceRect->left;
color = DIB_16BPP_GetPixel(SourceSurf, sx, sy);
- *DestBits = XLATEOBJ_iXlate(ColorTranslation, color);
+ color = XLATEOBJ_iXlate(ColorTranslation, color);
+ *DestBits = color;
}
DestBits = (PULONG)((ULONG_PTR)DestBits + DifflDelta);
}
@@ -679,7 +682,8 @@
{
sx = ((DesX * SrcSizeX) / DesSizeX) + SourceRect->left;
color = DIB_24BPP_GetPixel(SourceSurf, sx, sy);
- *DestBits = XLATEOBJ_iXlate(ColorTranslation, color);
+ color = XLATEOBJ_iXlate(ColorTranslation, color);
+ *DestBits = color;
}
DestBits = (PULONG)((ULONG_PTR)DestBits + DifflDelta);
}
Modified: branches/ros-branch-0_3_0/reactos/subsystems/win32/win32k/eng/xlate.c
URL:
http://svn.reactos.ru/svn/reactos/branches/ros-branch-0_3_0/reactos/subsyst…
==============================================================================
--- branches/ros-branch-0_3_0/reactos/subsystems/win32/win32k/eng/xlate.c (original)
+++ branches/ros-branch-0_3_0/reactos/subsystems/win32/win32k/eng/xlate.c Thu Jun 1
06:09:11 2006
@@ -275,10 +275,15 @@
*/
end:
+ if (PaletteDest != NULL)
+ if (PaletteDest != PaletteSource)
+ if (DestPalGDI != NULL)
+ PALETTE_UnlockPalette(DestPalGDI);
+
+
if (PaletteSource != NULL)
PALETTE_UnlockPalette(SourcePalGDI);
- if (PaletteDest != NULL && PaletteDest != PaletteSource)
- PALETTE_UnlockPalette(DestPalGDI);
+
return XlateObj;
}
Modified: branches/ros-branch-0_3_0/reactos/subsystems/win32/win32k/objects/dibobj.c
URL:
http://svn.reactos.ru/svn/reactos/branches/ros-branch-0_3_0/reactos/subsyst…
==============================================================================
--- branches/ros-branch-0_3_0/reactos/subsystems/win32/win32k/objects/dibobj.c (original)
+++ branches/ros-branch-0_3_0/reactos/subsystems/win32/win32k/objects/dibobj.c Thu Jun 1
06:09:11 2006
@@ -758,17 +758,41 @@
{
PDC Dc;
HBITMAP Bmp;
-
- Dc = DC_LockDc(hDc);
- if (NULL == Dc)
- {
- SetLastWin32Error(ERROR_INVALID_HANDLE);
- return NULL;
- }
-
- Bmp = IntCreateDIBitmap(Dc, Header, Init, Bits, Data, ColorUse);
-
- DC_UnlockDc(Dc);
+
+
+ if (NULL == hDc)
+ {
+ hDc = IntGdiCreateDC(NULL, NULL, NULL, NULL,FALSE);
+ if (hDc == NULL)
+ {
+ SetLastWin32Error(ERROR_INVALID_HANDLE);
+ return NULL;
+ }
+ Dc = DC_LockDc(hDc);
+ if (Dc == NULL)
+ {
+ NtGdiDeleteObjectApp(hDc);
+ SetLastWin32Error(ERROR_INVALID_HANDLE);
+ return NULL;
+ }
+
+ Bmp = IntCreateDIBitmap(Dc, Header, Init, Bits, Data, ColorUse);
+ DC_UnlockDc(Dc);
+ NtGdiDeleteObjectApp(hDc);
+ }
+ else
+ {
+ Dc = DC_LockDc(hDc);
+ if (Dc == NULL)
+ {
+ SetLastWin32Error(ERROR_INVALID_HANDLE);
+ return NULL;
+ }
+ Bmp = IntCreateDIBitmap(Dc, Header, Init, Bits, Data, ColorUse);
+ DC_UnlockDc(Dc);
+ }
+
+
return Bmp;
}