[PATCH 3/5] wined3d: Properly retrieve the display mode in wined3d_device_set_cursor_properties().

Henri Verbeet hverbeet at codeweavers.com
Fri Jun 22 08:57:29 CDT 2012


---
 dlls/wined3d/device.c          |   15 ++++++++++-----
 dlls/wined3d/directx.c         |    2 --
 dlls/wined3d/wined3d_private.h |    1 -
 3 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 08b9b63..49b1efb 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -4800,7 +4800,9 @@ HRESULT CDECL wined3d_device_set_cursor_properties(struct wined3d_device *device
 
     if (cursor_image)
     {
+        struct wined3d_display_mode mode;
         struct wined3d_map_desc map_desc;
+        HRESULT hr;
 
         /* MSDN: Cursor must be A8R8G8B8 */
         if (cursor_image->resource.format->id != WINED3DFMT_B8G8R8A8_UNORM)
@@ -4809,13 +4811,18 @@ HRESULT CDECL wined3d_device_set_cursor_properties(struct wined3d_device *device
             return WINED3DERR_INVALIDCALL;
         }
 
+        if (FAILED(hr = wined3d_get_adapter_display_mode(device->wined3d, device->adapter->ordinal, &mode)))
+        {
+            ERR("Failed to get display mode, hr %#x.\n", hr);
+            return WINED3DERR_INVALIDCALL;
+        }
+
         /* MSDN: Cursor must be smaller than the display mode */
-        if (cursor_image->resource.width > device->adapter->screen_size.cx
-                || cursor_image->resource.height > device->adapter->screen_size.cy)
+        if (cursor_image->resource.width > mode.width || cursor_image->resource.height > mode.height)
         {
             WARN("Surface %p dimensions are %ux%u, but screen dimensions are %ux%u.\n",
                     cursor_image, cursor_image->resource.width, cursor_image->resource.height,
-                    device->adapter->screen_size.cx, device->adapter->screen_size.cy);
+                    mode.width, mode.height);
             return WINED3DERR_INVALIDCALL;
         }
 
@@ -5694,8 +5701,6 @@ HRESULT device_init(struct wined3d_device *device, struct wined3d *wined3d,
         wined3d_decref(device->wined3d);
         return hr;
     }
-    adapter->screen_size.cx = mode.width;
-    adapter->screen_size.cy = mode.height;
     adapter->screen_format = mode.format_id;
 
     /* Save the creation parameters. */
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index 8fe3109..2685504 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -3136,8 +3136,6 @@ HRESULT CDECL wined3d_set_adapter_display_mode(struct wined3d *wined3d,
     }
 
     /* Store the new values. */
-    adapter->screen_size.cx = mode->width;
-    adapter->screen_size.cy = mode->height;
     adapter->screen_format = mode->format_id;
 
     /* And finally clip mouse to our screen. */
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 9aa4be3..5d07091 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -1543,7 +1543,6 @@ struct wined3d_adapter
     BOOL                    opengl;
 
     POINT monitorPoint;
-    SIZE screen_size;
     enum wined3d_format_id screen_format;
 
     struct wined3d_gl_info  gl_info;
-- 
1.7.3.4




More information about the wine-patches mailing list