[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