Author: khornicek
Date: Wed Nov 11 02:40:04 2009
New Revision: 44087
URL:
http://svn.reactos.org/svn/reactos?rev=44087&view=rev
Log:
- sync IntShowMousePointer with trunk, don't invert the cursor mask in
EngSetPointerShape
- RosDrv_GetIconInfo: don't pass empty bmbits + remove the fixme, GetObject isn't
really supposed to do that
- fixes cursors once again
Modified:
branches/arwinss/reactos/dll/win32/winent.drv/userdrv.c
branches/arwinss/reactos/subsystems/win32/win32k/eng/engpoint.c
Modified: branches/arwinss/reactos/dll/win32/winent.drv/userdrv.c
URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/winen…
==============================================================================
--- branches/arwinss/reactos/dll/win32/winent.drv/userdrv.c [iso-8859-1] (original)
+++ branches/arwinss/reactos/dll/win32/winent.drv/userdrv.c [iso-8859-1] Wed Nov 11
02:40:04 2009
@@ -200,6 +200,7 @@
{
INT height;
BITMAP bitmap;
+ PVOID pbits;
static const WORD ICON_HOTSPOT = 0x4242; /* From user32/cursoricon.c:128 */
TRACE("%p => %dx%d, %d bpp\n", ciconinfo,
@@ -223,13 +224,13 @@
if (ciconinfo->bBitsPerPixel > 1)
{
+ pbits = (char *)(ciconinfo + 1) + ciconinfo->nHeight * get_bitmap_width_bytes
(ciconinfo->nWidth,1);
+
iconinfo->hbmColor = CreateBitmap( ciconinfo->nWidth,
ciconinfo->nHeight,
- ciconinfo->bPlanes, ciconinfo->bBitsPerPixel,
- (char *)(ciconinfo + 1)
- + ciconinfo->nHeight *
- get_bitmap_width_bytes (ciconinfo->nWidth,1) );
- if( GetObjectW(iconinfo->hbmColor, sizeof(bitmap), &bitmap))
- RosGdiCreateBitmap(NULL, iconinfo->hbmColor, &bitmap, bitmap.bmBits);
+ ciconinfo->bPlanes,
ciconinfo->bBitsPerPixel,
+ pbits);
+ if(GetObjectW(iconinfo->hbmColor, sizeof(bitmap), &bitmap))
+ RosGdiCreateBitmap(NULL, iconinfo->hbmColor, &bitmap, pbits);
}
else
{
@@ -237,13 +238,14 @@
height *= 2;
}
+ pbits = (char *)(ciconinfo + 1);
+
/* Create the mask bitmap */
iconinfo->hbmMask = CreateBitmap ( ciconinfo->nWidth, height,
- 1, 1, ciconinfo + 1);
+ 1, 1, pbits);
if( GetObjectW(iconinfo->hbmMask, sizeof(bitmap), &bitmap))
{
- // FIXME: Why bitmap.bmBits is NULL when it's supposed to be a valid pointer
from above ?!
- RosGdiCreateBitmap(NULL, iconinfo->hbmMask, &bitmap, /*bitmap.bmBits*/
ciconinfo + 1);
+ RosGdiCreateBitmap(NULL, iconinfo->hbmMask, &bitmap, pbits);
}
}
Modified: branches/arwinss/reactos/subsystems/win32/win32k/eng/engpoint.c
URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/subsystems/win3…
==============================================================================
--- branches/arwinss/reactos/subsystems/win32/win32k/eng/engpoint.c [iso-8859-1]
(original)
+++ branches/arwinss/reactos/subsystems/win32/win32k/eng/engpoint.c [iso-8859-1] Wed Nov
11 02:40:04 2009
@@ -124,16 +124,29 @@
if (pgp->psurfColor)
{
GrepBitBltEx(psoDest,
- &pgp->psurfColor->SurfObj,
&pgp->psurfMask->SurfObj,
NULL,
- pgp->XlateObject,
+ NULL,
+ NULL,
&rclSurf,
(POINTL*)&rclPointer,
+ NULL,
+ NULL,
+ NULL,
+ ROP3_TO_ROP4(SRCAND),
+ FALSE);
+
+ GrepBitBltEx(psoDest,
+ &pgp->psurfColor->SurfObj,
+ NULL,
+ NULL,
+ NULL,
+ &rclSurf,
(POINTL*)&rclPointer,
NULL,
NULL,
- R4_MASK,
+ NULL,
+ ROP3_TO_ROP4(SRCINVERT),
FALSE);
}
else
@@ -142,7 +155,7 @@
&pgp->psurfMask->SurfObj,
NULL,
NULL,
- pgp->XlateObject,
+ NULL,
&rclSurf,
(POINTL*)&rclPointer,
NULL,
@@ -157,7 +170,7 @@
&pgp->psurfMask->SurfObj,
NULL,
NULL,
- pgp->XlateObject,
+ NULL,
&rclSurf,
(POINTL*)&rclPointer,
NULL,
@@ -377,8 +390,8 @@
RGB(0xff,0xff,0xff),
RGB(0,0,0));*/
xlo = IntEngCreateSrcMonoXlate(ppdev->DevInfo.hpalDefault,
- RGB(0xff,0xff,0xff),
- RGB(0,0,0)
+ RGB(0x0,0x0,0x0),
+ RGB(0xff,0xff,0xff)
);
rcl.bottom = psoMask->sizlBitmap.cy;