Author: akhaldi
Date: Tue Jan 19 21:57:30 2016
New Revision: 70620

URL: http://svn.reactos.org/svn/reactos?rev=70620&view=rev
Log:
[0.4.0] * Merge the win32k fixes by Timo in revisions 70482, 70485, 70486 and 
70487. CORE-10807

Modified:
    branches/ros-branch-0_4_0/   (props changed)
    branches/ros-branch-0_4_0/reactos/   (props changed)
    branches/ros-branch-0_4_0/reactos/win32ss/gdi/ntgdi/bitmaps.c
    branches/ros-branch-0_4_0/reactos/win32ss/gdi/ntgdi/bitmaps.h
    branches/ros-branch-0_4_0/reactos/win32ss/gdi/ntgdi/dibobj.c
    branches/ros-branch-0_4_0/reactos/win32ss/gdi/ntgdi/palette.c

Propchange: branches/ros-branch-0_4_0/
------------------------------------------------------------------------------
--- svn:mergeinfo       (original)
+++ svn:mergeinfo       Tue Jan 19 21:57:30 2016
@@ -1 +1 @@
-/trunk:70000-70321,70323-70324,70328-70337,70339-70340,70347,70349,70354-70358,70360,70363,70369,70373,70375-70378,70381,70384-70385,70387-70389,70398,70400,70408,70424,70433-70437,70443,70445-70449,70454,70464,70468,70470,70477,70480,70497,70499-70501,70507-70510,70512-70513,70523,70527-70530,70536-70537,70545-70548,70552-70554,70557-70558,70576-70578,70583,70597,70606
+/trunk:70000-70321,70323-70324,70328-70337,70339-70340,70347,70349,70354-70358,70360,70363,70369,70373,70375-70378,70381,70384-70385,70387-70389,70398,70400,70408,70424,70433-70437,70443,70445-70449,70454,70464,70468,70470,70477,70480,70482,70485-70487,70497,70499-70501,70507-70510,70512-70513,70523,70527-70530,70536-70537,70545-70548,70552-70554,70557-70558,70576-70578,70583,70597,70606

Propchange: branches/ros-branch-0_4_0/reactos/
------------------------------------------------------------------------------
--- svn:mergeinfo       (original)
+++ svn:mergeinfo       Tue Jan 19 21:57:30 2016
@@ -20,4 +20,4 @@
 
/branches/usb-bringup:51335,51337,51341-51343,51348,51350,51353,51355,51365-51369,51372,51384-54388,54396-54398,54736-54737,54752-54754,54756-54760,54762,54764-54765,54767-54768,54772,54774-54777,54781,54787,54790-54792,54797-54798,54806,54808,54834-54838,54843,54850,54852,54856,54858-54859
 /branches/usb-bringup-trunk:55019-55543,55548-55554,55556-55567
 /branches/wlan-bringup:54809-54998
-/trunk/reactos:70000-70321,70323-70324,70328-70337,70339-70340,70347,70349,70354-70358,70360,70363,70369,70373,70375-70378,70381,70384-70385,70387-70389,70398,70400,70408,70424,70433-70437,70443,70445-70449,70454,70464,70468,70470,70477,70480,70497,70501,70507-70510,70523,70527-70530,70536-70537,70545-70548,70552-70554,70557-70558,70576-70578,70583,70597,70606
+/trunk/reactos:70000-70321,70323-70324,70328-70337,70339-70340,70347,70349,70354-70358,70360,70363,70369,70373,70375-70378,70381,70384-70385,70387-70389,70398,70400,70408,70424,70433-70437,70443,70445-70449,70454,70464,70468,70470,70477,70480,70482,70485-70487,70497,70501,70507-70510,70523,70527-70530,70536-70537,70545-70548,70552-70554,70557-70558,70576-70578,70583,70597,70606

Modified: branches/ros-branch-0_4_0/reactos/win32ss/gdi/ntgdi/bitmaps.c
URL: 
http://svn.reactos.org/svn/reactos/branches/ros-branch-0_4_0/reactos/win32ss/gdi/ntgdi/bitmaps.c?rev=70620&r1=70619&r2=70620&view=diff
==============================================================================
--- branches/ros-branch-0_4_0/reactos/win32ss/gdi/ntgdi/bitmaps.c       
[iso-8859-1] (original)
+++ branches/ros-branch-0_4_0/reactos/win32ss/gdi/ntgdi/bitmaps.c       
[iso-8859-1] Tue Jan 19 21:57:30 2016
@@ -42,15 +42,15 @@
     return GreSetObjectOwner(hbmp, ulOwner);
 }
 
-static
-int
+BOOL
 NTAPI
 UnsafeSetBitmapBits(
-    PSURFACE psurf,
-    IN ULONG cjBits,
-    IN PVOID pvBits)
-{
-    PUCHAR pjDst, pjSrc;
+    _Inout_ PSURFACE psurf,
+    _In_ ULONG cjBits,
+    _In_ const VOID *pvBits)
+{
+    PUCHAR pjDst;
+    const UCHAR *pjSrc;
     LONG lDeltaDst, lDeltaSrc;
     ULONG nWidth, nHeight, cBitsPixel;
     NT_ASSERT(psurf->flags & API_BITMAP);
@@ -69,7 +69,7 @@
 
     /* Make sure the buffer is large enough*/
     if (cjBits < (lDeltaSrc * nHeight))
-        return 0;
+        return FALSE;
 
     while (nHeight--)
     {
@@ -79,7 +79,7 @@
         pjDst += lDeltaDst;
     }
 
-    return 1;
+    return TRUE;
 }
 
 HBITMAP

Modified: branches/ros-branch-0_4_0/reactos/win32ss/gdi/ntgdi/bitmaps.h
URL: 
http://svn.reactos.org/svn/reactos/branches/ros-branch-0_4_0/reactos/win32ss/gdi/ntgdi/bitmaps.h?rev=70620&r1=70619&r2=70620&view=diff
==============================================================================
--- branches/ros-branch-0_4_0/reactos/win32ss/gdi/ntgdi/bitmaps.h       
[iso-8859-1] (original)
+++ branches/ros-branch-0_4_0/reactos/win32ss/gdi/ntgdi/bitmaps.h       
[iso-8859-1] Tue Jan 19 21:57:30 2016
@@ -43,3 +43,10 @@
     IN FLONG fl,
     IN UINT cjMaxBits,
     IN HANDLE hcmXform);
+
+BOOL
+NTAPI
+UnsafeSetBitmapBits(
+    _Inout_ PSURFACE psurf,
+    _In_ ULONG cjBits,
+    _In_ const VOID *pvBits);

Modified: branches/ros-branch-0_4_0/reactos/win32ss/gdi/ntgdi/dibobj.c
URL: 
http://svn.reactos.org/svn/reactos/branches/ros-branch-0_4_0/reactos/win32ss/gdi/ntgdi/dibobj.c?rev=70620&r1=70619&r2=70620&view=diff
==============================================================================
--- branches/ros-branch-0_4_0/reactos/win32ss/gdi/ntgdi/dibobj.c        
[iso-8859-1] (original)
+++ branches/ros-branch-0_4_0/reactos/win32ss/gdi/ntgdi/dibobj.c        
[iso-8859-1] Tue Jan 19 21:57:30 2016
@@ -261,16 +261,10 @@
     PPALETTE    ppalDIB = 0;
     ULONG cjSizeImage;
 
-    if (!bmi) return 0;
-
-    /* Check if the header provided an image size */
-    if (bmi->bmiHeader.biSizeImage != 0)
-    {
-        /* Use the given size */
-        cjSizeImage = bmi->bmiHeader.biSizeImage;
-    }
-    /* Otherwise check for uncompressed formats */
-    else if ((bmi->bmiHeader.biCompression == BI_RGB) ||
+    if (!bmi || !Bits) return 0;
+
+    /* Check for uncompressed formats */
+    if ((bmi->bmiHeader.biCompression == BI_RGB) ||
              (bmi->bmiHeader.biCompression == BI_BITFIELDS))
     {
         /* Calculate the image size */
@@ -278,6 +272,12 @@
                                            ScanLines,
                                            bmi->bmiHeader.biBitCount);
     }
+    /* Check if the header provided an image size */
+    else if (bmi->bmiHeader.biSizeImage != 0)
+    {
+        /* Use the given size */
+        cjSizeImage = bmi->bmiHeader.biSizeImage;
+    }
     else
     {
         /* Compressed format without a size. This is invalid. */
@@ -286,9 +286,9 @@
     }
 
     /* Check if the size that we have is ok */
-    if (cjSizeImage > cjMaxBits)
-    {
-        DPRINT1("Size too large! cjSizeImage = %lu, cjMaxBits = %lu\n",
+    if ((cjSizeImage > cjMaxBits) || (cjSizeImage == 0))
+    {
+        DPRINT1("Invalid bitmap size! cjSizeImage = %lu, cjMaxBits = %lu\n",
                 cjSizeImage, cjMaxBits);
         return 0;
     }
@@ -340,8 +340,6 @@
     rcDst.right = psurfDst->SurfObj.sizlBitmap.cx;
     ptSrc.x = 0;
     ptSrc.y = 0;
-
-    NT_ASSERT(psurfSrc->SurfObj.cjBits <= cjMaxBits);
 
     result = IntEngCopyBits(&psurfDst->SurfObj,
                             &psurfSrc->SurfObj,
@@ -1456,6 +1454,11 @@
     PBYTE safeBits = NULL;
     HBITMAP hbmResult = NULL;
 
+    if (pjInit == NULL)
+    {
+        fInit &= ~CBM_INIT;
+    }
+
     if(pjInit && (fInit & CBM_INIT))
     {
         if (cjMaxBits == 0) return NULL;

Modified: branches/ros-branch-0_4_0/reactos/win32ss/gdi/ntgdi/palette.c
URL: 
http://svn.reactos.org/svn/reactos/branches/ros-branch-0_4_0/reactos/win32ss/gdi/ntgdi/palette.c?rev=70620&r1=70619&r2=70620&view=diff
==============================================================================
--- branches/ros-branch-0_4_0/reactos/win32ss/gdi/ntgdi/palette.c       
[iso-8859-1] (original)
+++ branches/ros-branch-0_4_0/reactos/win32ss/gdi/ntgdi/palette.c       
[iso-8859-1] Tue Jan 19 21:57:30 2016
@@ -786,9 +786,6 @@
     {
         PPALETTE palPtr;
         UINT pal_entries;
-        HDC hDC;
-        PDC dc;
-        PWND Wnd;
         const PALETTEENTRY *pptr = PaletteColors;
 
         palPtr = PALETTE_ShareLockPalette(hPal);
@@ -816,6 +813,16 @@
 
         PALETTE_ShareUnlockPalette(palPtr);
 
+#if 0
+/* FIXME: This is completely broken! We cannot call UserGetDesktopWindow
+   without first acquiring the USER lock. But the whole process here is
+   screwed anyway. Instead of messing with the desktop DC, we need to
+   check, whether the palette is associated with a PDEV and whether that
+   PDEV supports palette operations. Then we need to call pfnDrvSetPalette.
+   But since IntGdiRealizePalette() is not even implemented for direct DCs,
+   we can as well just do nothing, that will at least not ASSERT!
+   I leave the whole thing here, to scare people away, who want to "fix" it. */
+
         /* Immediately apply the new palette if current window uses it */
         Wnd = UserGetDesktopWindow();
         hDC =  UserGetWindowDC(Wnd);
@@ -831,6 +838,7 @@
                 DC_UnlockDc(dc);
         }
         UserReleaseDC(Wnd,hDC, FALSE);
+#endif // 0
     }
     return ret;
 }


Reply via email to