diff --git a/dlls/ddraw/ddraw.c b/dlls/ddraw/ddraw.c index 626993cfc5e..73cb58e9242 100644 --- a/dlls/ddraw/ddraw.c +++ b/dlls/ddraw/ddraw.c @@ -2866,10 +2866,9 @@ static HRESULT ddraw_create_gdi_swapchain(IDirectDrawImpl *ddraw, IDirectDrawSur * DDERR_* if an error occurs * *****************************************************************************/ -static HRESULT CreateSurface(IDirectDraw7 *iface, - DDSURFACEDESC2 *DDSD, IDirectDrawSurface7 **Surf, IUnknown *UnkOuter) +static HRESULT CreateSurface(IDirectDrawImpl *ddraw, DDSURFACEDESC2 *DDSD, + IDirectDrawSurface7 **Surf, IUnknown *UnkOuter) { - IDirectDrawImpl *This = (IDirectDrawImpl *)iface; IDirectDrawSurfaceImpl *object = NULL; HRESULT hr; LONG extra_surfaces = 0; @@ -2877,27 +2876,26 @@ static HRESULT CreateSurface(IDirectDraw7 *iface, WINED3DDISPLAYMODE Mode; const DWORD sysvidmem = DDSCAPS_VIDEOMEMORY | DDSCAPS_SYSTEMMEMORY; - TRACE("iface %p, surface_desc %p, surface %p, outer_unknown %p.\n", - iface, DDSD, Surf, UnkOuter); + TRACE("ddraw %p, surface_desc %p, surface %p, outer_unknown %p.\n", ddraw, DDSD, Surf, UnkOuter); /* Some checks before we start */ if (TRACE_ON(ddraw)) { - TRACE(" (%p) Requesting surface desc :\n", This); + TRACE(" (%p) Requesting surface desc :\n", ddraw); DDRAW_dump_surface_desc(DDSD); } EnterCriticalSection(&ddraw_cs); if (UnkOuter != NULL) { - FIXME("(%p) : outer != NULL?\n", This); + FIXME("(%p) : outer != NULL?\n", ddraw); LeaveCriticalSection(&ddraw_cs); return CLASS_E_NOAGGREGATION; /* unchecked */ } if (Surf == NULL) { - FIXME("(%p) You want to get back a surface? Don't give NULL ptrs!\n", This); + FIXME("(%p) You want to get back a surface? Don't give NULL ptrs!\n", ddraw); LeaveCriticalSection(&ddraw_cs); return E_POINTER; /* unchecked */ } @@ -2917,14 +2915,15 @@ static HRESULT CreateSurface(IDirectDraw7 *iface, if ((DDSD->dwFlags & DDSD_LPSURFACE) && (DDSD->lpSurface == NULL)) { /* Frank Herbert's Dune specifies a null pointer for the surface, ignore the LPSURFACE field */ - WARN("(%p) Null surface pointer specified, ignore it!\n", This); + WARN("(%p) Null surface pointer specified, ignore it!\n", ddraw); DDSD->dwFlags &= ~DDSD_LPSURFACE; } if((DDSD->ddsCaps.dwCaps & (DDSCAPS_FLIP | DDSCAPS_PRIMARYSURFACE)) == (DDSCAPS_FLIP | DDSCAPS_PRIMARYSURFACE) && - !(This->cooperative_level & DDSCL_EXCLUSIVE)) + !(ddraw->cooperative_level & DDSCL_EXCLUSIVE)) { - TRACE("(%p): Attempt to create a flipable primary surface without DDSCL_EXCLUSIVE set\n", This); + TRACE("(%p): Attempt to create a flipable primary surface without DDSCL_EXCLUSIVE set\n", + ddraw); *Surf = NULL; LeaveCriticalSection(&ddraw_cs); return DDERR_NOEXCLUSIVEMODE; @@ -2984,13 +2983,11 @@ static HRESULT CreateSurface(IDirectDraw7 *iface, desc2.u4.ddpfPixelFormat.dwSize=sizeof(DDPIXELFORMAT); /* Just to be sure */ /* Get the video mode from WineD3D - we will need it */ - hr = IWineD3DDevice_GetDisplayMode(This->wineD3DDevice, - 0, /* Swapchain 0 */ - &Mode); + hr = IWineD3DDevice_GetDisplayMode(ddraw->wineD3DDevice, 0, &Mode); if(FAILED(hr)) { ERR("Failed to read display mode from wined3d\n"); - switch(This->orig_bpp) + switch(ddraw->orig_bpp) { case 8: Mode.Format = WINED3DFMT_P8_UINT; @@ -3012,8 +3009,8 @@ static HRESULT CreateSurface(IDirectDraw7 *iface, Mode.Format = WINED3DFMT_B8G8R8X8_UNORM; break; } - Mode.Width = This->orig_width; - Mode.Height = This->orig_height; + Mode.Width = ddraw->orig_width; + Mode.Height = ddraw->orig_height; } /* No pixelformat given? Use the current screen format */ @@ -3129,7 +3126,7 @@ static HRESULT CreateSurface(IDirectDraw7 *iface, } /* Create the first surface */ - hr = ddraw_create_surface(This, &desc2, &object, 0); + hr = ddraw_create_surface(ddraw, &desc2, &object, 0); if (FAILED(hr)) { WARN("ddraw_create_surface failed, hr %#x.\n", hr); @@ -3158,24 +3155,24 @@ static HRESULT CreateSurface(IDirectDraw7 *iface, { desc2.ddsCaps.dwCaps2 &= ~DDSCAPS2_CUBEMAP_ALLFACES; desc2.ddsCaps.dwCaps2 |= DDSCAPS2_CUBEMAP_NEGATIVEZ; - hr |= CreateAdditionalSurfaces(This, object, extra_surfaces + 1, desc2, TRUE); + hr |= CreateAdditionalSurfaces(ddraw, object, extra_surfaces + 1, desc2, TRUE); desc2.ddsCaps.dwCaps2 &= ~DDSCAPS2_CUBEMAP_NEGATIVEZ; desc2.ddsCaps.dwCaps2 |= DDSCAPS2_CUBEMAP_POSITIVEZ; - hr |= CreateAdditionalSurfaces(This, object, extra_surfaces + 1, desc2, TRUE); + hr |= CreateAdditionalSurfaces(ddraw, object, extra_surfaces + 1, desc2, TRUE); desc2.ddsCaps.dwCaps2 &= ~DDSCAPS2_CUBEMAP_POSITIVEZ; desc2.ddsCaps.dwCaps2 |= DDSCAPS2_CUBEMAP_NEGATIVEY; - hr |= CreateAdditionalSurfaces(This, object, extra_surfaces + 1, desc2, TRUE); + hr |= CreateAdditionalSurfaces(ddraw, object, extra_surfaces + 1, desc2, TRUE); desc2.ddsCaps.dwCaps2 &= ~DDSCAPS2_CUBEMAP_NEGATIVEY; desc2.ddsCaps.dwCaps2 |= DDSCAPS2_CUBEMAP_POSITIVEY; - hr |= CreateAdditionalSurfaces(This, object, extra_surfaces + 1, desc2, TRUE); + hr |= CreateAdditionalSurfaces(ddraw, object, extra_surfaces + 1, desc2, TRUE); desc2.ddsCaps.dwCaps2 &= ~DDSCAPS2_CUBEMAP_POSITIVEY; desc2.ddsCaps.dwCaps2 |= DDSCAPS2_CUBEMAP_NEGATIVEX; - hr |= CreateAdditionalSurfaces(This, object, extra_surfaces + 1, desc2, TRUE); + hr |= CreateAdditionalSurfaces(ddraw, object, extra_surfaces + 1, desc2, TRUE); desc2.ddsCaps.dwCaps2 &= ~DDSCAPS2_CUBEMAP_NEGATIVEX; desc2.ddsCaps.dwCaps2 |= DDSCAPS2_CUBEMAP_POSITIVEX; } - hr |= CreateAdditionalSurfaces(This, object, extra_surfaces, desc2, FALSE); + hr |= CreateAdditionalSurfaces(ddraw, object, extra_surfaces, desc2, FALSE); if(hr != DD_OK) { /* This destroys and possibly created surfaces too */ @@ -3192,14 +3189,14 @@ static HRESULT CreateSurface(IDirectDraw7 *iface, * the render target as first surface. In this case the render target creation * will cause the 3D init. */ - if( (This->ImplType == SURFACE_OPENGL) && !(This->d3d_initialized) && + if( (ddraw->ImplType == SURFACE_OPENGL) && !(ddraw->d3d_initialized) && desc2.ddsCaps.dwCaps & (DDSCAPS_PRIMARYSURFACE | DDSCAPS_3DDEVICE) ) { IDirectDrawSurfaceImpl *target = object, *surface; struct list *entry; /* Search for the primary to use as render target */ - LIST_FOR_EACH(entry, &This->surface_list) + LIST_FOR_EACH(entry, &ddraw->surface_list) { surface = LIST_ENTRY(entry, IDirectDrawSurfaceImpl, surface_list_entry); if((surface->surface_desc.ddsCaps.dwCaps & (DDSCAPS_PRIMARYSURFACE | DDSCAPS_FRONTBUFFER)) == @@ -3212,8 +3209,8 @@ static HRESULT CreateSurface(IDirectDraw7 *iface, } } - TRACE("(%p) Attaching a D3DDevice, rendertarget = %p\n", This, target); - hr = ddraw_attach_d3d_device(This, target); + TRACE("(%p) Attaching a D3DDevice, rendertarget = %p\n", ddraw, target); + hr = ddraw_attach_d3d_device(ddraw, target); if (hr != D3D_OK) { IDirectDrawSurfaceImpl *release_surf; @@ -3237,14 +3234,14 @@ static HRESULT CreateSurface(IDirectDraw7 *iface, return hr; } } - else if(!(This->d3d_initialized) && desc2.ddsCaps.dwCaps & DDSCAPS_PRIMARYSURFACE) + else if(!(ddraw->d3d_initialized) && desc2.ddsCaps.dwCaps & DDSCAPS_PRIMARYSURFACE) { - ddraw_create_gdi_swapchain(This, object); + ddraw_create_gdi_swapchain(ddraw, object); } /* Addref the ddraw interface to keep an reference for each surface */ - IDirectDraw7_AddRef(iface); - object->ifaceToRelease = (IUnknown *) iface; + IDirectDraw7_AddRef((IDirectDraw7 *)ddraw); + object->ifaceToRelease = (IUnknown *)ddraw; /* Create a WineD3DTexture if a texture was requested */ if(desc2.ddsCaps.dwCaps & DDSCAPS_TEXTURE) @@ -3253,7 +3250,7 @@ static HRESULT CreateSurface(IDirectDraw7 *iface, UINT levels; WINED3DPOOL Pool = WINED3DPOOL_DEFAULT; - This->tex_root = object; + ddraw->tex_root = object; if(desc2.ddsCaps.dwCaps & DDSCAPS_MIPMAP) { @@ -3281,17 +3278,17 @@ static HRESULT CreateSurface(IDirectDraw7 *iface, */ if(desc2.ddsCaps.dwCaps2 & DDSCAPS2_CUBEMAP) { - hr = IWineD3DDevice_CreateCubeTexture(This->wineD3DDevice, DDSD->dwWidth /* Edgelength */, levels, - 0 /* usage */, Format, Pool, object, &ddraw_null_wined3d_parent_ops, + hr = IWineD3DDevice_CreateCubeTexture(ddraw->wineD3DDevice, DDSD->dwWidth, levels, 0, + Format, Pool, object, &ddraw_null_wined3d_parent_ops, (IWineD3DCubeTexture **)&object->wineD3DTexture); } else { - hr = IWineD3DDevice_CreateTexture(This->wineD3DDevice, DDSD->dwWidth, DDSD->dwHeight, levels, - 0 /* usage */, Format, Pool, object, &ddraw_null_wined3d_parent_ops, + hr = IWineD3DDevice_CreateTexture(ddraw->wineD3DDevice, DDSD->dwWidth, DDSD->dwHeight, + levels, 0, Format, Pool, object, &ddraw_null_wined3d_parent_ops, (IWineD3DTexture **)&object->wineD3DTexture); } - This->tex_root = NULL; + ddraw->tex_root = NULL; } LeaveCriticalSection(&ddraw_cs); @@ -3301,6 +3298,8 @@ static HRESULT CreateSurface(IDirectDraw7 *iface, static HRESULT WINAPI ddraw7_CreateSurface(IDirectDraw7 *iface, DDSURFACEDESC2 *surface_desc, IDirectDrawSurface7 **surface, IUnknown *outer_unknown) { + IDirectDrawImpl *This = (IDirectDrawImpl *)iface; + TRACE("iface %p, surface_desc %p, surface %p, outer_unknown %p.\n", iface, surface_desc, surface, outer_unknown); @@ -3322,7 +3321,7 @@ static HRESULT WINAPI ddraw7_CreateSurface(IDirectDraw7 *iface, return DDERR_INVALIDCAPS; } - return CreateSurface(iface, surface_desc, surface, outer_unknown); + return CreateSurface(This, surface_desc, surface, outer_unknown); } static HRESULT WINAPI ddraw4_CreateSurface(IDirectDraw4 *iface, @@ -3353,7 +3352,7 @@ static HRESULT WINAPI ddraw4_CreateSurface(IDirectDraw4 *iface, return DDERR_INVALIDCAPS; } - hr = CreateSurface((IDirectDraw7 *)ddraw, surface_desc, (IDirectDrawSurface7 **)surface, outer_unknown); + hr = CreateSurface(ddraw, surface_desc, (IDirectDrawSurface7 **)surface, outer_unknown); impl = (IDirectDrawSurfaceImpl *)*surface; if (SUCCEEDED(hr) && impl) { @@ -3395,7 +3394,7 @@ static HRESULT WINAPI ddraw3_CreateSurface(IDirectDraw3 *iface, return DDERR_INVALIDCAPS; } - hr = CreateSurface((IDirectDraw7 *)ddraw, (DDSURFACEDESC2 *)surface_desc, &surface7, outer_unknown); + hr = CreateSurface(ddraw, (DDSURFACEDESC2 *)surface_desc, &surface7, outer_unknown); if (FAILED(hr)) { *surface = NULL; @@ -3441,7 +3440,7 @@ static HRESULT WINAPI ddraw2_CreateSurface(IDirectDraw2 *iface, return DDERR_INVALIDCAPS; } - hr = CreateSurface((IDirectDraw7 *)ddraw, (DDSURFACEDESC2 *)surface_desc, &surface7, outer_unknown); + hr = CreateSurface(ddraw, (DDSURFACEDESC2 *)surface_desc, &surface7, outer_unknown); if (FAILED(hr)) { *surface = NULL; @@ -3477,7 +3476,7 @@ static HRESULT WINAPI ddraw1_CreateSurface(IDirectDraw *iface, /* Remove front buffer flag, this causes failure in v7, and its added to normal * primaries anyway. */ surface_desc->ddsCaps.dwCaps &= ~DDSCAPS_FRONTBUFFER; - hr = CreateSurface((IDirectDraw7 *)ddraw, (DDSURFACEDESC2 *)surface_desc, &surface7, outer_unknown); + hr = CreateSurface(ddraw, (DDSURFACEDESC2 *)surface_desc, &surface7, outer_unknown); if (FAILED(hr)) { *surface = NULL;