[WIN32SS][NTDDRAW] Fix ddraw palette regression CORE-13714
authorJoachim Henze <Joachim.Henze@reactos.org>
Wed, 11 Apr 2018 13:39:54 +0000 (15:39 +0200)
committerJoachim Henze <Joachim.Henze@reactos.org>
Wed, 11 Apr 2018 13:39:54 +0000 (15:39 +0200)
This nice patch of Jerome Gardou improves palette
when VBEMP & inbuilt Mesa is used for
Diablo II, MS Age Of Empires 1, Anno 1602
to the state we had in SVN r75060 and below.

We already committed this fix into 0.4.8-release before.

win32ss/reactx/ntddraw/d3dkmt.c

index 2dae7ba..cc0852e 100644 (file)
@@ -86,6 +86,17 @@ NtGdiDdDDICreateDCFromMemory(D3DKMT_CREATEDCFROMMEMORY *desc)
     /* Get the handle for the bitmap */
     desc->hBitmap = (HBITMAP)psurf->SurfObj.hsurf;
 
+    /* Allocate a palette for this surface */
+    if (format->bit_count <= 8)
+    {
+        PPALETTE palette = PALETTE_AllocPalette(PAL_INDEXED, 1 << format->bit_count, NULL, 0, 0, 0);
+        if (palette)
+        {
+            SURFACE_vSetPalette(psurf, palette);
+            PALETTE_ShareUnlockPalette(palette);
+        }
+    }
+
     /* Unlock the surface and return */
     SURFACE_UnlockSurface(psurf);