Author: greatlrd
Date: Sun Nov 23 03:54:48 2008
New Revision: 37577
URL:
http://svn.reactos.org/svn/reactos?rev=37577&view=rev
Log:
Impement part of DCIDestroy
Implement DCISetClipList
Implement DCISetSrcDestClip
Implement WinWatchNotify.
BugFix : DciCreatePrimary. forget check see if hal support create surface or not.
Modified:
branches/reactx/reactos/dll/win32/dciman32/dciman32.def
branches/reactx/reactos/dll/win32/dciman32/dciman_main.c
Modified: branches/reactx/reactos/dll/win32/dciman32/dciman32.def
URL:
http://svn.reactos.org/svn/reactos/branches/reactx/reactos/dll/win32/dciman…
==============================================================================
--- branches/reactx/reactos/dll/win32/dciman32/dciman32.def [iso-8859-1] (original)
+++ branches/reactx/reactos/dll/win32/dciman32/dciman32.def [iso-8859-1] Sun Nov 23
03:54:48 2008
@@ -5,18 +5,18 @@
DCICreateOffscreen@40
DCICreateOverlay@12
DCICreatePrimary@8
-; DCIDestroy
+ DCIDestroy@4
DCIDraw@4
; DCIEndAccess
DCIEnum@20
DCIOpenProvider@0
-; DCISetClipList
+ DCISetClipList@8
DCISetDestination@12
-; DCISetSrcDestClip
+ DCISetSrcDestClip@16
; GetDCRegionData
; GetWindowRegionData
; WinWatchClose
; WinWatchDidStatusChange
; WinWatchGetClipList
-; WinWatchNotify
+ WinWatchNotify@12
; WinWatchOpen
Modified: branches/reactx/reactos/dll/win32/dciman32/dciman_main.c
URL:
http://svn.reactos.org/svn/reactos/branches/reactx/reactos/dll/win32/dciman…
==============================================================================
--- 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] Sun Nov 23
03:54:48 2008
@@ -20,6 +20,7 @@
DDRAWI_DDRAWSURFACE_LCL SurfaceLocal;
DDHAL_DDCALLBACKS DDCallbacks;
DDHAL_DDSURFACECALLBACKS DDSurfaceCallbacks;
+
} DCISURFACE_LCL, *LPDCISURFACE_LCL;
typedef struct _DCISURFACE_INT
@@ -181,10 +182,15 @@
lpcsd.lplpSList = SurfaceLocal_List;
lpcsd.dwSCnt = 1;
lpcsd.ddRVal = DDERR_GENERIC;
- lpcsd.CreateSurface =
pDciSurface_int->DciSurface_lcl.DDCallbacks.CreateSurface;
+
+ /* Check see if dx hal support CreateSurface */
+ if ( (pDciSurface_int->DciSurface_lcl.DDCallbacks.dwFlags &
DDHAL_CB32_CREATESURFACE) == DDHAL_CB32_CREATESURFACE)
+ {
+ lpcsd.CreateSurface =
pDciSurface_int->DciSurface_lcl.DDCallbacks.CreateSurface;
+ }
/* Now try create our surface */
- if (lpcsd.CreateSurface != NULL)
+ if (lpcsd.CreateSurface != NULL )
{
retvalue = lpcsd.CreateSurface(&lpcsd);
}
@@ -261,6 +267,44 @@
return retvalue;
}
+void WINAPI DCIDestroy(LPDCISURFACEINFO pDciSurfaceInfo)
+{
+ LPDCISURFACE_INT pDciSurface_int = NULL;
+ if (pDciSurfaceInfo != NULL)
+ {
+ /* Get the internal data for our pdci struct */
+ pDciSurface_int = (LPDCISURFACE_INT) (((DWORD) pDciSurfaceInfo) -
sizeof(DCISURFACE_LCL)) ;
+
+ /* If we lost the primary surface we do not destory it, */
+ if (pDciSurface_int->DciSurface_lcl.LostSurface == FALSE)
+ {
+ /* Fixme destore the primary surface */
+
+ /* Check see if dx hal support DestroySurface */
+ if ( (pDciSurface_int->DciSurface_lcl.DDSurfaceCallbacks.dwFlags &
DDHAL_SURFCB32_DESTROYSURFACE) == DDHAL_SURFCB32_DESTROYSURFACE)
+ {
+ // lpcsd.DestroySurface =
pDciSurface_int->DciSurface_lcl.DDSurfaceCallbacks.DestroySurface;
+ }
+
+
+ /* Destroy the Ddraw object */
+ if (pDciSurface_int->DciSurface_lcl.DirectDrawGlobal.hDD != 0)
+ {
+
DdDeleteDirectDrawObject(&pDciSurface_int->DciSurface_lcl.DirectDrawGlobal);
+ }
+
+ /* Free the alloc memmory for the internal and for pDciSurfaceInfo */
+ HeapFree(GetProcessHeap(), 0, pDciSurface_int);
+ }
+ }
+}
+
+
+/***********************************************************************************************************/
+/***********************************************************************************************************/
+/***********************************************************************************************************/
+/* All function under here are not supported in windows nt / ReactOS, they only return
error code or false */
+/***********************************************************************************************************/
/*++
* @name int WINAPI DCICreateOffscreen(HDC hdc)
@@ -371,6 +415,70 @@
{
return DCI_FAIL_UNSUPPORTED;
}
-
-
-
+/*++
+* @name DCIRVAL WINAPI DCISetClipList(LPDCIOFFSCREEN pdci, LPRGNDATA prd)
+* @implemented
+*
+* Not supported in windows, it only return DCI_FAIL_UNSUPPORTED.
+
+* @return
+* DCI_FAIL_UNSUPPORTED
+*
+* @remarks.
+* None
+*
+*--*/
+DCIRVAL WINAPI
+DCISetClipList(LPDCIOFFSCREEN pdci,
+ LPRGNDATA prd)
+{
+ return DCI_FAIL_UNSUPPORTED;
+}
+
+/*++
+* @name DCIRVAL WINAPI DCISetSrcDestClip(LPDCIOFFSCREEN pdci, LPRECT srcrc, LPRECT
destrc, LPRGNDATA prd)
+* @implemented
+*
+* Not supported in windows, it only return DCI_FAIL_UNSUPPORTED.
+
+* @return
+* DCI_FAIL_UNSUPPORTED
+*
+* @remarks.
+* None
+*
+*--*/
+DCIRVAL WINAPI
+DCISetSrcDestClip(LPDCIOFFSCREEN pdci,
+ LPRECT srcrc,
+ LPRECT destrc,
+ LPRGNDATA prd)
+{
+ return DCI_FAIL_UNSUPPORTED;
+}
+
+/*++
+* @name BOOL WINAPI WinWatchNotify(HWINWATCH hWW, WINWATCHNOTIFYPROC NotifyCallback,
LPARAM NotifyParam );
+* @implemented
+*
+* Not supported in windows, it only return FALSE.
+
+* @return
+* FALSE
+*
+* @remarks.
+* None
+*
+*--*/
+BOOL WINAPI
+WinWatchNotify(HWINWATCH hWW,
+ WINWATCHNOTIFYPROC NotifyCallback,
+ LPARAM NotifyParam )
+{
+ return FALSE;
+}
+
+
+
+
+