X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=reactos%2Flib%2Fddraw%2Fmain%2Fddraw_main.c;h=49e84a32b6096211585e30ed4b0a55f9cbec76df;hp=e064ce2eca63e6a7b4da4fbd7ccb772492fc8eea;hb=36704a0989819df82d9d87926b2bd62a8f735f55;hpb=f872c290a73a386a0bbaa0fe178bc0a239ab5afe diff --git a/reactos/lib/ddraw/main/ddraw_main.c b/reactos/lib/ddraw/main/ddraw_main.c index e064ce2eca6..49e84a32b60 100644 --- a/reactos/lib/ddraw/main/ddraw_main.c +++ b/reactos/lib/ddraw/main/ddraw_main.c @@ -38,7 +38,8 @@ HRESULT WINAPI Main_DirectDraw_Initialize (LPDIRECTDRAW7 iface, LPGUID lpGUID) // ... then overwrite with hal if((ret = Hel_DirectDraw_Initialize (iface)) != DD_OK) return ret; - + + return DD_OK; } @@ -165,22 +166,30 @@ HRESULT WINAPI Main_DirectDraw_CreateSurface (LPDIRECTDRAW7 iface, LPDDSURFACEDE return DDERR_UNSUPPORTED; // the nasty com stuff + IDirectDrawImpl* This = (IDirectDrawImpl*)iface; + IDirectDrawSurfaceImpl* That; That = (IDirectDrawSurfaceImpl*)HeapAlloc(GetProcessHeap(), 0, sizeof(IDirectDrawSurfaceImpl)); - + if (That == NULL) return E_OUTOFMEMORY; ZeroMemory(That, sizeof(IDirectDrawSurfaceImpl)); - + That->lpVtbl = &DirectDrawSurface7_Vtable; That->lpVtbl_v3 = &DDRAW_IDDS3_Thunk_VTable; - + + This->DirectDrawGlobal.dsList = (LPDDRAWI_DDRAWSURFACE_INT)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, + sizeof(DDRAWI_DDRAWSURFACE_INT)); + + That->owner = (IDirectDrawImpl *)This; + That->owner->DirectDrawGlobal.dsList->dwIntRefCnt =1; /* we alwasy set to use the DirectDrawSurface7_Vtable as internel */ That->owner->DirectDrawGlobal.dsList->lpVtbl = (PVOID) &DirectDrawSurface7_Vtable; + *ppSurf = (LPDIRECTDRAWSURFACE7)That;