[haiku-commits] haiku: hrev45224 - src/add-ons/kernel/bus_managers/ps2

  • From: zharik@xxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Thu, 31 Jan 2013 21:45:57 +0100 (CET)

hrev45224 adds 1 changeset to branch 'master'
old head: c33a865c7c3ce73ab74354a41ac83cf4de20d726
new head: 777178a56fea932075d8f19140cb3b390679d659
overview: http://cgit.haiku-os.org/haiku/log/?qt=range&q=777178a+%5Ec33a865

----------------------------------------------------------------------------

777178a: Call UpdateButtons on mouse_movement data for ALPS device
  
  This fixes problem with B_MOUSE_DOWN messages produced by Thinkpad
  TrackPoint buttons. Those messages have 'clicks' parameter always
  equal to zero. Solution was suggested by korli. Thanks!
  
  Fixes #8978
  
  Signed-off-by: Siarzhuk Zharski <zharik@xxxxxx>

                                          [ Michael Kanis <mks@xxxxxxxxxx> ]

----------------------------------------------------------------------------

Revision:    hrev45224
Commit:      777178a56fea932075d8f19140cb3b390679d659
URL:         http://cgit.haiku-os.org/haiku/commit/?id=777178a
Author:      Michael Kanis <mks@xxxxxxxxxx>
Date:        Thu Jan 31 20:29:26 2013 UTC
Committer:   Siarzhuk Zharski <zharik@xxxxxx>
Commit-Date: Thu Jan 31 20:41:14 2013 UTC

Ticket:      https://dev.haiku-os.org/ticket/8978

----------------------------------------------------------------------------

3 files changed, 11 insertions(+), 8 deletions(-)
src/add-ons/kernel/bus_managers/ps2/movement_maker.cpp |  6 +++---
src/add-ons/kernel/bus_managers/ps2/movement_maker.h   |  3 ++-
src/add-ons/kernel/bus_managers/ps2/ps2_alps.cpp       | 10 ++++++----

----------------------------------------------------------------------------

diff --git a/src/add-ons/kernel/bus_managers/ps2/movement_maker.cpp 
b/src/add-ons/kernel/bus_managers/ps2/movement_maker.cpp
index 868cd12..41bdf86 100644
--- a/src/add-ons/kernel/bus_managers/ps2/movement_maker.cpp
+++ b/src/add-ons/kernel/bus_managers/ps2/movement_maker.cpp
@@ -483,7 +483,7 @@ TouchpadMovement::_EdgeMotion(mouse_movement *movement, 
touch_event *event,
        Also, it sets the button state from movement->buttons.
 */
 void
-TouchpadMovement::_UpdateButtons(mouse_movement *movement)
+TouchpadMovement::UpdateButtons(mouse_movement *movement)
 {
        // set click count correctly according to double click timeout
        if (movement->buttons != 0 && fButtonsState == 0) {
@@ -549,7 +549,7 @@ TouchpadMovement::_NoTouchToMovement(touch_event *event,
        }
 
        movement->buttons = buttons;
-       _UpdateButtons(movement);
+       UpdateButtons(movement);
 }
 
 
@@ -601,7 +601,7 @@ TouchpadMovement::_MoveToMovement(touch_event *event, 
mouse_movement *movement)
                fTapDeltaY = 0;
        }
 
-       _UpdateButtons(movement);
+       UpdateButtons(movement);
 }
 
 
diff --git a/src/add-ons/kernel/bus_managers/ps2/movement_maker.h 
b/src/add-ons/kernel/bus_managers/ps2/movement_maker.h
index 31692c0..2c762b5 100644
--- a/src/add-ons/kernel/bus_managers/ps2/movement_maker.h
+++ b/src/add-ons/kernel/bus_managers/ps2/movement_maker.h
@@ -111,11 +111,12 @@ public:
                        bool                            TapDragStarted() { 
return fTapdragStarted; }
                        bool                            WasEdgeMotion() { 
return fValidEdgeMotion; }
 
+                       void                            
UpdateButtons(mouse_movement *movement);
+
                        bigtime_t                       click_speed;
 private:
                        bool                            
_EdgeMotion(mouse_movement *movement,
                                                                        
touch_event *event, bool validStart);
-       inline  void                            _UpdateButtons(mouse_movement 
*movement);
        inline  void                            _NoTouchToMovement(touch_event 
*event,
                                                                        
mouse_movement *movement);
        inline  void                            _MoveToMovement(touch_event 
*event,
diff --git a/src/add-ons/kernel/bus_managers/ps2/ps2_alps.cpp 
b/src/add-ons/kernel/bus_managers/ps2/ps2_alps.cpp
index 16aded4..70625df 100644
--- a/src/add-ons/kernel/bus_managers/ps2/ps2_alps.cpp
+++ b/src/add-ons/kernel/bus_managers/ps2/ps2_alps.cpp
@@ -215,7 +215,7 @@ get_alps_movment(alps_cookie *cookie, mouse_movement 
*movement)
        }
 
        event.buttons = event_buffer[3] & 7;
-       event.zPressure = event_buffer[5];
+       event.zPressure = event_buffer[5];
 
        // finger on touchpad
        if (event_buffer[2] & 0x2) {
@@ -236,8 +236,8 @@ get_alps_movment(alps_cookie *cookie, mouse_movement 
*movement)
 
        cookie->previousZ = event.zPressure;
 
-       event.xPosition = event_buffer[1] | ((event_buffer[2] & 0x78) << 4);
-       event.yPosition = event_buffer[4] | ((event_buffer[3] & 0x70) << 3);
+       event.xPosition = event_buffer[1] | ((event_buffer[2] & 0x78) << 4);
+       event.yPosition = event_buffer[4] | ((event_buffer[3] & 0x70) << 3);
 
        // check for trackpoint even (z pressure 127)
        if (sFoundModel->flags & ALPS_DUALPOINT && event.zPressure == 127) {
@@ -248,9 +248,11 @@ get_alps_movment(alps_cookie *cookie, mouse_movement 
*movement)
                movement->wheel_xdelta = 0;
                movement->wheel_ydelta = 0;
                movement->buttons = event.buttons;
+               movement->timestamp = system_time();
+               cookie->movementMaker.UpdateButtons(movement);
        } else {
                event.yPosition = AREA_END_Y - (event.yPosition - AREA_START_Y);
-               status = cookie->movementMaker.EventToMovement(&event, 
movement);
+               status = cookie->movementMaker.EventToMovement(&event, 
movement);
        }
 
        if (cookie->movementMaker.WasEdgeMotion()


Other related posts:

  • » [haiku-commits] haiku: hrev45224 - src/add-ons/kernel/bus_managers/ps2 - zharik