Author: tkreuzer Date: Thu Apr 22 05:53:49 2010 New Revision: 46986
URL: http://svn.reactos.org/svn/reactos?rev=46986&view=rev Log: [WIN32K] - Call DC_vPrepareDCsForBlit in IntRectangle with device coordinates instead of in NtGdiRectangle with logical coordinates. Fixes updating mouse pointer. - Update TODO.txt
Modified: branches/reactos-yarotows/subsystems/win32/win32k/TODO.txt branches/reactos-yarotows/subsystems/win32/win32k/objects/fillshap.c
Modified: branches/reactos-yarotows/subsystems/win32/win32k/TODO.txt URL: http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/subsystems/win3... ============================================================================== --- branches/reactos-yarotows/subsystems/win32/win32k/TODO.txt [iso-8859-1] (original) +++ branches/reactos-yarotows/subsystems/win32/win32k/TODO.txt [iso-8859-1] Thu Apr 22 05:53:49 2010 @@ -10,7 +10,6 @@
Before the merge: ----------------- -# Fix mouse pointer regression # Resize the desktop window after mode switch # Update mouse area after mode switch # Invalidate the whole Window content after mode switch
Modified: branches/reactos-yarotows/subsystems/win32/win32k/objects/fillshap.c URL: http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/subsystems/win3... ============================================================================== --- branches/reactos-yarotows/subsystems/win32/win32k/objects/fillshap.c [iso-8859-1] (original) +++ branches/reactos-yarotows/subsystems/win32/win32k/objects/fillshap.c [iso-8859-1] Thu Apr 22 05:53:49 2010 @@ -539,19 +539,6 @@
pdcattr = dc->pdcattr;
- /* Do we rotate or shear? */ - if (!(dc->dclevel.mxWorldToDevice.flAccel & MX_SCALE)) - { - - POINTL DestCoords[4]; - ULONG PolyCounts = 4; - DestCoords[0].x = DestCoords[3].x = LeftRect; - DestCoords[0].y = DestCoords[1].y = TopRect; - DestCoords[1].x = DestCoords[2].x = RightRect; - DestCoords[2].y = DestCoords[3].y = BottomRect; - // Use IntGdiPolyPolygon so to support PATH. - return IntGdiPolyPolygon(dc, DestCoords, &PolyCounts, 1); - } // Rectangle Path only. if ( PATH_IsPathOpen(dc->dclevel) ) { @@ -577,6 +564,8 @@ DestRect.bottom--; }
+ DC_vPrepareDCsForBlit(dc, DestRect, NULL, DestRect); + if (pdcattr->ulDirty_ & (DIRTY_FILL | DC_BRUSH_DIRTY)) DC_vUpdateFillBrush(dc);
@@ -590,6 +579,7 @@ ret = FALSE; goto cleanup; } + psurf = dc->dclevel.pSurface; if (!psurf) { @@ -655,6 +645,8 @@ }
cleanup: + DC_vFinishBlit(dc, NULL); + /* Move current position in DC? MSDN: The current position is neither used nor updated by Rectangle. */
@@ -671,7 +663,6 @@ { DC *dc; BOOL ret; // default to failure - RECT rect = {LeftRect, TopRect, RightRect, BottomRect} ;
dc = DC_LockDc(hDC); if (!dc) @@ -686,16 +677,25 @@ return TRUE; }
- DC_vPrepareDCsForBlit(dc, rect, NULL, rect); - if (dc->pdcattr->ulDirty_ & (DIRTY_FILL | DC_BRUSH_DIRTY)) - DC_vUpdateFillBrush(dc); - - if (dc->pdcattr->ulDirty_ & (DIRTY_LINE | DC_PEN_DIRTY)) - DC_vUpdateLineBrush(dc); - - ret = IntRectangle ( dc, LeftRect, TopRect, RightRect, BottomRect ); - DC_vFinishBlit(dc, NULL); - DC_UnlockDc ( dc ); + /* Do we rotate or shear? */ + if (!(dc->dclevel.mxWorldToDevice.flAccel & MX_SCALE)) + { + POINTL DestCoords[4]; + ULONG PolyCounts = 4; + + DestCoords[0].x = DestCoords[3].x = LeftRect; + DestCoords[0].y = DestCoords[1].y = TopRect; + DestCoords[1].x = DestCoords[2].x = RightRect; + DestCoords[2].y = DestCoords[3].y = BottomRect; + // Use IntGdiPolyPolygon so to support PATH. + ret = IntGdiPolyPolygon(dc, DestCoords, &PolyCounts, 1); + } + else + { + ret = IntRectangle(dc, LeftRect, TopRect, RightRect, BottomRect ); + } + + DC_UnlockDc(dc);
return ret; }