revert my last change
authorMagnus Olsen <magnus@greatlord.com>
Sat, 31 May 2008 12:17:25 +0000 (12:17 +0000)
committerMagnus Olsen <magnus@greatlord.com>
Sat, 31 May 2008 12:17:25 +0000 (12:17 +0000)
1. it break vmware drv, for it align each bitmap row it create
2. diffent behoirs in diffent vm
this did show we have more serius bug to fix before we can apply correct fix.

svn path=/trunk/; revision=33783

reactos/subsystems/win32/win32k/objects/dibobj.c

index e8e5831..bbc598a 100644 (file)
@@ -665,9 +665,7 @@ NtGdiGetDIBitsInternal(HDC hDC,
             }
             else
             {
-
                 ScanLines = min(ScanLines, BitmapObj->SurfObj.sizlBitmap.cy - StartScan);
-                
                 DestSize.cx = BitmapObj->SurfObj.sizlBitmap.cx;
                 DestSize.cy = ScanLines;
 
@@ -688,9 +686,9 @@ NtGdiGetDIBitsInternal(HDC hDC,
 
                 if (Info->bmiHeader.biSize == sizeof(BITMAPINFOHEADER))
                 {
-
                     hDestBitmap = EngCreateBitmap(DestSize,
-                                                  DIB_GetDIBWidthBytes(DestSize.cx, Info->bmiHeader.biBitCount),
+                                                  /* DIB_GetDIBWidthBytes(DestSize.cx, Info->bmiHeader.biBitCount), */
+                                                  DestSize.cx * (Info->bmiHeader.biBitCount >> 3), /* HACK */
                                                   BitmapFormat(Info->bmiHeader.biBitCount, Info->bmiHeader.biCompression),
                                                   0 < Info->bmiHeader.biHeight ? 0 : BMF_TOPDOWN,
                                                   Bits);
@@ -1220,12 +1218,7 @@ DIB_CreateDIBSection(
  */
 INT FASTCALL DIB_GetDIBWidthBytes (INT width, INT depth)
 {
-    /* http://www.osronline.com/DDKx/graphics/gdifncs_9pgn.htm say it must be exacly 
-     * number of byte to next scanline in the bitmap
-     */
-    UINT bytes = ((UINT)(abs(width)) * (UINT)depth) >> 3;
-    // FIXME : this is wrong return (width * depth + 31) & ~31) >> 3;
-    return (INT)bytes;
+  return ((width * depth + 31) & ~31) >> 3;
 }
 
 /***********************************************************************