[ros-diffs] [greatlrd] 37560: implement bit more of DCICreatePrimary, it is not finish or tested yet, and comment up the code.

greatlrd at svn.reactos.org greatlrd at svn.reactos.org
Sat Nov 22 18:08:56 CET 2008


Author: greatlrd
Date: Sat Nov 22 11:08:55 2008
New Revision: 37560

URL: http://svn.reactos.org/svn/reactos?rev=37560&view=rev
Log:
implement bit more of DCICreatePrimary, it is not finish or tested yet, and comment up the code. 

Modified:
    branches/reactx/reactos/dll/win32/dciman32/dciman_main.c

Modified: branches/reactx/reactos/dll/win32/dciman32/dciman_main.c
URL: http://svn.reactos.org/svn/reactos/branches/reactx/reactos/dll/win32/dciman32/dciman_main.c?rev=37560&r1=37559&r2=37560&view=diff
==============================================================================
--- branches/reactx/reactos/dll/win32/dciman32/dciman_main.c [iso-8859-1] (original)
+++ branches/reactx/reactos/dll/win32/dciman32/dciman_main.c [iso-8859-1] Sat Nov 22 11:08:55 2008
@@ -112,8 +112,10 @@
     DDHALINFO HalInfo;
     DDHAL_DDPALETTECALLBACKS DDPaletteCallbacks;
 
+    /* Alloc memory for the internal struct, rember this internal struct are not compatible with windows xp */
     if ( (pDciSurface_int = (LPDCISURFACE_INT) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(DCISURFACE_INT) )) == NULL )
     {
+        /* Fail alloc memmory */
         retvalue = DCI_ERR_OUTOFMEMORY;
     }
     else
@@ -135,15 +137,51 @@
                                         NULL,
                                         NULL) == FALSE) )
         {
+            /* Fail to get importment Directx informations */
             retvalue = DCI_FAIL_UNSUPPORTED;
         }
         else
         {
+            /* We got all informations to start create our primary surface */
+
+            /* Will be use later, it check see if we lost the surface or not */
             pDciSurface_int->DciSurface_lcl.LostSurface = FALSE;
 
             /* FIXME Add the real code now to create the primary surface after we create the dx hal interface */
 
+            /* Fill in the size of DCISURFACEINFO struct */
             pDciSurface_int->DciSurfaceInfo.dwSize = sizeof(DCISURFACEINFO);
+
+            /* Fill in the surface is visible, for it always are the primary surface and it is visible */
+            pDciSurface_int->DciSurfaceInfo.dwDCICaps = DCI_VISIBLE;
+
+            /* for primary screen res lower that 256Color, ms dciman.dll set this value to BI_RGB 
+             * old note I found in ddk header comment follow dwMask is type for BI_BITMASK surfaces
+             * and for dwCompression it was which format the surface was create in, I also tested with older graphic card like S3
+             * that support 16Color or lower for the primary display. and saw this member change betwin 0 (BI_RGB) and 3 (BI_BITFIELDS).
+             */
+            if (HalInfo.vmiData.ddpfDisplay.dwRGBBitCount >= 8)
+            {
+                pDciSurface_int->DciSurfaceInfo.dwCompression = BI_BITFIELDS;
+            }
+            else
+            {
+                pDciSurface_int->DciSurfaceInfo.dwCompression = BI_RGB;
+            }
+
+            /* Fill in the RGB mask */
+            pDciSurface_int->DciSurfaceInfo.dwMask[0] = HalInfo.vmiData.ddpfDisplay.dwRBitMask;
+            pDciSurface_int->DciSurfaceInfo.dwMask[1] = HalInfo.vmiData.ddpfDisplay.dwGBitMask;
+            pDciSurface_int->DciSurfaceInfo.dwMask[2] = HalInfo.vmiData.ddpfDisplay.dwBBitMask;
+
+            /* Fill in the width and height of the primary surface */
+            pDciSurface_int->DciSurfaceInfo.dwWidth = HalInfo.vmiData.dwDisplayWidth;
+            pDciSurface_int->DciSurfaceInfo.dwHeight = HalInfo.vmiData.dwDisplayHeight;
+
+            /* Fill in the color deep and stride of the primary surface */
+            pDciSurface_int->DciSurfaceInfo.dwBitCount = HalInfo.vmiData.ddpfDisplay.dwRGBBitCount;
+            pDciSurface_int->DciSurfaceInfo.lStride = HalInfo.vmiData.lDisplayPitch;
+
             *pDciSurfaceInfo = (LPDCISURFACEINFO) &pDciSurface_int->DciSurfaceInfo;
         }
     }



More information about the Ros-diffs mailing list