From 3bd173b1f2d472788587c2bfee857d21da5e62b7 Mon Sep 17 00:00:00 2001 From: Magnus Olsen Date: Thu, 13 Apr 2006 11:03:19 +0000 Subject: [PATCH] one more redisg adding a member that tells whih destions it is. it work pretty well. svn path=/trunk/; revision=21578 --- reactos/dll/directx/ddraw/hal/surface_hal.c | 6 +++--- reactos/dll/directx/ddraw/main/ddraw_main.c | 14 +++++++++++--- reactos/dll/directx/ddraw/rosdraw.h | 2 ++ 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/reactos/dll/directx/ddraw/hal/surface_hal.c b/reactos/dll/directx/ddraw/hal/surface_hal.c index 4198684f1df..f9f578c5bd1 100644 --- a/reactos/dll/directx/ddraw/hal/surface_hal.c +++ b/reactos/dll/directx/ddraw/hal/surface_hal.c @@ -67,7 +67,7 @@ HRESULT Hal_DDrawSurface_Blt(LPDIRECTDRAWSURFACE7 iface, LPRECT rDest, mDdBlt.lpDD = &This->Owner->mDDrawGlobal; mDdBlt.Blt = This->Owner->mCallbacks.HALDDSurface.Blt; - mDdBlt.lpDDDestSurface = This->Owner->mpPrimaryLocals[0]; + mDdBlt.lpDDDestSurface = This->Surf->mpInUseSurfaceLocals[0]; mDdBlt.dwFlags = dwFlags; @@ -109,7 +109,7 @@ HRESULT Hal_DDrawSurface_Lock(LPDIRECTDRAWSURFACE7 iface, LPRECT prect, LPDDSURF Lock.ddRVal = DDERR_NOTPALETTIZED; Lock.Lock = This->Owner->mCallbacks.HALDDSurface.Lock; Lock.dwFlags = flags; - Lock.lpDDSurface = &This->Owner->mPrimaryLocal; + Lock.lpDDSurface = This->Surf->mpInUseSurfaceLocals[0]; Lock.lpDD = &This->Owner->mDDrawGlobal; Lock.lpSurfData = NULL; @@ -160,7 +160,7 @@ HRESULT Hal_DDrawSurface_Unlock(LPDIRECTDRAWSURFACE7 iface, LPRECT pRect) DDHAL_UNLOCKDATA unLock; unLock.ddRVal = DDERR_NOTPALETTIZED; unLock.lpDD = &This->Owner->mDDrawGlobal; - unLock.lpDDSurface = &This->Owner->mPrimaryLocal; + unLock.lpDDSurface = This->Surf->mpInUseSurfaceLocals[0]; unLock.Unlock = This->Owner->mCallbacks.HALDDSurface.Unlock; diff --git a/reactos/dll/directx/ddraw/main/ddraw_main.c b/reactos/dll/directx/ddraw/main/ddraw_main.c index c8243518b6d..cbd1d3a8cf5 100644 --- a/reactos/dll/directx/ddraw/main/ddraw_main.c +++ b/reactos/dll/directx/ddraw/main/ddraw_main.c @@ -577,6 +577,7 @@ HRESULT WINAPI Main_DirectDraw_CreateSurface (LPDIRECTDRAW7 iface, LPDDSURFACEDE That->Owner->mddsdPrimary.dwAlphaBitDepth = This->mDDrawGlobal.vmiData.ddpfDisplay.dwAlphaBitDepth; } + That->Surf->mpInUseSurfaceLocals[0] = &That->Owner->mPrimaryLocal; return DD_OK; } @@ -586,18 +587,23 @@ HRESULT WINAPI Main_DirectDraw_CreateSurface (LPDIRECTDRAW7 iface, LPDDSURFACEDE OutputDebugStringA("Create DDSCAPS_OVERLAY\n"); memset(&That->Surf->mddsdOverlay, 0, sizeof(DDSURFACEDESC)); + memcpy(&That->Surf->mddsdOverlay, pDDSD, sizeof(DDSURFACEDESC)); That->Surf->mddsdOverlay.dwSize = sizeof(DDSURFACEDESC); That->Surf->mddsdOverlay.dwFlags = DDSD_CAPS | DDSD_PIXELFORMAT | DDSD_BACKBUFFERCOUNT | DDSD_WIDTH | DDSD_HEIGHT; That->Surf->mddsdOverlay.ddsCaps.dwCaps = DDSCAPS_OVERLAY | DDSCAPS_VIDEOMEMORY | DDSCAPS_LOCALVIDMEM | DDSCAPS_COMPLEX | DDSCAPS_FLIP; + + + // - That->Surf->mddsdOverlay.dwWidth = 100; //pels; - That->Surf->mddsdOverlay.dwHeight = 100; // lines; + + That->Surf->mddsdOverlay.dwWidth = pDDSD->dwWidth; //pels; + That->Surf->mddsdOverlay.dwHeight = pDDSD->dwHeight; // lines; That->Surf->mddsdOverlay.dwBackBufferCount = 1; //cBuffers; That->Surf->mddsdOverlay.ddpfPixelFormat.dwSize = sizeof(DDPIXELFORMAT); That->Surf->mddsdOverlay.ddpfPixelFormat.dwFlags = DDPF_RGB; That->Surf->mddsdOverlay.ddpfPixelFormat.dwRGBBitCount = 32; -// +// // DDHAL_CANCREATESURFACEDATA mDdCanCreateSurface; mDdCanCreateSurface.lpDD = &This->mDDrawGlobal; @@ -712,6 +718,8 @@ HRESULT WINAPI Main_DirectDraw_CreateSurface (LPDIRECTDRAW7 iface, LPDDSURFACEDE return mDdUpdateOverlay.ddRVal; } + That->Surf->mpInUseSurfaceLocals[0] = That->Surf->mpOverlayLocals[0]; + //That->Surf->mpInUseSurfaceLocals[0] = &That->Owner->mPrimaryLocal; return DD_OK; } else if (pDDSD->ddsCaps.dwCaps & DDSCAPS_BACKBUFFER) diff --git a/reactos/dll/directx/ddraw/rosdraw.h b/reactos/dll/directx/ddraw/rosdraw.h index b1240ca783b..962c7330530 100644 --- a/reactos/dll/directx/ddraw/rosdraw.h +++ b/reactos/dll/directx/ddraw/rosdraw.h @@ -98,6 +98,8 @@ typedef struct typedef struct { + DDRAWI_DDRAWSURFACE_LCL *mpInUseSurfaceLocals[1]; + DDRAWI_DDRAWSURFACE_GBL mSurfGlobal; DDRAWI_DDRAWSURFACE_MORE mSurfMore; DDRAWI_DDRAWSURFACE_LCL mSurfLocal;