diff --git a/include/d3dadapter/drm.h b/include/d3dadapter/drm.h index 647f017fc7f..6939dd4f239 100644 --- a/include/d3dadapter/drm.h +++ b/include/d3dadapter/drm.h @@ -29,11 +29,14 @@ #define D3DADAPTER9DRM_NAME "drm" /* current version */ #define D3DADAPTER9DRM_MAJOR 0 -#define D3DADAPTER9DRM_MINOR 1 +#define D3DADAPTER9DRM_MINOR 2 /* version 0.0: Initial release * 0.1: All IDirect3D objects can be assumed to have a pointer to the - * internal vtable in second position of the structure */ + * internal vtable in second position of the structure + * 0.2: IDirect3DDevice9_SetCursorPosition always calls + * ID3DPresent_SetCursorPos for hardware cursors + */ struct D3DAdapter9DRM { diff --git a/src/gallium/state_trackers/nine/device9.c b/src/gallium/state_trackers/nine/device9.c index db1c3a1d23d..0b1fe59cb70 100644 --- a/src/gallium/state_trackers/nine/device9.c +++ b/src/gallium/state_trackers/nine/device9.c @@ -793,9 +793,11 @@ NineDevice9_SetCursorPosition( struct NineDevice9 *This, DBG("This=%p X=%d Y=%d Flags=%d\n", This, X, Y, Flags); - if (This->cursor.pos.x == X && - This->cursor.pos.y == Y) - return; + /* present >= v1.4 handles this itself */ + if (This->minor_version_num < 4) { + if (This->cursor.pos.x == X && This->cursor.pos.y == Y) + return; + } This->cursor.pos.x = X; This->cursor.pos.y = Y;