Henri Verbeet : ddraw: Move the mip-level dimensions fix-up from ddraw_surface_init() to ddraw_surface_create().

Alexandre Julliard julliard at wine.codeweavers.com
Fri Feb 5 08:24:17 CST 2016


Module: wine
Branch: master
Commit: 7d45318aeac41e2efabb9ddfbf95ecbea103e67d
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=7d45318aeac41e2efabb9ddfbf95ecbea103e67d

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Thu Feb  4 21:56:32 2016 +0100

ddraw: Move the mip-level dimensions fix-up from ddraw_surface_init() to ddraw_surface_create().

Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ddraw/surface.c | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/dlls/ddraw/surface.c b/dlls/ddraw/surface.c
index 923a935..a6fbceb 100644
--- a/dlls/ddraw/surface.c
+++ b/dlls/ddraw/surface.c
@@ -5643,8 +5643,8 @@ static HRESULT CDECL ddraw_reset_enum_callback(struct wined3d_resource *resource
 HRESULT ddraw_surface_create(struct ddraw *ddraw, const DDSURFACEDESC2 *surface_desc,
         struct ddraw_surface **surface, IUnknown *outer_unknown, unsigned int version)
 {
+    struct wined3d_resource_desc wined3d_desc, wined3d_mip_desc;
     struct ddraw_surface *root, *mip, **attach;
-    struct wined3d_resource_desc wined3d_desc;
     struct wined3d_texture *wined3d_texture;
     struct wined3d_resource *resource;
     struct wined3d_display_mode mode;
@@ -6103,9 +6103,17 @@ HRESULT ddraw_surface_create(struct ddraw *ddraw, const DDSURFACEDESC2 *surface_
             mip_desc = &mip->surface_desc;
 
             if (j)
+            {
+                wined3d_resource_get_desc(resource, &wined3d_mip_desc);
+                mip_desc->dwWidth = wined3d_mip_desc.width;
+                mip_desc->dwHeight = wined3d_mip_desc.height;
+
                 mip_desc->ddsCaps.dwCaps2 |= DDSCAPS2_MIPMAPSUBLEVEL;
+            }
             else
+            {
                 mip_desc->ddsCaps.dwCaps2 &= ~DDSCAPS2_MIPMAPSUBLEVEL;
+            }
 
             if (mip_desc->ddsCaps.dwCaps2 & DDSCAPS2_CUBEMAP)
             {
@@ -6233,7 +6241,6 @@ void ddraw_surface_init(struct ddraw_surface *surface, struct ddraw *ddraw,
 {
     struct ddraw_texture *texture = wined3d_texture_get_parent(wined3d_texture);
     DDSURFACEDESC2 *desc = &surface->surface_desc;
-    struct wined3d_resource_desc wined3d_desc;
     unsigned int version = texture->version;
 
     surface->IDirectDrawSurface7_iface.lpVtbl = &ddraw_surface7_vtbl;
@@ -6265,9 +6272,6 @@ void ddraw_surface_init(struct ddraw_surface *surface, struct ddraw *ddraw,
     }
 
     *desc = texture->surface_desc;
-    wined3d_resource_get_desc(wined3d_surface_get_resource(wined3d_surface), &wined3d_desc);
-    desc->dwWidth = wined3d_desc.width;
-    desc->dwHeight = wined3d_desc.height;
     surface->first_attached = surface;
 
     if (format_is_compressed(&desc->u4.ddpfPixelFormat))




More information about the wine-cvs mailing list