[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

xserver-xorg-input-synaptics: Changes to 'upstream-experimental'



 conf/50-synaptics.conf |    3 +++
 configure.ac           |    2 +-
 src/eventcomm.c        |   12 ++++++------
 src/properties.c       |   10 ++++++++++
 src/ps2comm.c          |    8 ++++----
 src/synaptics.c        |    7 +++++--
 src/synapticsstr.h     |    4 ++++
 test/fake-symbols.c    |   12 ++++++------
 test/fake-symbols.h    |    2 --
 9 files changed, 39 insertions(+), 21 deletions(-)

New commits:
commit 947d96faabc7267177da32fbfc9f8c3a81b576af
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Feb 1 15:53:14 2013 +1000

    synaptics 1.6.3
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

diff --git a/configure.ac b/configure.ac
index 2490ddb..a2e68a8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,7 +23,7 @@
 # Initialize Autoconf
 AC_PREREQ([2.60])
 AC_INIT([xf86-input-synaptics],
-        [1.6.2.901],
+        [1.6.3],
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
         [xf86-input-synaptics])
 AC_CONFIG_SRCDIR([Makefile.am])

commit 3b02d3061e58097ab5644b85250ed48e5ef0b02a
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Jan 4 16:08:47 2013 +1000

    conf: add example for AreaBottomEdge on clickpad buttons
    
    Those that use clickpad buttons as buttons can see cursor jumps as the press
    on the touchpad - largely caused by the finger changing shape as the
    pressure changes and thus moving the hotspot.
    
    Simple fix is to define the clickpad soft button areas as dead areas, but
    this cannot be set as general option as it would break for those that use
    tapping.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    (cherry picked from commit 2159b5d26207c83efea6efca7fa5765df95a4219)

diff --git a/conf/50-synaptics.conf b/conf/50-synaptics.conf
index 9e86a7a..dd16ca2 100644
--- a/conf/50-synaptics.conf
+++ b/conf/50-synaptics.conf
@@ -32,6 +32,9 @@ Section "InputClass"
         Identifier "Default clickpad buttons"
         MatchDriver "synaptics"
         Option "SoftButtonAreas" "50% 0 82% 0 0 0 0 0"
+#       To disable the bottom edge area so the buttons only work as buttons,
+#       not for movement, set the AreaBottomEdge
+#       Option "AreaBottomEdge" "82%"
 EndSection
 
 # This option disables software buttons on Apple touchpads.

commit f23991d3c2bbf25d467ddd6d850acd5bca3cd4b2
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu Jan 17 19:22:03 2013 +1000

    synaptics 1.6.2.901
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

diff --git a/configure.ac b/configure.ac
index 894d4f5..2490ddb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,7 +23,7 @@
 # Initialize Autoconf
 AC_PREREQ([2.60])
 AC_INIT([xf86-input-synaptics],
-        [1.6.2],
+        [1.6.2.901],
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
         [xf86-input-synaptics])
 AC_CONFIG_SRCDIR([Makefile.am])

commit cb883766ec07b3380541fe9248aa46f07c39c338
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu Aug 23 16:22:31 2012 +1000

    Recognise the soft button area property before clickpad is enabled
    
    Otherwise the driver has no internal reference to the soft button area
    property and will ignore any setting.
    
    Also, if a client sets this property, we claim it as our own and disallow
    deletion.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    (cherry picked from commit 86460318ba5606ef41712b52e50bf7b2ba083226)

diff --git a/src/properties.c b/src/properties.c
index 3b3f1c5..83f370d 100644
--- a/src/properties.c
+++ b/src/properties.c
@@ -839,6 +839,16 @@ SetProperty(DeviceIntPtr dev, Atom property, XIPropertyValuePtr prop,
     }
     else if (property == prop_product_id || property == prop_device_node)
         return BadValue;        /* read-only */
+    else { /* unknown property */
+        if (strcmp(SYNAPTICS_PROP_SOFTBUTTON_AREAS, NameForAtom(property)) == 0)
+        {
+            prop_softbutton_areas = property;
+            if (SetProperty(dev, property, prop, checkonly) != Success)
+                prop_softbutton_areas = 0;
+            else if (!checkonly)
+                XISetDevicePropertyDeletable(dev, property, FALSE);
+        }
+    }
 
     return Success;
 }

commit 7d1df986e1330a02cfb74a0babae1ae78768aa52
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Sat Dec 29 03:24:52 2012 +0000

    Free mtdev device as well as closing it
    
    mtdev_close_delete() is to mtdev_new_open() as mtdev_close() is to
    mtdev_open().  So, since we're using mtdev_new_open(), we need to use
    mtdev_close_delete() instead of just mtdev_close() to actually free
    everything.
    
    Fixes an eventual failure to open the touchpad device after a lot of
    suspend/resume cycles.
    
    [whot: amended to mtdev_close_delete in evdev_query_touch]
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>
    Reviewed-by: Dan Nicholson <dbn.lists@gmail.com>
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    (cherry picked from commit ce7565ea6683f594f1f2ab5769bf60b1337d70bd)

diff --git a/src/eventcomm.c b/src/eventcomm.c
index b811da7..c930f6a 100644
--- a/src/eventcomm.c
+++ b/src/eventcomm.c
@@ -126,7 +126,7 @@ UninitializeTouch(InputInfoPtr pInfo)
         proto_data->last_mt_vals = NULL;
     }
 
-    mtdev_close(proto_data->mtdev);
+    mtdev_close_delete(proto_data->mtdev);
     proto_data->mtdev = NULL;
     proto_data->num_touches = 0;
 }
@@ -878,7 +878,7 @@ event_query_touch(InputInfoPtr pInfo)
     }
 
  out:
-    mtdev_close(mtdev);
+    mtdev_close_delete(mtdev);
 }
 #endif
 

commit 04439c088b6d17e6ed374c185a82ca82fe93d0d3
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri May 25 14:20:39 2012 +1000

    Use LogMessageVerbSigSafe on ABI 18
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
    (cherry picked from commit e28575b29b394b38f1d92b75353fc0fe82838b7c)

diff --git a/src/eventcomm.c b/src/eventcomm.c
index 280ef9b..b811da7 100644
--- a/src/eventcomm.c
+++ b/src/eventcomm.c
@@ -518,13 +518,13 @@ SynapticsReadEvent(InputInfoPtr pInfo, struct input_event *ev)
     if (len <= 0) {
         /* We use X_NONE here because it doesn't alloc */
         if (errno != EAGAIN)
-            xf86MsgVerb(X_NONE, 0, "%s: Read error %s\n", pInfo->name,
-                        strerror(errno));
+            LogMessageVerbSigSafe(X_ERROR, 0, "%s: Read error %d\n", pInfo->name,
+                                  errno);
         rc = FALSE;
     }
     else if (len % sizeof(*ev)) {
-        xf86MsgVerb(X_NONE, 0, "%s: Read error, invalid number of bytes.",
-                    pInfo->name);
+        LogMessageVerbSigSafe(X_ERROR, 0, "%s: Read error, invalid number of bytes.",
+                              pInfo->name);
         rc = FALSE;
     }
     return rc;
diff --git a/src/ps2comm.c b/src/ps2comm.c
index f88b5cb..bcbcf9b 100644
--- a/src/ps2comm.c
+++ b/src/ps2comm.c
@@ -483,8 +483,8 @@ ps2_synaptics_get_packet(InputInfoPtr pInfo, struct PS2SynapticsHwInfo *synhw,
 
         /* to avoid endless loops */
         if (count++ > 30) {
-            xf86IDrvMsg(pInfo, X_ERROR,
-                        "Synaptics driver lost sync... got gigantic packet!\n");
+            LogMessageVerbSigSafe(X_ERROR, 0,
+                                  "Synaptics driver lost sync... got gigantic packet!\n");
             return FALSE;
         }
 
@@ -538,8 +538,8 @@ PS2ReadHwStateProto(InputInfoPtr pInfo,
 
     synhw = (struct PS2SynapticsHwInfo *) priv->proto_data;
     if (!synhw) {
-        xf86IDrvMsg(pInfo, X_ERROR,
-                    "PS2ReadHwState, synhw is NULL. This is a bug.\n");
+        LogMessageVerbSigSafe(X_ERROR, 0,
+                              "PS2ReadHwState, synhw is NULL. This is a bug.\n");
         return FALSE;
     }
 
diff --git a/src/synapticsstr.h b/src/synapticsstr.h
index dd6a09b..fbae394 100644
--- a/src/synapticsstr.h
+++ b/src/synapticsstr.h
@@ -25,6 +25,10 @@
 #include "synproto.h"
 #include <xserver-properties.h>
 
+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 18
+#define LogMessageVerbSigSafe xf86MsgVerb
+#endif
+
 #ifdef DBG
 #undef DBG
 #endif
diff --git a/test/fake-symbols.c b/test/fake-symbols.c
index 8a17e01..86818f8 100644
--- a/test/fake-symbols.c
+++ b/test/fake-symbols.c
@@ -321,6 +321,12 @@ xf86IDrvMsg(InputInfoPtr dev, MessageType type, const char *format, ...)
 }
 
 _X_EXPORT void
+LogMessageVerbSigSafe(MessageType type, int verb, const char *format, ...)
+{
+    return;
+}
+
+_X_EXPORT void
 xf86PostMotionEventP(DeviceIntPtr device,
                      int is_absolute, int first_valuator, int num_valuators,
 #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12

commit cf117e2b0d995e9a044914b66c237c157c86d71c
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Mon Oct 8 11:10:44 2012 +1000

    test: drop xf86CheckStrOption from fake symbols
    
    The tests don't need this symbol anymore.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    (cherry picked from commit 3cb14dcccf5574366d90e24f351e3ad04b35e35f)
    
    Conflicts:
    	test/fake-symbols.c
    	test/fake-symbols.h

diff --git a/test/fake-symbols.c b/test/fake-symbols.c
index 6f55c7b..8a17e01 100644
--- a/test/fake-symbols.c
+++ b/test/fake-symbols.c
@@ -85,12 +85,6 @@ xf86NameCmp(const char *s1, const char *s2)
     return 0;
 }
 
-_X_EXPORT char *
-xf86CheckStrOption(OPTTYPE optlist, const char *name, char *deflt)
-{
-    return NULL;
-}
-
 _X_EXPORT void
 xf86AddEnabledDevice(InputInfoPtr pInfo)
 {
diff --git a/test/fake-symbols.h b/test/fake-symbols.h
index 70049d0..3bad122 100644
--- a/test/fake-symbols.h
+++ b/test/fake-symbols.h
@@ -23,7 +23,6 @@ extern OPTTYPE xf86AddNewOption(OPTTYPE head, const char *name,
 extern char *xf86OptionName(OPTTYPE opt);
 extern CONST char *xf86FindOptionValue(OPTTYPE options, const char *name);
 extern int xf86NameCmp(const char *s1, const char *s2);
-extern char *xf86CheckStrOption(OPTTYPE optlist, const char *name, char *deflt);
 
 extern char *xf86SetStrOption(OPTTYPE optlist, const char *name,
                               CONST char *deflt);
@@ -34,7 +33,6 @@ extern CONST char *xf86FindOptionValue(OPTTYPE options, const char *name);
 extern char *xf86OptionName(OPTTYPE opt);
 extern char *xf86OptionValue(OPTTYPE opt);
 extern int xf86NameCmp(const char *s1, const char *s2);
-extern char *xf86CheckStrOption(OPTTYPE optlist, const char *name, char *deflt);
 extern void xf86AddEnabledDevice(InputInfoPtr pInfo);
 extern void xf86RemoveEnabledDevice(InputInfoPtr pInfo);
 extern Atom XIGetKnownProperty(char *name);

commit eebb562e92349f428463b241f371b420c93b5081
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Dec 21 10:37:34 2012 +1000

    Allow dead areas to update the button state
    
    On clickpads, a dead area helps prevent pointer movement when the buttons
    are pressed. Thus check for the button state before resetting the hw state
    in case we get a right-click in the soft button area.
    
    For clickfinger, the effect is that clickfinger events are now triggered if
    the finger rests in the dead area.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    (cherry picked from commit a5ac54f60af96b9b862425ccd8b6c7afaa4937e4)
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    
    Conflicts:
    	src/synaptics.c

diff --git a/src/synaptics.c b/src/synaptics.c
index a28e984..56dc55b 100644
--- a/src/synaptics.c
+++ b/src/synaptics.c
@@ -3307,6 +3307,9 @@ HandleState(InputInfoPtr pInfo, struct SynapticsHwState *hw, CARD32 now,
 
     inside_active_area = is_inside_active_area(priv, hw->x, hw->y);
 
+    /* these two just update hw->left, right, etc. */
+    update_hw_button_state(pInfo, hw, priv->old_hw_state, now, &delay);
+
     /* now we know that these _coordinates_ aren't in the area.
        invalid are: x, y, z, numFingers, fingerWidth
        valid are: millis, left/right/middle/up/down/etc.
@@ -3318,8 +3321,6 @@ HandleState(InputInfoPtr pInfo, struct SynapticsHwState *hw, CARD32 now,
          * really release, the finger should remain down. */
     }
 
-    /* these two just update hw->left, right, etc. */
-    update_hw_button_state(pInfo, hw, priv->old_hw_state, now, &delay);
     if (priv->has_scrollbuttons)
         double_click = adjust_state_from_scrollbuttons(pInfo, hw);
 

commit eae444eb1a85d2401501d29f9a6c654c046f806b
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu Aug 30 16:38:38 2012 +1000

    Reset num_active_touches on DeviceOff (#52496)
    
    When disabling the device, reset num_active_touches to zero. Otherwise,
    num_active_touches stays at the value it was on DeviceOff(). Future touches
    add to that value until the index may go past priv->open_slots[].
    That causes spurious memory corruption on touch ends.
    
    And as of 55fc42e7c9b4948cadd4f98ef7b6a3b12e268e3e we ignore pre-existing
    touches anyway.
    
    Test-case:
    - place num_touches fingers on the touchpad
    - xinput disable <device>
    - lift fingers
    - xinput enable <device>
    - place finger on device, num_active_touches is now (num_touches + 1)
    
    X.Org Bug 52496 <http://bugs.freedesktop.org/show_bug.cgi?id=52496>
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
    (cherry picked from commit a245d42f53096b1ae81e6702729f97ca508e5b5b)
    
    Conflicts:
    	src/synaptics.c

diff --git a/src/synaptics.c b/src/synaptics.c
index cd9f936..a28e984 100644
--- a/src/synaptics.c
+++ b/src/synaptics.c
@@ -1154,6 +1154,7 @@ SynapticsReset(SynapticsPrivate * priv)
     priv->prev_z = 0;
     priv->prevFingers = 0;
 #ifdef HAVE_MULTITOUCH
+    priv->num_active_touches = 0;
     memset(priv->open_slots, 0, priv->num_slots * sizeof(int));
 #endif
 }
@@ -3118,6 +3119,7 @@ UpdateTouchState(InputInfoPtr pInfo, struct SynapticsHwState *hw)
         if (hw->slot_state[i] == SLOTSTATE_OPEN) {
             priv->open_slots[priv->num_active_touches] = i;
             priv->num_active_touches++;
+            BUG_WARN(priv->num_active_touches > priv->num_slots);
         }
         else if (hw->slot_state[i] == SLOTSTATE_CLOSE) {
             Bool found = FALSE;


Reply to: