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.hutte...@who-t.net> Date: Fri Feb 1 15:53:14 2013 +1000 synaptics 1.6.3 Signed-off-by: Peter Hutterer <peter.hutte...@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.hutte...@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.hutte...@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.hutte...@who-t.net> Date: Thu Jan 17 19:22:03 2013 +1000 synaptics 1.6.2.901 Signed-off-by: Peter Hutterer <peter.hutte...@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.hutte...@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.hutte...@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 <dan...@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 <dan...@fooishbar.org> Reviewed-by: Dan Nicholson <dbn.li...@gmail.com> Signed-off-by: Peter Hutterer <peter.hutte...@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.hutte...@who-t.net> Date: Fri May 25 14:20:39 2012 +1000 Use LogMessageVerbSigSafe on ABI 18 Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> Reviewed-by: Chase Douglas <chase.doug...@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.hutte...@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.hutte...@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.hutte...@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.hutte...@who-t.net> (cherry picked from commit a5ac54f60af96b9b862425ccd8b6c7afaa4937e4) Signed-off-by: Peter Hutterer <peter.hutte...@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.hutte...@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.hutte...@who-t.net> Reviewed-by: Chase Douglas <chase.doug...@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; -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/e1udxu6-00007k...@vasks.debian.org