[ros-diffs] [greatlrd] 24690: 1. Fixed some vc warings and fault 2. Implement AcquireDDThreadLock, ReleaseDDThreadLock (does not working as it should yet) 3. Start making ddraw thread safe 4. Fixed some mirors bugs
greatlrd at svn.reactos.org
greatlrd at svn.reactos.org
Sun Nov 5 22:19:54 CET 2006
Author: greatlrd
Date: Mon Nov 6 00:19:53 2006
New Revision: 24690
URL: http://svn.reactos.org/svn/reactos?rev=24690&view=rev
Log:
1. Fixed some vc warings and fault
2. Implement AcquireDDThreadLock, ReleaseDDThreadLock (does not working as it should yet)
3. Start making ddraw thread safe
4. Fixed some mirors bugs
Modified:
trunk/reactos/dll/directx/ddraw/clipper.c
trunk/reactos/dll/directx/ddraw/color.c
trunk/reactos/dll/directx/ddraw/ddraw.def
trunk/reactos/dll/directx/ddraw/gamma.c
trunk/reactos/dll/directx/ddraw/hal/surface_hal.c
trunk/reactos/dll/directx/ddraw/kernel.c
trunk/reactos/dll/directx/ddraw/main.c
trunk/reactos/dll/directx/ddraw/main/ddraw_main.c
trunk/reactos/dll/directx/ddraw/main/surface_main.c
trunk/reactos/dll/directx/ddraw/palette.c
trunk/reactos/dll/directx/ddraw/rosdraw.h
trunk/reactos/dll/directx/ddraw/soft/surface_callbacks_hel.c
trunk/reactos/dll/directx/ddraw/soft/surface_hel.c
trunk/reactos/dll/directx/ddraw/startup.c
trunk/reactos/dll/directx/ddraw/thunks/ddraw_thunk.c
trunk/reactos/dll/directx/ddraw/thunks/surface_thunk.c
Modified: trunk/reactos/dll/directx/ddraw/clipper.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/ddraw/clipper.c?rev=24690&r1=24689&r2=24690&view=diff
==============================================================================
--- trunk/reactos/dll/directx/ddraw/clipper.c (original)
+++ trunk/reactos/dll/directx/ddraw/clipper.c Mon Nov 6 00:19:53 2006
@@ -13,11 +13,12 @@
ULONG WINAPI
DirectDrawClipper_Release(LPDIRECTDRAWCLIPPER iface)
-{
- DX_WINDBG_trace();
+{
IDirectDrawClipperImpl* This = (IDirectDrawClipperImpl*)iface;
ULONG ref=0;
+
+ DX_WINDBG_trace();
if (iface!=NULL)
{
@@ -40,12 +41,11 @@
ULONG WINAPI
DirectDrawClipper_AddRef (LPDIRECTDRAWCLIPPER iface)
-{
+{
+ IDirectDrawClipperImpl * This = (IDirectDrawClipperImpl*)iface;
+ ULONG ref=0;
+
DX_WINDBG_trace();
-
- IDirectDrawClipperImpl * This = (IDirectDrawClipperImpl*)iface;
-
- ULONG ref=0;
if (iface!=NULL)
{
Modified: trunk/reactos/dll/directx/ddraw/color.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/ddraw/color.c?rev=24690&r1=24689&r2=24690&view=diff
==============================================================================
--- trunk/reactos/dll/directx/ddraw/color.c (original)
+++ trunk/reactos/dll/directx/ddraw/color.c Mon Nov 6 00:19:53 2006
@@ -12,12 +12,11 @@
ULONG WINAPI
DirectDrawColorControl_AddRef( LPDIRECTDRAWCOLORCONTROL iface)
-{
+{
+ IDirectDrawColorImpl * This = (IDirectDrawColorImpl*)iface;
+ ULONG ref=0;
+
DX_WINDBG_trace();
-
- IDirectDrawColorImpl * This = (IDirectDrawColorImpl*)iface;
-
- ULONG ref=0;
if (iface!=NULL)
{
@@ -28,11 +27,11 @@
ULONG WINAPI
DirectDrawColorControl_Release( LPDIRECTDRAWCOLORCONTROL iface)
-{
- DX_WINDBG_trace();
-
+{
IDirectDrawColorImpl* This = (IDirectDrawColorImpl*)iface;
ULONG ref=0;
+
+ DX_WINDBG_trace();
if (iface!=NULL)
{
Modified: trunk/reactos/dll/directx/ddraw/ddraw.def
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/ddraw/ddraw.def?rev=24690&r1=24689&r2=24690&view=diff
==============================================================================
--- trunk/reactos/dll/directx/ddraw/ddraw.def (original)
+++ trunk/reactos/dll/directx/ddraw/ddraw.def Mon Nov 6 00:19:53 2006
@@ -1,7 +1,9 @@
EXPORTS
-;AcquireDDThreadLock
+AcquireDDThreadLock at 0
+D3DParseUnknownCommand at 8
+ReleaseDDThreadLock at 0
+
;CompleteCreateSysmemSurface
-D3DParseUnknownCommand at 8
;DDGetAttachedSurfaceLcl
;DDInternalLock
;DDInternalUnlock
@@ -19,4 +21,4 @@
;GetOLEThunkData
;GetSurfaceFromDC
;RegisterSpecialCase
-;ReleaseDDThreadLock
+
Modified: trunk/reactos/dll/directx/ddraw/gamma.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/ddraw/gamma.c?rev=24690&r1=24689&r2=24690&view=diff
==============================================================================
--- trunk/reactos/dll/directx/ddraw/gamma.c (original)
+++ trunk/reactos/dll/directx/ddraw/gamma.c Mon Nov 6 00:19:53 2006
@@ -12,12 +12,12 @@
ULONG WINAPI
DirectDrawGammaControl_AddRef( LPDIRECTDRAWGAMMACONTROL iface)
-{
- DX_WINDBG_trace();
-
+{
IDirectDrawGammaImpl * This = (IDirectDrawGammaImpl*)iface;
ULONG ref=0;
+
+ DX_WINDBG_trace();
if (iface!=NULL)
{
@@ -28,11 +28,10 @@
ULONG WINAPI
DirectDrawGammaControl_Release( LPDIRECTDRAWGAMMACONTROL iface)
-{
- DX_WINDBG_trace();
-
+{
IDirectDrawGammaImpl* This = (IDirectDrawGammaImpl*)iface;
ULONG ref=0;
+ DX_WINDBG_trace();
if (iface!=NULL)
{
Modified: trunk/reactos/dll/directx/ddraw/hal/surface_hal.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/ddraw/hal/surface_hal.c?rev=24690&r1=24689&r2=24690&view=diff
==============================================================================
--- trunk/reactos/dll/directx/ddraw/hal/surface_hal.c (original)
+++ trunk/reactos/dll/directx/ddraw/hal/surface_hal.c Mon Nov 6 00:19:53 2006
@@ -8,7 +8,7 @@
*
*/
-#include "rosdraw.h"
+#include "../rosdraw.h"
Modified: trunk/reactos/dll/directx/ddraw/kernel.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/ddraw/kernel.c?rev=24690&r1=24689&r2=24690&view=diff
==============================================================================
--- trunk/reactos/dll/directx/ddraw/kernel.c (original)
+++ trunk/reactos/dll/directx/ddraw/kernel.c Mon Nov 6 00:19:53 2006
@@ -15,12 +15,13 @@
ULONG WINAPI
DirectDrawKernel_AddRef ( LPDIRECTDRAWKERNEL iface)
-{
- DX_WINDBG_trace();
+{
IDirectDrawKernelImpl * This = (IDirectDrawKernelImpl*)iface;
ULONG ref=0;
+
+ DX_WINDBG_trace();
if (iface!=NULL)
{
@@ -31,11 +32,11 @@
ULONG WINAPI
DirectDrawKernel_Release ( LPDIRECTDRAWKERNEL iface)
-{
- DX_WINDBG_trace();
-
+{
IDirectDrawKernelImpl* This = (IDirectDrawKernelImpl*)iface;
ULONG ref=0;
+
+ DX_WINDBG_trace();
if (iface!=NULL)
{
@@ -83,12 +84,11 @@
ULONG WINAPI
DDSurfaceKernel_AddRef ( LPDIRECTDRAWSURFACEKERNEL iface)
-{
- DX_WINDBG_trace();
-
+{
IDirectDrawSurfaceKernelImpl * This = (IDirectDrawSurfaceKernelImpl*)iface;
ULONG ref=0;
+ DX_WINDBG_trace();
if (iface!=NULL)
{
@@ -99,11 +99,11 @@
ULONG WINAPI
DDSurfaceKernel_Release ( LPDIRECTDRAWSURFACEKERNEL iface)
-{
- DX_WINDBG_trace();
-
+{
IDirectDrawSurfaceKernelImpl* This = (IDirectDrawSurfaceKernelImpl*)iface;
ULONG ref=0;
+
+ DX_WINDBG_trace();
if (iface!=NULL)
{
Modified: trunk/reactos/dll/directx/ddraw/main.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/ddraw/main.c?rev=24690&r1=24689&r2=24690&view=diff
==============================================================================
--- trunk/reactos/dll/directx/ddraw/main.c (original)
+++ trunk/reactos/dll/directx/ddraw/main.c Mon Nov 6 00:19:53 2006
@@ -13,6 +13,7 @@
#include "rosdraw.h"
#include "d3dhal.h"
+CRITICAL_SECTION ddcs;
// This function is exported by the dll
HRESULT WINAPI DirectDrawCreateClipper (DWORD dwFlags,
@@ -34,6 +35,13 @@
LPDIRECTDRAW* lplpDD,
LPUNKNOWN pUnkOuter)
{
+ DX_WINDBG_trace();
+
+ if (IsBadWritePtr( lplpDD, sizeof( LPVOID )) )
+ {
+ return DDERR_INVALIDPARAMS;
+ }
+
/* check see if pUnkOuter is null or not */
if (pUnkOuter)
{
@@ -55,7 +63,14 @@
LPVOID* lplpDD,
REFIID id,
LPUNKNOWN pUnkOuter)
-{
+{
+ DX_WINDBG_trace();
+
+ if (IsBadWritePtr( lplpDD, sizeof( LPVOID )) )
+ {
+ return DDERR_INVALIDPARAMS;
+ }
+
/* check see if pUnkOuter is null or not */
if (pUnkOuter)
{
@@ -202,5 +217,44 @@
return retCode;
}
-
-
+
+VOID
+WINAPI
+AcquireDDThreadLock()
+{
+ EnterCriticalSection(&ddcs);
+}
+
+VOID
+WINAPI
+ReleaseDDThreadLock()
+{
+ LeaveCriticalSection(&ddcs);
+}
+
+BOOL APIENTRY
+DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved )
+{
+ BOOL retStatus;
+ switch(ul_reason_for_call)
+ {
+ case DLL_PROCESS_DETACH:
+ DeleteCriticalSection( &ddcs );
+ retStatus = TRUE;
+ break;
+
+ case DLL_PROCESS_ATTACH:
+ DisableThreadLibraryCalls( hModule );
+ InitializeCriticalSection( &ddcs );
+ EnterCriticalSection( &ddcs );
+ LeaveCriticalSection( &ddcs );
+ retStatus = FALSE;
+ break;
+
+ default:
+ retStatus = TRUE;
+ break;
+ }
+ return retStatus;
+
+}
Modified: trunk/reactos/dll/directx/ddraw/main/ddraw_main.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/ddraw/main/ddraw_main.c?rev=24690&r1=24689&r2=24690&view=diff
==============================================================================
--- trunk/reactos/dll/directx/ddraw/main/ddraw_main.c (original)
+++ trunk/reactos/dll/directx/ddraw/main/ddraw_main.c Mon Nov 6 00:19:53 2006
@@ -13,17 +13,17 @@
* Status ok
*/
-#include "rosdraw.h"
+#include "../rosdraw.h"
HRESULT
WINAPI
Main_DirectDraw_QueryInterface (LPDIRECTDRAW7 iface,
REFIID id,
LPVOID *obj)
-{
- DX_WINDBG_trace();
-
+{
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
+
+ DX_WINDBG_trace();
if (IsEqualGUID(&IID_IDirectDraw7, id))
{
@@ -57,10 +57,10 @@
ULONG
WINAPI
Main_DirectDraw_AddRef (LPDIRECTDRAW7 iface)
-{
- DX_WINDBG_trace();
-
+{
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
+
+ DX_WINDBG_trace();
if (iface!=NULL)
{
@@ -82,10 +82,10 @@
ULONG
WINAPI
Main_DirectDraw_Release (LPDIRECTDRAW7 iface)
-{
- DX_WINDBG_trace();
-
+{
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
+
+ DX_WINDBG_trace();
if (iface!=NULL)
{
@@ -139,12 +139,14 @@
LPDIRECTDRAWCLIPPER *ppClipper,
IUnknown *pUnkOuter)
{
+ IDirectDrawClipperImpl* That;
+
DX_WINDBG_trace();
if (pUnkOuter!=NULL)
return CLASS_E_NOAGGREGATION;
- IDirectDrawClipperImpl* That;
+
That = (IDirectDrawClipperImpl*)HeapAlloc(GetProcessHeap(), 0, sizeof(IDirectDrawClipperImpl));
if (That == NULL)
@@ -278,13 +280,15 @@
HRESULT WINAPI Main_DirectDraw_CreateSurface (LPDIRECTDRAW7 iface, LPDDSURFACEDESC2 pDDSD,
LPDIRECTDRAWSURFACE7 *ppSurf, IUnknown *pUnkOuter)
{
- DX_WINDBG_trace();
+
DxSurf *surf;
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
IDirectDrawSurfaceImpl* That;
DEVMODE DevMode;
LONG extra_surfaces = 0;
+
+ DX_WINDBG_trace();
if (pUnkOuter!=NULL)
{
@@ -548,7 +552,10 @@
}
else if (pDDSD->ddsCaps.dwCaps & DDSCAPS_OVERLAY)
{
- return internal_CreateNewSurface( This, That);
+ DDHAL_CANCREATESURFACEDATA mDdCanCreateSurface;
+ DDHAL_CREATESURFACEDATA mDdCreateSurface;
+
+ return internal_CreateNewSurface( This, That);
memset(&That->Surf->mddsdOverlay, 0, sizeof(DDSURFACEDESC));
memcpy(&That->Surf->mddsdOverlay, pDDSD, sizeof(DDSURFACEDESC));
@@ -564,7 +571,7 @@
That->Surf->mddsdOverlay.ddpfPixelFormat.dwFlags = pDDSD->ddpfPixelFormat.dwFlags;
That->Surf->mddsdOverlay.ddpfPixelFormat.dwRGBBitCount = pDDSD->ddpfPixelFormat.dwRGBBitCount;
- DDHAL_CANCREATESURFACEDATA mDdCanCreateSurface;
+
mDdCanCreateSurface.lpDD = &This->mDDrawGlobal;
mDdCanCreateSurface.CanCreateSurface = This->mCallbacks.HALDD.CanCreateSurface;
mDdCanCreateSurface.bIsDifferentPixelFormat = TRUE; //isDifferentPixelFormat;
@@ -608,7 +615,7 @@
That->Surf->mpOverlayLocals[0] = &That->Surf->mOverlayLocal[0];
- DDHAL_CREATESURFACEDATA mDdCreateSurface;
+
mDdCreateSurface.lpDD = &This->mDDrawGlobal;
mDdCreateSurface.CreateSurface = This->mCallbacks.HALDD.CreateSurface;
mDdCreateSurface.lpDDSurfaceDesc = &That->Surf->mddsdOverlay;//pDDSD;
@@ -755,148 +762,148 @@
DX_STUB_DD_OK;
- IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
- DDSURFACEDESC2 desc_callback;
- DEVMODE DevMode;
- int iMode=0;
-
- RtlZeroMemory(&desc_callback, sizeof(DDSURFACEDESC2));
-
- desc_callback.dwSize = sizeof(DDSURFACEDESC2);
-
- desc_callback.dwFlags = DDSD_HEIGHT|DDSD_WIDTH|DDSD_PIXELFORMAT|DDSD_PITCH;
-
- if (dwFlags & DDEDM_REFRESHRATES)
- {
- desc_callback.dwFlags |= DDSD_REFRESHRATE;
- desc_callback.dwRefreshRate = This->mDDrawGlobal.dwMonitorFrequency;
- }
-
-
- /* FIXME check if the mode are suppretd before sending it back */
-
- memset(&DevMode,0,sizeof(DEVMODE));
- DevMode.dmSize = (WORD)sizeof(DEVMODE);
- DevMode.dmDriverExtra = 0;
-
- while (EnumDisplaySettingsEx(NULL, iMode, &DevMode, 0))
- {
-
- if (pDDSD)
- {
- if ((pDDSD->dwFlags & DDSD_WIDTH) && (pDDSD->dwWidth != DevMode.dmPelsWidth))
- continue;
- if ((pDDSD->dwFlags & DDSD_HEIGHT) && (pDDSD->dwHeight != DevMode.dmPelsHeight))
- continue;
- if ((pDDSD->dwFlags & DDSD_PIXELFORMAT) && (pDDSD->ddpfPixelFormat.dwFlags & DDPF_RGB) &&
- (pDDSD->ddpfPixelFormat.dwRGBBitCount != DevMode.dmBitsPerPel))
- continue;
- }
-
- desc_callback.dwHeight = DevMode.dmPelsHeight;
- desc_callback.dwWidth = DevMode.dmPelsWidth;
-
- if (DevMode.dmFields & DM_DISPLAYFREQUENCY)
- {
- desc_callback.dwRefreshRate = DevMode.dmDisplayFrequency;
- }
-
- if (desc_callback.dwRefreshRate == 0)
- {
- DX_STUB_str("dwRefreshRate = 0, we hard code it to value 60");
- desc_callback.dwRefreshRate = 60; /* Maybe the valye should be biger */
- }
-
- /* above same as wine */
- if ((pDDSD->dwFlags & DDSD_PIXELFORMAT) && (pDDSD->ddpfPixelFormat.dwFlags & DDPF_RGB) )
- {
- switch(DevMode.dmBitsPerPel)
- {
- case 8:
- desc_callback.ddpfPixelFormat.dwSize = sizeof(DDPIXELFORMAT);
- desc_callback.ddpfPixelFormat.dwFlags = DDPF_RGB;
- desc_callback.ddpfPixelFormat.dwFourCC = 0;
- desc_callback.ddpfPixelFormat.dwRGBBitCount=8;
- /* FIXME right value */
- desc_callback.ddpfPixelFormat.dwRBitMask = 0xFF0000; /* red bitmask */
- desc_callback.ddpfPixelFormat.dwGBitMask = 0; /* Green bitmask */
- desc_callback.ddpfPixelFormat.dwBBitMask = 0; /* Blue bitmask */
- break;
-
- case 15:
- desc_callback.ddpfPixelFormat.dwSize = sizeof(DDPIXELFORMAT);
- desc_callback.ddpfPixelFormat.dwFlags = DDPF_RGB;
- desc_callback.ddpfPixelFormat.dwFourCC = 0;
- desc_callback.ddpfPixelFormat.dwRGBBitCount=15;
- /* FIXME right value */
- desc_callback.ddpfPixelFormat.dwRBitMask = 0x7C00; /* red bitmask */
- desc_callback.ddpfPixelFormat.dwGBitMask = 0x3E0; /* Green bitmask */
- desc_callback.ddpfPixelFormat.dwBBitMask = 0x1F; /* Blue bitmask */
- break;
-
- case 16:
- desc_callback.ddpfPixelFormat.dwSize = sizeof(DDPIXELFORMAT);
- desc_callback.ddpfPixelFormat.dwFlags = DDPF_RGB;
- desc_callback.ddpfPixelFormat.dwFourCC = 0;
- desc_callback.ddpfPixelFormat.dwRGBBitCount=16;
- /* FIXME right value */
- desc_callback.ddpfPixelFormat.dwRBitMask = 0xF800; /* red bitmask */
- desc_callback.ddpfPixelFormat.dwGBitMask = 0x7E0; /* Green bitmask */
- desc_callback.ddpfPixelFormat.dwBBitMask = 0x1F; /* Blue bitmask */
- break;
-
- case 24:
- desc_callback.ddpfPixelFormat.dwSize = sizeof(DDPIXELFORMAT);
- desc_callback.ddpfPixelFormat.dwFlags = DDPF_RGB;
- desc_callback.ddpfPixelFormat.dwFourCC = 0;
- desc_callback.ddpfPixelFormat.dwRGBBitCount=24;
- /* FIXME right value */
- desc_callback.ddpfPixelFormat.dwRBitMask = 0xFF0000; /* red bitmask */
- desc_callback.ddpfPixelFormat.dwGBitMask = 0x00FF00; /* Green bitmask */
- desc_callback.ddpfPixelFormat.dwBBitMask = 0x0000FF; /* Blue bitmask */
- break;
-
- case 32:
- desc_callback.ddpfPixelFormat.dwSize = sizeof(DDPIXELFORMAT);
- desc_callback.ddpfPixelFormat.dwFlags = DDPF_RGB;
- desc_callback.ddpfPixelFormat.dwFourCC = 0;
- desc_callback.ddpfPixelFormat.dwRGBBitCount=8;
- /* FIXME right value */
- desc_callback.ddpfPixelFormat.dwRBitMask = 0xFF0000; /* red bitmask */
- desc_callback.ddpfPixelFormat.dwGBitMask = 0x00FF00; /* Green bitmask */
- desc_callback.ddpfPixelFormat.dwBBitMask = 0x0000FF; /* Blue bitmask */
- break;
-
- default:
- break;
- }
- desc_callback.ddsCaps.dwCaps = 0;
- if (desc_callback.ddpfPixelFormat.dwFlags & DDPF_PALETTEINDEXED8)
- {
- /* FIXME srt DDCS Caps flag */
- desc_callback.ddsCaps.dwCaps |= DDSCAPS_PALETTE;
- }
- }
-
- if (DevMode.dmBitsPerPel==15)
- {
- desc_callback.lPitch = DevMode.dmPelsWidth + (8 - ( DevMode.dmPelsWidth % 8)) % 8;
- }
- else
- {
- desc_callback.lPitch = DevMode.dmPelsWidth * (DevMode.dmBitsPerPel / 8);
- desc_callback.lPitch = desc_callback.lPitch + (8 - (desc_callback.lPitch % 8)) % 8;
- }
-
- if (callback(&desc_callback, context) == DDENUMRET_CANCEL)
- {
- return DD_OK;
- }
-
- iMode++;
- }
-
- return DD_OK;
+ // IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
+ // DDSURFACEDESC2 desc_callback;
+ // DEVMODE DevMode;
+ // int iMode=0;
+ //
+ //RtlZeroMemory(&desc_callback, sizeof(DDSURFACEDESC2));
+ //
+ // desc_callback.dwSize = sizeof(DDSURFACEDESC2);
+
+ // desc_callback.dwFlags = DDSD_HEIGHT|DDSD_WIDTH|DDSD_PIXELFORMAT|DDSD_PITCH;
+
+ // if (dwFlags & DDEDM_REFRESHRATES)
+ // {
+ // desc_callback.dwFlags |= DDSD_REFRESHRATE;
+ // desc_callback.dwRefreshRate = This->mDDrawGlobal.dwMonitorFrequency;
+ // }
+
+ //
+ // /* FIXME check if the mode are suppretd before sending it back */
+
+ //memset(&DevMode,0,sizeof(DEVMODE));
+ //DevMode.dmSize = (WORD)sizeof(DEVMODE);
+ //DevMode.dmDriverExtra = 0;
+
+ // while (EnumDisplaySettingsEx(NULL, iMode, &DevMode, 0))
+ // {
+ //
+ // if (pDDSD)
+ // {
+ // if ((pDDSD->dwFlags & DDSD_WIDTH) && (pDDSD->dwWidth != DevMode.dmPelsWidth))
+ // continue;
+ // if ((pDDSD->dwFlags & DDSD_HEIGHT) && (pDDSD->dwHeight != DevMode.dmPelsHeight))
+ // continue;
+ // if ((pDDSD->dwFlags & DDSD_PIXELFORMAT) && (pDDSD->ddpfPixelFormat.dwFlags & DDPF_RGB) &&
+ // (pDDSD->ddpfPixelFormat.dwRGBBitCount != DevMode.dmBitsPerPel))
+ // continue;
+ // }
+ //
+ // desc_callback.dwHeight = DevMode.dmPelsHeight;
+ // desc_callback.dwWidth = DevMode.dmPelsWidth;
+ //
+ // if (DevMode.dmFields & DM_DISPLAYFREQUENCY)
+ // {
+ // desc_callback.dwRefreshRate = DevMode.dmDisplayFrequency;
+ // }
+
+ // if (desc_callback.dwRefreshRate == 0)
+ // {
+ // DX_STUB_str("dwRefreshRate = 0, we hard code it to value 60");
+ // desc_callback.dwRefreshRate = 60; /* Maybe the valye should be biger */
+ // }
+
+ // /* above same as wine */
+ // if ((pDDSD->dwFlags & DDSD_PIXELFORMAT) && (pDDSD->ddpfPixelFormat.dwFlags & DDPF_RGB) )
+ // {
+ // switch(DevMode.dmBitsPerPel)
+ // {
+ // case 8:
+ // desc_callback.ddpfPixelFormat.dwSize = sizeof(DDPIXELFORMAT);
+ // desc_callback.ddpfPixelFormat.dwFlags = DDPF_RGB;
+ // desc_callback.ddpfPixelFormat.dwFourCC = 0;
+ // desc_callback.ddpfPixelFormat.dwRGBBitCount=8;
+ // /* FIXME right value */
+ // desc_callback.ddpfPixelFormat.dwRBitMask = 0xFF0000; /* red bitmask */
+ // desc_callback.ddpfPixelFormat.dwGBitMask = 0; /* Green bitmask */
+ // desc_callback.ddpfPixelFormat.dwBBitMask = 0; /* Blue bitmask */
+ // break;
+
+ // case 15:
+ // desc_callback.ddpfPixelFormat.dwSize = sizeof(DDPIXELFORMAT);
+ // desc_callback.ddpfPixelFormat.dwFlags = DDPF_RGB;
+ // desc_callback.ddpfPixelFormat.dwFourCC = 0;
+ // desc_callback.ddpfPixelFormat.dwRGBBitCount=15;
+ // /* FIXME right value */
+ // desc_callback.ddpfPixelFormat.dwRBitMask = 0x7C00; /* red bitmask */
+ // desc_callback.ddpfPixelFormat.dwGBitMask = 0x3E0; /* Green bitmask */
+ // desc_callback.ddpfPixelFormat.dwBBitMask = 0x1F; /* Blue bitmask */
+ // break;
+
+ // case 16:
+ // desc_callback.ddpfPixelFormat.dwSize = sizeof(DDPIXELFORMAT);
+ // desc_callback.ddpfPixelFormat.dwFlags = DDPF_RGB;
+ // desc_callback.ddpfPixelFormat.dwFourCC = 0;
+ // desc_callback.ddpfPixelFormat.dwRGBBitCount=16;
+ // /* FIXME right value */
+ // desc_callback.ddpfPixelFormat.dwRBitMask = 0xF800; /* red bitmask */
+ // desc_callback.ddpfPixelFormat.dwGBitMask = 0x7E0; /* Green bitmask */
+ // desc_callback.ddpfPixelFormat.dwBBitMask = 0x1F; /* Blue bitmask */
+ // break;
+
+ // case 24:
+ // desc_callback.ddpfPixelFormat.dwSize = sizeof(DDPIXELFORMAT);
+ // desc_callback.ddpfPixelFormat.dwFlags = DDPF_RGB;
+ // desc_callback.ddpfPixelFormat.dwFourCC = 0;
+ // desc_callback.ddpfPixelFormat.dwRGBBitCount=24;
+ // /* FIXME right value */
+ // desc_callback.ddpfPixelFormat.dwRBitMask = 0xFF0000; /* red bitmask */
+ // desc_callback.ddpfPixelFormat.dwGBitMask = 0x00FF00; /* Green bitmask */
+ // desc_callback.ddpfPixelFormat.dwBBitMask = 0x0000FF; /* Blue bitmask */
+ // break;
+
+ // case 32:
+ // desc_callback.ddpfPixelFormat.dwSize = sizeof(DDPIXELFORMAT);
+ // desc_callback.ddpfPixelFormat.dwFlags = DDPF_RGB;
+ // desc_callback.ddpfPixelFormat.dwFourCC = 0;
+ // desc_callback.ddpfPixelFormat.dwRGBBitCount=8;
+ // /* FIXME right value */
+ // desc_callback.ddpfPixelFormat.dwRBitMask = 0xFF0000; /* red bitmask */
+ // desc_callback.ddpfPixelFormat.dwGBitMask = 0x00FF00; /* Green bitmask */
+ // desc_callback.ddpfPixelFormat.dwBBitMask = 0x0000FF; /* Blue bitmask */
+ // break;
+
+ // default:
+ // break;
+ // }
+ // desc_callback.ddsCaps.dwCaps = 0;
+ // if (desc_callback.ddpfPixelFormat.dwFlags & DDPF_PALETTEINDEXED8)
+ // {
+ // /* FIXME srt DDCS Caps flag */
+ // desc_callback.ddsCaps.dwCaps |= DDSCAPS_PALETTE;
+ // }
+ // }
+ //
+ // if (DevMode.dmBitsPerPel==15)
+ // {
+ // desc_callback.lPitch = DevMode.dmPelsWidth + (8 - ( DevMode.dmPelsWidth % 8)) % 8;
+ // }
+ // else
+ // {
+ // desc_callback.lPitch = DevMode.dmPelsWidth * (DevMode.dmBitsPerPel / 8);
+ // desc_callback.lPitch = desc_callback.lPitch + (8 - (desc_callback.lPitch % 8)) % 8;
+ // }
+ //
+ // if (callback(&desc_callback, context) == DDENUMRET_CANCEL)
+ // {
+ // return DD_OK;
+ // }
+ //
+ // iMode++;
+ // }
+
+ // return DD_OK;
}
/*
@@ -945,11 +952,13 @@
Main_DirectDraw_GetCaps(LPDIRECTDRAW7 iface, LPDDCAPS pDriverCaps,
LPDDCAPS pHELCaps)
{
- DX_WINDBG_trace();
+
DDSCAPS2 ddscaps = {0};
DWORD status = DD_FALSE;
IDirectDrawImpl *This = (IDirectDrawImpl *)iface;
+
+ DX_WINDBG_trace();
if (pDriverCaps != NULL)
{
@@ -984,10 +993,10 @@
* Status ok
*/
HRESULT WINAPI Main_DirectDraw_GetDisplayMode(LPDIRECTDRAW7 iface, LPDDSURFACEDESC2 pDDSD)
-{
- DX_WINDBG_trace();
-
+{
IDirectDrawImpl *This = (IDirectDrawImpl *)iface;
+
+ DX_WINDBG_trace();
if (pDDSD == NULL)
{
@@ -1048,10 +1057,10 @@
*/
HRESULT WINAPI
Main_DirectDraw_GetMonitorFrequency(LPDIRECTDRAW7 iface,LPDWORD freq)
-{
- DX_WINDBG_trace();
-
+{
IDirectDrawImpl *This = (IDirectDrawImpl *)iface;
+
+ DX_WINDBG_trace();
if (freq == NULL)
{
@@ -1068,11 +1077,10 @@
*/
HRESULT WINAPI
Main_DirectDraw_GetScanLine(LPDIRECTDRAW7 iface, LPDWORD lpdwScanLine)
-{
+{
+ IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
DX_WINDBG_trace();
-
- IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
*lpdwScanLine = 0;
@@ -1111,10 +1119,10 @@
HRESULT
WINAPI
Main_DirectDraw_Initialize (LPDIRECTDRAW7 iface, LPGUID lpGUID)
-{
- DX_WINDBG_trace();
-
+{
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
+
+ DX_WINDBG_trace();
if (iface==NULL)
{
@@ -1158,10 +1166,12 @@
// for now we always asume it is the active dirver that should be use.
// - allow more Flags
- DX_WINDBG_trace();
+
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
DDHAL_SETEXCLUSIVEMODEDATA SetExclusiveMode;
+
+ DX_WINDBG_trace();
// check the parameters
if ((This->cooperative_level == cooplevel) && ((HWND)This->mDDrawGlobal.lpExclusiveOwner->hWnd == hwnd))
@@ -1217,7 +1227,7 @@
Main_DirectDraw_SetDisplayMode (LPDIRECTDRAW7 iface, DWORD dwWidth, DWORD dwHeight,
DWORD dwBPP, DWORD dwRefreshRate, DWORD dwFlags)
{
- DX_WINDBG_trace();
+
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
BOOL dummy = TRUE;
@@ -1226,6 +1236,8 @@
int Width=0;
int Height=0;
int BPP=0;
+
+ DX_WINDBG_trace();
/* FIXME check the refresrate if it same if it not same do the mode switch */
if ((This->mDDrawGlobal.vmiData.dwDisplayHeight == dwHeight) &&
@@ -1289,9 +1301,9 @@
Main_DirectDraw_WaitForVerticalBlank(LPDIRECTDRAW7 iface, DWORD dwFlags,
HANDLE h)
{
- DX_WINDBG_trace();
-
+
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
+ DX_WINDBG_trace();
if (This->mDdWaitForVerticalBlank.WaitForVerticalBlank == NULL)
{
@@ -1317,11 +1329,12 @@
HRESULT WINAPI
Main_DirectDraw_GetAvailableVidMem(LPDIRECTDRAW7 iface, LPDDSCAPS2 ddscaps,
LPDWORD total, LPDWORD free)
-{
- DX_WINDBG_trace();
+{
DDHAL_GETAVAILDRIVERMEMORYDATA mem;
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
+
+ DX_WINDBG_trace();
/* Only Hal version exists acodring msdn */
if (!(This->mDDrawGlobal.lpDDCBtmp->HALDDMiscellaneous.dwFlags & DDHAL_MISCCB32_GETAVAILDRIVERMEMORY))
Modified: trunk/reactos/dll/directx/ddraw/main/surface_main.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/ddraw/main/surface_main.c?rev=24690&r1=24689&r2=24690&view=diff
==============================================================================
--- trunk/reactos/dll/directx/ddraw/main/surface_main.c (original)
+++ trunk/reactos/dll/directx/ddraw/main/surface_main.c Mon Nov 6 00:19:53 2006
@@ -8,7 +8,7 @@
*
*/
-#include "rosdraw.h"
+#include "../rosdraw.h"
/* FIXME adding hal and hel stub
@@ -60,10 +60,10 @@
HRESULT WINAPI Main_DDrawSurface_Blt(LPDIRECTDRAWSURFACE7 iface, LPRECT rdst,
LPDIRECTDRAWSURFACE7 src, LPRECT rsrc, DWORD dwFlags, LPDDBLTFX lpbltfx)
-{
- DX_WINDBG_trace();
-
+{
IDirectDrawSurfaceImpl* This = (IDirectDrawSurfaceImpl*)iface;
+
+ DX_WINDBG_trace();
if (This->Owner->mCallbacks.HALDDSurface.dwFlags & DDHAL_SURFCB32_BLT)
@@ -77,11 +77,11 @@
HRESULT WINAPI Main_DDrawSurface_Lock (LPDIRECTDRAWSURFACE7 iface, LPRECT prect,
LPDDSURFACEDESC2 pDDSD, DWORD flags, HANDLE event)
-{
- DX_WINDBG_trace();
-
+{
IDirectDrawSurfaceImpl* This = (IDirectDrawSurfaceImpl*)iface;
+ DX_WINDBG_trace();
+
if (event != NULL)
{
return DDERR_INVALIDPARAMS;
@@ -96,10 +96,10 @@
}
HRESULT WINAPI Main_DDrawSurface_Unlock (LPDIRECTDRAWSURFACE7 iface, LPRECT pRect)
-{
- DX_WINDBG_trace();
-
+{
IDirectDrawSurfaceImpl* This = (IDirectDrawSurfaceImpl*)iface;
+
+ DX_WINDBG_trace();
if (This->Owner->mCallbacks.HALDDSurface.dwFlags & DDHAL_SURFCB32_LOCK)
{
@@ -113,11 +113,11 @@
Main_DDrawSurface_AddAttachedSurface(LPDIRECTDRAWSURFACE7 iface,
LPDIRECTDRAWSURFACE7 pAttach)
{
- DWORD ret;
- DX_WINDBG_trace();
-
+ DWORD ret;
IDirectDrawSurfaceImpl* This = (IDirectDrawSurfaceImpl*)iface;
IDirectDrawSurfaceImpl* That = (IDirectDrawSurfaceImpl*)pAttach;
+
+ DX_WINDBG_trace();
if (pAttach==NULL)
{
@@ -273,10 +273,10 @@
HRESULT WINAPI
Main_DDrawSurface_Flip(LPDIRECTDRAWSURFACE7 iface,
LPDIRECTDRAWSURFACE7 override, DWORD dwFlags)
-{
- DX_WINDBG_trace();
-
+{
IDirectDrawSurfaceImpl* This = (IDirectDrawSurfaceImpl*)iface;
+
+ DX_WINDBG_trace();
if (This->Owner->mCallbacks.HALDDSurface.dwFlags & DDHAL_SURFCB32_FLIP)
{
@@ -362,11 +362,11 @@
HRESULT WINAPI
Main_DDrawSurface_GetBltStatus(LPDIRECTDRAWSURFACE7 iface, DWORD dwFlags)
-{
- DX_WINDBG_trace();
-
+{
IDirectDrawSurfaceImpl* This = (IDirectDrawSurfaceImpl*)iface;
+ DX_WINDBG_trace();
+
if (This->Owner->mCallbacks.HALDDSurface.dwFlags & DDHAL_SURFCB32_FLIP)
{
return Hal_DDrawSurface_GetBltStatus( iface, dwFlags);
@@ -377,10 +377,10 @@
HRESULT WINAPI
Main_DDrawSurface_GetCaps(LPDIRECTDRAWSURFACE7 iface, LPDDSCAPS2 pCaps)
-{
- DX_WINDBG_trace();
-
+{
IDirectDrawSurfaceImpl* This;
+
+ DX_WINDBG_trace();
if (iface == NULL)
{
@@ -421,9 +421,9 @@
HRESULT WINAPI
Main_DDrawSurface_GetDC(LPDIRECTDRAWSURFACE7 iface, HDC *phDC)
{
- DX_WINDBG_trace();
-
IDirectDrawSurfaceImpl* This;
+
+ DX_WINDBG_trace();
if (iface == NULL)
{
@@ -527,10 +527,9 @@
Main_DDrawSurface_GetSurfaceDesc(LPDIRECTDRAWSURFACE7 iface,
LPDDSURFACEDESC2 pDDSD)
{
- DWORD dwSize;
- DX_WINDBG_trace();
-
+ DWORD dwSize;
IDirectDrawSurfaceImpl *This = (IDirectDrawSurfaceImpl *)iface;
+ DX_WINDBG_trace();
dwSize = pDDSD->dwSize;
@@ -584,10 +583,9 @@
HRESULT WINAPI
Main_DDrawSurface_ReleaseDC(LPDIRECTDRAWSURFACE7 iface, HDC hDC)
-{
- DX_WINDBG_trace();
-
- IDirectDrawSurfaceImpl* This;
+{
+ IDirectDrawSurfaceImpl* This;
+ DX_WINDBG_trace();
if (iface == NULL)
{
@@ -625,10 +623,10 @@
HRESULT WINAPI
Main_DDrawSurface_SetColorKey (LPDIRECTDRAWSURFACE7 iface,
DWORD dwFlags, LPDDCOLORKEY pCKey)
-{
- DX_WINDBG_trace();
-
+{
IDirectDrawSurfaceImpl* This = (IDirectDrawSurfaceImpl*)iface;
+
+ DX_WINDBG_trace();
if (This->Owner->mCallbacks.HALDDSurface.dwFlags & DDHAL_SURFCB32_SETCOLORKEY)
{
@@ -693,10 +691,10 @@
HRESULT WINAPI
Main_DDrawSurface_UpdateOverlayDisplay (LPDIRECTDRAWSURFACE7 iface,
DWORD dwFlags)
-{
- DX_WINDBG_trace();
-
+{
IDirectDrawSurfaceImpl* This = (IDirectDrawSurfaceImpl*)iface;
+
+ DX_WINDBG_trace();
if (This->Owner->mCallbacks.HALDDSurface.dwFlags & DDHAL_SURFCB32_UPDATEOVERLAY)
{
Modified: trunk/reactos/dll/directx/ddraw/palette.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/ddraw/palette.c?rev=24690&r1=24689&r2=24690&view=diff
==============================================================================
--- trunk/reactos/dll/directx/ddraw/palette.c (original)
+++ trunk/reactos/dll/directx/ddraw/palette.c Mon Nov 6 00:19:53 2006
@@ -12,11 +12,11 @@
ULONG WINAPI
DirectDrawPalette_Release( LPDIRECTDRAWPALETTE iface)
-{
- DX_WINDBG_trace();
-
+{
IDirectDrawPaletteImpl* This = (IDirectDrawPaletteImpl*)iface;
ULONG ref=0;
+
+ DX_WINDBG_trace();
if (iface!=NULL)
{
@@ -39,12 +39,11 @@
ULONG WINAPI
DirectDrawPalette_AddRef( LPDIRECTDRAWPALETTE iface)
-{
+{
+ IDirectDrawPaletteImpl * This = (IDirectDrawPaletteImpl*)iface;
+ ULONG ref=0;
+
DX_WINDBG_trace();
-
- IDirectDrawPaletteImpl * This = (IDirectDrawPaletteImpl*)iface;
-
- ULONG ref=0;
if (iface!=NULL)
{
Modified: trunk/reactos/dll/directx/ddraw/rosdraw.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/ddraw/rosdraw.h?rev=24690&r1=24689&r2=24690&view=diff
==============================================================================
--- trunk/reactos/dll/directx/ddraw/rosdraw.h (original)
+++ trunk/reactos/dll/directx/ddraw/rosdraw.h Mon Nov 6 00:19:53 2006
@@ -25,6 +25,9 @@
/******** Main Object ********/
/* Public interface */
+VOID WINAPI AcquireDDThreadLock();
+VOID WINAPI ReleaseDDThreadLock();
+
HRESULT WINAPI Main_DirectDraw_QueryInterface (LPDIRECTDRAW7 iface, REFIID id, LPVOID *obj);
ULONG WINAPI Main_DirectDraw_AddRef (LPDIRECTDRAW7 iface);
ULONG WINAPI Main_DirectDraw_Release (LPDIRECTDRAW7 iface);
@@ -317,6 +320,7 @@
/*********** Macros ***********/
#define DX_STUB \
+{ \
static BOOL firstcall = TRUE; \
if (firstcall) \
{ \
@@ -325,9 +329,11 @@
OutputDebugStringA(buffer); \
firstcall = FALSE; \
} \
+} \
return DDERR_UNSUPPORTED;
#define DX_STUB_DD_OK \
+{ \
static BOOL firstcall = TRUE; \
if (firstcall) \
{ \
@@ -336,6 +342,7 @@
OutputDebugStringA(buffer); \
firstcall = FALSE; \
} \
+} \
return DD_OK;
Modified: trunk/reactos/dll/directx/ddraw/soft/surface_callbacks_hel.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/ddraw/soft/surface_callbacks_hel.c?rev=24690&r1=24689&r2=24690&view=diff
==============================================================================
--- trunk/reactos/dll/directx/ddraw/soft/surface_callbacks_hel.c (original)
+++ trunk/reactos/dll/directx/ddraw/soft/surface_callbacks_hel.c Mon Nov 6 00:19:53 2006
@@ -8,7 +8,7 @@
*
*/
-#include "rosdraw.h"
+#include "../rosdraw.h"
extern DDPIXELFORMAT pixelformats[];
Modified: trunk/reactos/dll/directx/ddraw/soft/surface_hel.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/ddraw/soft/surface_hel.c?rev=24690&r1=24689&r2=24690&view=diff
==============================================================================
--- trunk/reactos/dll/directx/ddraw/soft/surface_hel.c (original)
+++ trunk/reactos/dll/directx/ddraw/soft/surface_hel.c Mon Nov 6 00:19:53 2006
@@ -8,7 +8,7 @@
*
*/
-#include "rosdraw.h"
+#include "../rosdraw.h"
Modified: trunk/reactos/dll/directx/ddraw/startup.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/ddraw/startup.c?rev=24690&r1=24689&r2=24690&view=diff
==============================================================================
--- trunk/reactos/dll/directx/ddraw/startup.c (original)
+++ trunk/reactos/dll/directx/ddraw/startup.c Mon Nov 6 00:19:53 2006
@@ -53,7 +53,19 @@
This->mpModeInfos[0].lPitch = (devmode.dmPelsWidth*devmode.dmBitsPerPel)/8;
This->mpModeInfos[0].wRefreshRate = (WORD)devmode.dmDisplayFrequency;
- This->hdc = CreateDCW(L"DISPLAY",L"DISPLAY",NULL,NULL);
+ if ( This->devicetype <3 )
+ {
+ /* Create HDC for default, hal and hel driver */
+ This->hdc = CreateDCW(L"DISPLAY",L"DISPLAY",NULL,NULL);
+ }
+ else
+ {
+ /* FIXME : need getting driver from the GUID that have been pass in from
+ the register. we do not support that yet
+ */
+ This->hdc = NULL ;
+ }
+
if (This->hdc == NULL)
{
@@ -222,6 +234,7 @@
StartDirectDrawHal(LPDIRECTDRAW* iface)
{
IDirectDrawImpl* This = (IDirectDrawImpl*)iface;
+ DDHAL_GETDRIVERINFODATA DriverInfo;
/* HAL Startup process */
BOOL newmode = FALSE;
@@ -354,7 +367,7 @@
//DeleteDC(This->hdc);
- DDHAL_GETDRIVERINFODATA DriverInfo;
+
memset(&DriverInfo,0, sizeof(DDHAL_GETDRIVERINFODATA));
DriverInfo.dwSize = sizeof(DDHAL_GETDRIVERINFODATA);
DriverInfo.dwContext = This->mDDrawGlobal.hDD;
@@ -425,14 +438,21 @@
REFIID id,
BOOL ex)
{
- IDirectDrawImpl* This = (IDirectDrawImpl*)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectDrawImpl));
+ IDirectDrawImpl* This;
DX_WINDBG_trace();
+
+ //AcquireDDThreadLock();
+
+ This = (IDirectDrawImpl*)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectDrawImpl));
+
if (This == NULL)
{
+ ReleaseDDThreadLock();
return E_OUTOFMEMORY;
}
+
ZeroMemory(This,sizeof(IDirectDrawImpl));
@@ -442,29 +462,39 @@
This->lpVtbl_v4 = &DDRAW_IDirectDraw4_VTable;
*pIface = (LPDIRECTDRAW)This;
-
- This->devicetype = 0;
-
- if (pGUID == (LPGUID) DDCREATE_HARDWAREONLY)
- {
- This->devicetype = 1; /* hal only */
- }
-
- if (pGUID == (LPGUID) DDCREATE_EMULATIONONLY)
- {
- This->devicetype = 2; /* hel only */
- }
+
+ if (pGUID == 0)
+ {
+ This->devicetype = 0; /* both hal and hel default driver "DISPLAY" */
+ }
+ else if (pGUID == (LPGUID) DDCREATE_HARDWAREONLY)
+ {
+ This->devicetype = 1; /* hal only default driver "DISPLAY" */
+ }
+
+ else if (pGUID == (LPGUID) DDCREATE_EMULATIONONLY)
+ {
+ This->devicetype = 2; /* hel only default driver "DISPLAY" */
+ }
+ else
+ {
+ This->devicetype = 3; /* Read from the register which driver it should be */
+ }
+
if(This->lpVtbl->QueryInterface ((LPDIRECTDRAW7)This, id, (void**)&pIface) != S_OK)
{
+ ReleaseDDThreadLock();
return DDERR_INVALIDPARAMS;
}
if (StartDirectDraw((LPDIRECTDRAW*)This) == DD_OK);
{
+ //ReleaseDDThreadLock();
return This->lpVtbl->Initialize ((LPDIRECTDRAW7)This, pGUID);
}
+ //ReleaseDDThreadLock();
return DDERR_INVALIDPARAMS;
}
Modified: trunk/reactos/dll/directx/ddraw/thunks/ddraw_thunk.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/ddraw/thunks/ddraw_thunk.c?rev=24690&r1=24689&r2=24690&view=diff
==============================================================================
--- trunk/reactos/dll/directx/ddraw/thunks/ddraw_thunk.c (original)
+++ trunk/reactos/dll/directx/ddraw/thunks/ddraw_thunk.c Mon Nov 6 00:19:53 2006
@@ -22,7 +22,7 @@
*
*/
-#include "winedraw.h"
+#include "../winedraw.h"
static HRESULT WINAPI
Modified: trunk/reactos/dll/directx/ddraw/thunks/surface_thunk.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/ddraw/thunks/surface_thunk.c?rev=24690&r1=24689&r2=24690&view=diff
==============================================================================
--- trunk/reactos/dll/directx/ddraw/thunks/surface_thunk.c (original)
+++ trunk/reactos/dll/directx/ddraw/thunks/surface_thunk.c Mon Nov 6 00:19:53 2006
@@ -22,7 +22,7 @@
*
*/
-#include "winedraw.h"
+#include "../winedraw.h"
#define CONVERT(pdds) COM_INTERFACE_CAST(IDirectDrawSurfaceImpl, \
IDirectDrawSurface3, \
More information about the Ros-diffs
mailing list