Mesa (master): st/nine: skip position checks in SetCursorPosition()

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Sat Apr 20 11:07:15 UTC 2019


Module: Mesa
Branch: master
Commit: 8b13aac9666951bade6ac5fff9eb7c45a7d2748a
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=8b13aac9666951bade6ac5fff9eb7c45a7d2748a

Author: Andre Heider <a.heider at gmail.com>
Date:   Thu Apr 11 08:42:47 2019 +0200

st/nine: skip position checks in SetCursorPosition()

For HW cursors, "cursor.pos" doesn't hold the current position of the
pointer, just the position of the last call to SetCursorPosition().

Skip the check against stale values and bump the d3dadapter9 drm version
to expose this change of behaviour.

Signed-off-by: Andre Heider <a.heider at gmail.com>
Reviewed-by: Axel Davy <davyaxel0 at gmail.com>

---

 include/d3dadapter/drm.h                  | 7 +++++--
 src/gallium/state_trackers/nine/device9.c | 8 +++++---
 2 files changed, 10 insertions(+), 5 deletions(-)

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;




More information about the mesa-commit mailing list