[PATCH 3/5] ddraw: Pass an IDirectDrawImpl* instead of an iface to CreateSurface().

Michael Stefaniuc mstefani at redhat.de
Tue Jan 18 05:25:50 CST 2011


---
On Henri's request don't use "This" in the internal helper function.



 dlls/ddraw/ddraw.c |   85 +++++++++++++++++++++++++--------------------------
 1 files changed, 42 insertions(+), 43 deletions(-)

diff --git a/dlls/ddraw/ddraw.c b/dlls/ddraw/ddraw.c
index 626993c..73cb58e 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;
-- 
1.7.3.4



More information about the wine-patches mailing list