[PATCH v2 1/2] Report logical button state in ProcXIQueryPointer

Chase Douglas chase.douglas at canonical.com
Tue May 1 10:21:11 PDT 2012


Physical button state is usually meaningless to an X client.

Signed-off-by: Chase Douglas <chase.douglas at canonical.com>
---
Changes since v1:
* Copy loop from event_set_state() for setting button mask

 Xi/xiquerypointer.c |   13 ++++---------
 1 file changed, 4 insertions(+), 9 deletions(-)

diff --git a/Xi/xiquerypointer.c b/Xi/xiquerypointer.c
index a2e7442..ba99752 100644
--- a/Xi/xiquerypointer.c
+++ b/Xi/xiquerypointer.c
@@ -132,7 +132,7 @@ ProcXIQueryPointer(ClientPtr client)
     }
 
     if (pDev->button) {
-        int i, down;
+        int i;
 
         rep.buttons_len =
             bytes_to_int32(bits_to_bytes(pDev->button->numButtons));
@@ -142,14 +142,9 @@ ProcXIQueryPointer(ClientPtr client)
         if (!buttons)
             return BadAlloc;
 
-        down = pDev->button->buttonsDown;
-
-        for (i = 0; i < pDev->button->numButtons && down; i++) {
-            if (BitIsOn(pDev->button->down, i)) {
-                SetBit(buttons, i);
-                down--;
-            }
-        }
+        for (i = 1; i < pDev->button->numButtons; i++)
+            if (BitIsOn(pDev->button->down, i))
+                SetBit(buttons, pDev->button->map[i]);
     }
     else
         rep.buttons_len = 0;
-- 
1.7.9.5



More information about the xorg-devel mailing list