Author: greatlrd Date: Wed Oct 24 15:05:44 2007 New Revision: 29848
URL: http://svn.reactos.org/svn/reactos?rev=29848&view=rev Log: add complete startup process code for dxg.sys
Added: branches/reactx/reactos/drivers/directx/dxg/eng.c (with props) branches/reactx/reactos/drivers/directx/dxg/tags.h (with props) Modified: branches/reactx/reactos/drivers/directx/dxg/dxg.rbuild branches/reactx/reactos/drivers/directx/dxg/dxg_int.h branches/reactx/reactos/drivers/directx/dxg/main.c
Modified: branches/reactx/reactos/drivers/directx/dxg/dxg.rbuild URL: http://svn.reactos.org/svn/reactos/branches/reactx/reactos/drivers/directx/d... ============================================================================== --- branches/reactx/reactos/drivers/directx/dxg/dxg.rbuild (original) +++ branches/reactx/reactos/drivers/directx/dxg/dxg.rbuild Wed Oct 24 15:05:44 2007 @@ -6,7 +6,9 @@ <include base="dxg">.</include> <define name="__USE_W32API" /> <library>dxgthk</library> + <library>ntoskrnl</library> <file>main.c</file> + <file>eng.c</file> <file>historic.c</file> <file>dxg.rc</file> </module>
Modified: branches/reactx/reactos/drivers/directx/dxg/dxg_int.h URL: http://svn.reactos.org/svn/reactos/branches/reactx/reactos/drivers/directx/d... ============================================================================== --- branches/reactx/reactos/drivers/directx/dxg/dxg_int.h (original) +++ branches/reactx/reactos/drivers/directx/dxg/dxg_int.h Wed Oct 24 15:05:44 2007 @@ -27,6 +27,8 @@ #include <reactos/drivers/directx/dxg.h> #include <reactos/drivers/directx/dxeng.h>
+#include "tags.h" +
/* exported functions */ NTSTATUS DriverEntry(IN PVOID Context1, IN PVOID Context2); @@ -39,5 +41,6 @@ DWORD STDCALL DxDdIoctl(ULONG ulIoctl, PVOID pBuffer, ULONG ulBufferSize);
/* Internel functions */ +BOOL DdHmgCreate(); BOOL DdHmgDestroy();
Added: branches/reactx/reactos/drivers/directx/dxg/eng.c URL: http://svn.reactos.org/svn/reactos/branches/reactx/reactos/drivers/directx/d... ============================================================================== --- branches/reactx/reactos/drivers/directx/dxg/eng.c (added) +++ branches/reactx/reactos/drivers/directx/dxg/eng.c Wed Oct 24 15:05:44 2007 @@ -1,0 +1,14 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS kernel + * PURPOSE: Native driver for dxg implementation + * FILE: drivers/directx/dxg/main.c + * PROGRAMER: Magnus olsen (magnus@greatlord.com) + * REVISION HISTORY: + * 15/10-2007 Magnus Olsen + */ + + + + +
Propchange: branches/reactx/reactos/drivers/directx/dxg/eng.c ------------------------------------------------------------------------------ svn:eol-style = native
Modified: branches/reactx/reactos/drivers/directx/dxg/main.c URL: http://svn.reactos.org/svn/reactos/branches/reactx/reactos/drivers/directx/d... ============================================================================== --- branches/reactx/reactos/drivers/directx/dxg/main.c (original) +++ branches/reactx/reactos/drivers/directx/dxg/main.c Wed Oct 24 15:05:44 2007 @@ -20,6 +20,11 @@ HSEMAPHORE ghsemDummyPage = NULL; VOID *gpDummyPage = NULL; PEPROCESS gpepSession = NULL; +PLARGE_INTEGER gpLockShortDelay = NULL; +HANDLE ghFreeDdHmgr = 0; +VOID *gpentDdHmgr = NULL; +VOID *gpentDdHmgrLast = NULL; +
PDRVFN gpEngFuncs; const ULONG gcDxgFuncs = DXG_INDEX_DxDdIoctl + 1; @@ -92,7 +97,6 @@ /* Note 12/1-2004 : Why is this set to 0x618 */ *DirectDrawContext = 0x618;
-#if 0 if (DdHmgCreate()) { ghsemDummyPage = EngCreateSemaphore(); @@ -103,7 +107,6 @@ return STATUS_SUCCESS; } } -#endif
DdHmgDestroy();
@@ -119,16 +122,13 @@ NTSTATUS DxDdCleanupDxGraphics() { - DdHmgDestroy();
if (!ghsemDummyPage) { if (!gpDummyPage) { -#if 0 ExFreePoolWithTag(gpDummyPage,0); -#endif gpDummyPage = NULL; gcDummyPageRefCnt = 0; } @@ -143,16 +143,15 @@ { gcMaxDdHmgr = 0; gcSizeDdHmgr = 0; -#if 0 ghFreeDdHmgr = 0; - gpentDdHmgrLast = 0; + gpentDdHmgrLast = NULL;
if (gpentDdHmgr) { EngFreeMem(gpentDdHmgr); - gpentDdHmgr = 0; + gpentDdHmgr = NULL; } -#endif + if (ghsemHmgr) { EngDeleteSemaphore(ghsemHmgr); @@ -162,3 +161,35 @@ return TRUE; }
+ +BOOL +DdHmgCreate() +{ + gpentDdHmgr = EngAllocMem(FL_ZERO_MEMORY, gcSizeDdHmgr, TAG_THDD); + ghFreeDdHmgr = 0; + gcMaxDdHmgr = 1; + + if (gpentDdHmgr) + { + ghsemHmgr = EngCreateSemaphore(); + + if (ghsemHmgr) + { + gpLockShortDelay = EngAllocMem(FL_ZERO_MEMORY | FL_NONPAGED_MEMORY, sizeof(LARGE_INTEGER), TAG_GINI); + + if (gpLockShortDelay) + { + gpLockShortDelay->QuadPart = ((LONGLONG)-100000); + return TRUE; + } + + EngDeleteSemaphore(ghsemHmgr); + ghsemHmgr = NULL; + } + + EngFreeMem(gpentDdHmgr); + gpentDdHmgr = NULL; + } + + return FALSE; +}
Added: branches/reactx/reactos/drivers/directx/dxg/tags.h URL: http://svn.reactos.org/svn/reactos/branches/reactx/reactos/drivers/directx/d... ============================================================================== --- branches/reactx/reactos/drivers/directx/dxg/tags.h (added) +++ branches/reactx/reactos/drivers/directx/dxg/tags.h Wed Oct 24 15:05:44 2007 @@ -1,0 +1,8 @@ + + + +#define TAG_THDD TAG('t', 'h', 'd', 'd') +#define TAG_GINI TAG('G', 'i', 'n', 'i') + + +
Propchange: branches/reactx/reactos/drivers/directx/dxg/tags.h ------------------------------------------------------------------------------ svn:eol-style = native