Hello community,
here is the log from the commit of package xf86-input-synaptics for
openSUSE:Factory checked in at 2013-05-27 10:11:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xf86-input-synaptics (Old)
and /work/SRC/openSUSE:Factory/.xf86-input-synaptics.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xf86-input-synaptics"
Changes:
--------
---
/work/SRC/openSUSE:Factory/xf86-input-synaptics/xf86-input-synaptics.changes
2013-04-05 17:30:30.000000000 +0200
+++
/work/SRC/openSUSE:Factory/.xf86-input-synaptics.new/xf86-input-synaptics.changes
2013-05-27 10:11:21.000000000 +0200
@@ -1,0 +2,12 @@
+Tue May 14 14:46:30 UTC 2013 - [email protected]
+
+- Update to version 1.7.1:
+ First stable update to synaptics 1.7 is now available.
+- User-visible changes:
+ + soft button areas may overlap on the edge, so a configuration of
+ e.g.middle button 33%-66% and right button 66%-0 is now valid.
+ + man page fix to avoid confusion between 0 and 0% on button configuration
+ This release also includes the fix for stack smash caused by Apple
+ MagicTrackpads.
+
+-------------------------------------------------------------------
Old:
----
xf86-input-synaptics-1.7.0.tar.bz2
New:
----
xf86-input-synaptics-1.7.1.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ xf86-input-synaptics.spec ++++++
--- /var/tmp/diff_new_pack.c5Rxki/_old 2013-05-27 10:11:22.000000000 +0200
+++ /var/tmp/diff_new_pack.c5Rxki/_new 2013-05-27 10:11:22.000000000 +0200
@@ -17,7 +17,7 @@
Name: xf86-input-synaptics
-Version: 1.7.0
+Version: 1.7.1
Release: 0
Summary: Synaptics touchpad input driver for the Xorg X server
License: MIT
++++++ xf86-input-synaptics-1.7.0.tar.bz2 -> xf86-input-synaptics-1.7.1.tar.bz2
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xf86-input-synaptics-1.7.0/ChangeLog
new/xf86-input-synaptics-1.7.1/ChangeLog
--- old/xf86-input-synaptics-1.7.0/ChangeLog 2013-04-02 05:24:39.000000000
+0200
+++ new/xf86-input-synaptics-1.7.1/ChangeLog 2013-05-13 02:05:07.000000000
+0200
@@ -1,3 +1,88 @@
+commit 96cf04dce19e7c90bc05b8b3b192b5bfb97381d2
+Author: Peter Hutterer <[email protected]>
+Date: Mon May 13 10:03:48 2013 +1000
+
+ synaptics 1.7.1
+
+ Signed-off-by: Peter Hutterer <[email protected]>
+
+commit 3bd40423b26ab692174ddcdd12489467ba876926
+Author: Peter Hutterer <[email protected]>
+Date: Thu May 9 11:09:51 2013 +1000
+
+ Plug memory leak for priv->touch_axes
+
+ Allocated in event_query_touch, was never freed.
+
+ Signed-off-by: Peter Hutterer <[email protected]>
+ Reviewed-by: Dave Airlie <[email protected]>
+
+commit eb50f8023e9ce11c3f0249ef9ddf398a1d983c84
+Author: Peter Hutterer <[email protected]>
+Date: Thu May 9 11:06:12 2013 +1000
+
+ Plug memory leak for option_string
+
+ xf86SetStrOption() returns a strdup'd string that must be freed after use.
+
+ Signed-off-by: Peter Hutterer <[email protected]>
+ Reviewed-by: Dave Airlie <[email protected]>
+
+commit 7cc0ebf0858ebb505d933839f25bb269a8cdb764
+Author: Peter Hutterer <[email protected]>
+Date: Fri Apr 26 10:09:10 2013 +1000
+
+ Fix stack smash in clickpad_guess_clickfingers()
+
+ Apple Magic Trackpad can report 16 slots. In clickpad_guess_clickfingers()
+ the array allocated on the stack contains only 10 slots.
+ As (.num_mt_mask == .num_slots), the function writes out of the bounds
+ of close_point.
+
+ Use a size 32 bitmask instead and warn if we ever get past 32 touchpoints.
+
+ This fixes:
+ https://bugzilla.redhat.com/show_bug.cgi?id=952221
+
+ Signed-off-by: Peter Hutterer <[email protected]>
+ Reported-by: Benjamin Tissoires <[email protected]>
+
+commit ac47b4ea5b4f7b920b84a1e70adce3475e3be346
+Author: Peter Hutterer <[email protected]>
+Date: Wed Apr 3 10:50:50 2013 +1000
+
+ Allow soft button areas to overlap on the edge
+
+ For percent-based configuration in the form of
+ middle button 33%-66%, right button 66%-0 we'd get an error because of the
+ one device unit overlap. This was neither documented nor useful, because
+ leaving a 1% gap leaves an actual gap between the buttons. Allow for an
+ overlap of one device unit on the edge of the buttons.
+
+ What's picked in that case depends on the implementation of
+ is_inside_softbutton_area but since one device unit is so small, it doesn't
+ matter.
+
+ Signed-off-by: Peter Hutterer <[email protected]>
+
+commit 368d96f4dfd4605b80d039ec4508c906c3723cf7
+Author: Peter Hutterer <[email protected]>
+Date: Wed Apr 3 10:50:21 2013 +1000
+
+ man: clarify that 0, not 0% disables the softbutton area
+
+ Signed-off-by: Peter Hutterer <[email protected]>
+
+commit 148afc2dd55bb5d256d8b251542c90bcca7aaf84
+Author: Peter Hutterer <[email protected]>
+Date: Wed Apr 3 10:34:28 2013 +1000
+
+ Improve readability of the soft button areas
+
+ Replace the hardcoded indices with enums that are somewhat expressive.
+
+ Signed-off-by: Peter Hutterer <[email protected]>
+
commit 691e8db4d8a5e35eb31f62d1e54523917e2830cd
Author: Peter Hutterer <[email protected]>
Date: Tue Apr 2 13:12:09 2013 +1000
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xf86-input-synaptics-1.7.0/configure
new/xf86-input-synaptics-1.7.1/configure
--- old/xf86-input-synaptics-1.7.0/configure 2013-04-02 05:12:20.000000000
+0200
+++ new/xf86-input-synaptics-1.7.1/configure 2013-05-13 02:04:21.000000000
+0200
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for xf86-input-synaptics 1.7.0.
+# Generated by GNU Autoconf 2.69 for xf86-input-synaptics 1.7.1.
#
# Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=xorg>.
#
@@ -591,8 +591,8 @@
# Identity of this package.
PACKAGE_NAME='xf86-input-synaptics'
PACKAGE_TARNAME='xf86-input-synaptics'
-PACKAGE_VERSION='1.7.0'
-PACKAGE_STRING='xf86-input-synaptics 1.7.0'
+PACKAGE_VERSION='1.7.1'
+PACKAGE_STRING='xf86-input-synaptics 1.7.1'
PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg'
PACKAGE_URL=''
@@ -1380,7 +1380,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures xf86-input-synaptics 1.7.0 to adapt to many kinds of
systems.
+\`configure' configures xf86-input-synaptics 1.7.1 to adapt to many kinds of
systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1451,7 +1451,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of xf86-input-synaptics 1.7.0:";;
+ short | recursive ) echo "Configuration of xf86-input-synaptics 1.7.1:";;
esac
cat <<\_ACEOF
@@ -1590,7 +1590,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-xf86-input-synaptics configure 1.7.0
+xf86-input-synaptics configure 1.7.1
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1914,7 +1914,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by xf86-input-synaptics $as_me 1.7.0, which was
+It was created by xf86-input-synaptics $as_me 1.7.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2743,7 +2743,7 @@
# Define the identity of the package.
PACKAGE='xf86-input-synaptics'
- VERSION='1.7.0'
+ VERSION='1.7.1'
cat >>confdefs.h <<_ACEOF
@@ -18903,7 +18903,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by xf86-input-synaptics $as_me 1.7.0, which was
+This file was extended by xf86-input-synaptics $as_me 1.7.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -18969,7 +18969,7 @@
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //;
s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-xf86-input-synaptics config.status 1.7.0
+xf86-input-synaptics config.status 1.7.1
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xf86-input-synaptics-1.7.0/configure.ac
new/xf86-input-synaptics-1.7.1/configure.ac
--- old/xf86-input-synaptics-1.7.0/configure.ac 2013-04-02 05:12:07.000000000
+0200
+++ new/xf86-input-synaptics-1.7.1/configure.ac 2013-05-13 02:03:41.000000000
+0200
@@ -23,7 +23,7 @@
# Initialize Autoconf
AC_PREREQ([2.60])
AC_INIT([xf86-input-synaptics],
- [1.7.0],
+ [1.7.1],
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
[xf86-input-synaptics])
AC_CONFIG_SRCDIR([Makefile.am])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xf86-input-synaptics-1.7.0/man/synaptics.man
new/xf86-input-synaptics-1.7.1/man/synaptics.man
--- old/xf86-input-synaptics-1.7.0/man/synaptics.man 2013-02-04
06:25:54.000000000 +0100
+++ new/xf86-input-synaptics-1.7.1/man/synaptics.man 2013-05-13
02:03:25.000000000 +0200
@@ -441,8 +441,10 @@
button, respectively, the second four parameters are the left, right, top,
bottom edge of the middle button, respectively. Any of the values may be
given as percentage of the touchpad width or height, whichever applies.
-If any edge is set to 0, the button is assumed to extend to infinity in the
-given direction. Setting all values to 0 disables soft button areas.
+If any edge is set to 0 (not 0%), the button is assumed to extend to
+infinity in the given direction. Setting all values to 0 (not 0%) disables
+soft button areas. Button areas may not overlap, however it is permitted for
two
+buttons to share an edge value.
Property: "Synaptics Soft Button Areas"
.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/xf86-input-synaptics-1.7.0/src/synaptics.c
new/xf86-input-synaptics-1.7.1/src/synaptics.c
--- old/xf86-input-synaptics-1.7.0/src/synaptics.c 2013-02-04
06:25:54.000000000 +0100
+++ new/xf86-input-synaptics-1.7.1/src/synaptics.c 2013-05-13
02:03:25.000000000 +0200
@@ -367,54 +367,67 @@
Bool right_disabled = FALSE;
Bool middle_disabled = FALSE;
+ enum {
+ /* right button left, right, top, bottom */
+ RBL = 0,
+ RBR = 1,
+ RBT = 2,
+ RBB = 3,
+ /* middle button left, right, top, bottom */
+ MBL = 4,
+ MBR = 5,
+ MBT = 6,
+ MBB = 7,
+ };
+
/* Check right button area */
- if ((((values[0] != 0) && (values[1] != 0)) && (values[0] > values[1])) ||
- (((values[2] != 0) && (values[3] != 0)) && (values[2] > values[3])))
+ if ((((values[RBL] != 0) && (values[RBR] != 0)) && (values[RBL] >
values[RBR])) ||
+ (((values[RBT] != 0) && (values[RBB] != 0)) && (values[RBT] >
values[RBB])))
return FALSE;
/* Check middle button area */
- if ((((values[4] != 0) && (values[5] != 0)) && (values[4] > values[5])) ||
- (((values[6] != 0) && (values[7] != 0)) && (values[6] > values[7])))
+ if ((((values[MBL] != 0) && (values[MBR] != 0)) && (values[MBL] >
values[MBR])) ||
+ (((values[MBT] != 0) && (values[MBB] != 0)) && (values[MBT] >
values[MBB])))
return FALSE;
- if (values[0] == 0 && values[1] == 0 && values[2] == 0 && values[3] == 0)
+ if (values[RBL] == 0 && values[RBR] == 0 && values[RBT] == 0 &&
values[RBB] == 0)
right_disabled = TRUE;
- if (values[4] == 0 && values[5] == 0 && values[6] == 0 && values[7] == 0)
+ if (values[MBL] == 0 && values[MBR] == 0 && values[MBT] == 0 &&
values[MBB] == 0)
middle_disabled = TRUE;
if (!right_disabled &&
- ((values[0] && values[0] == values[1]) ||
- (values[2] && values[2] == values[3])))
+ ((values[RBL] && values[RBL] == values[RBR]) ||
+ (values[RBT] && values[RBT] == values[RBB])))
return FALSE;
if (!middle_disabled &&
- ((values[4] && values[4] == values[5]) ||
- (values[6] && values[6] == values[7])))
+ ((values[MBL] && values[MBL] == values[MBR]) ||
+ (values[MBT] && values[MBT] == values[MBB])))
return FALSE;
/* Check for overlapping button areas */
if (!right_disabled && !middle_disabled) {
- int right_left = values[0] ? values[0] : INT_MIN;
- int right_right = values[1] ? values[1] : INT_MAX;
- int right_top = values[2] ? values[2] : INT_MIN;
- int right_bottom = values[3] ? values[3] : INT_MAX;
- int middle_left = values[4] ? values[4] : INT_MIN;
- int middle_right = values[5] ? values[5] : INT_MAX;
- int middle_top = values[6] ? values[6] : INT_MIN;
- int middle_bottom = values[7] ? values[7] : INT_MAX;
+ int right_left = values[RBL] ? values[RBL] : INT_MIN;
+ int right_right = values[RBR] ? values[RBR] : INT_MAX;
+ int right_top = values[RBT] ? values[RBT] : INT_MIN;
+ int right_bottom = values[RBB] ? values[RBB] : INT_MAX;
+ int middle_left = values[MBL] ? values[MBL] : INT_MIN;
+ int middle_right = values[MBR] ? values[MBR] : INT_MAX;
+ int middle_top = values[MBT] ? values[MBT] : INT_MIN;
+ int middle_bottom = values[MBB] ? values[MBB] : INT_MAX;
/* If areas overlap in the Y axis */
if ((right_bottom <= middle_bottom && right_bottom >= middle_top) ||
(right_top <= middle_bottom && right_top >= middle_top)) {
/* Check for overlapping left edges */
- if ((right_left < middle_left && right_right >= middle_left) ||
- (middle_left < right_left && middle_right >= right_left))
+ if ((right_left < middle_left && right_right > middle_left) ||
+ (middle_left < right_left && middle_right > right_left))
return FALSE;
/* Check for overlapping right edges */
- if ((right_right > middle_right && right_left <= middle_right) ||
- (middle_right > right_right && middle_left <= right_right))
+ if ((right_right > middle_right && right_left < middle_right) ||
+ (middle_right > right_right && middle_left < right_right))
return FALSE;
}
@@ -422,13 +435,13 @@
if ((right_left >= middle_left && right_left <= middle_right) ||
(right_right >= middle_left && right_right <= middle_right)) {
/* Check for overlapping top edges */
- if ((right_top < middle_top && right_bottom >= middle_top) ||
- (middle_top < right_top && middle_bottom >= right_top))
+ if ((right_top < middle_top && right_bottom > middle_top) ||
+ (middle_top < right_top && middle_bottom > right_top))
return FALSE;
/* Check for overlapping bottom edges */
- if ((right_bottom > middle_bottom && right_top <= middle_bottom) ||
- (middle_bottom > right_bottom && middle_top <= right_bottom))
+ if ((right_bottom > middle_bottom && right_top < middle_bottom) ||
+ (middle_bottom > right_bottom && middle_top < right_bottom))
return FALSE;
}
}
@@ -500,12 +513,15 @@
memcpy(pars->softbutton_areas[0], values, 4 * sizeof(int));
memcpy(pars->softbutton_areas[1], values + 4, 4 * sizeof(int));
+ free(option_string);
+
return;
fail:
xf86IDrvMsg(pInfo, X_ERROR,
"invalid SoftButtonAreas value '%s', keeping defaults\n",
option_string);
+ free(option_string);
}
static void
@@ -1019,6 +1035,8 @@
RetValue = DeviceOff(dev);
TimerFree(priv->timer);
priv->timer = NULL;
+ free(priv->touch_axes);
+ priv->touch_axes = NULL;
SynapticsHwStateFree(&priv->hwState);
SynapticsHwStateFree(&priv->old_hw_state);
SynapticsHwStateFree(&priv->local_hw_state);
@@ -1360,23 +1378,30 @@
{
Bool inside_area = TRUE;
- if (para->softbutton_areas[which][0] == 0 &&
- para->softbutton_areas[which][1] == 0 &&
- para->softbutton_areas[which][2] == 0 &&
- para->softbutton_areas[which][3] == 0)
+ enum {
+ LEFT = 0,
+ RIGHT = 1,
+ TOP = 2,
+ BOTTOM = 3
+ };
+
+ if (para->softbutton_areas[which][LEFT] == 0 &&
+ para->softbutton_areas[which][RIGHT] == 0 &&
+ para->softbutton_areas[which][TOP] == 0 &&
+ para->softbutton_areas[which][BOTTOM] == 0)
return FALSE;
- if (para->softbutton_areas[which][0] &&
- x < para->softbutton_areas[which][0])
+ if (para->softbutton_areas[which][LEFT] &&
+ x < para->softbutton_areas[which][LEFT])
inside_area = FALSE;
- else if (para->softbutton_areas[which][1] &&
- x > para->softbutton_areas[which][1])
+ else if (para->softbutton_areas[which][RIGHT] &&
+ x > para->softbutton_areas[which][RIGHT])
inside_area = FALSE;
- else if (para->softbutton_areas[which][2] &&
- y < para->softbutton_areas[which][2])
+ else if (para->softbutton_areas[which][TOP] &&
+ y < para->softbutton_areas[which][TOP])
inside_area = FALSE;
- else if (para->softbutton_areas[which][3] &&
- y > para->softbutton_areas[which][3])
+ else if (para->softbutton_areas[which][BOTTOM] &&
+ y > para->softbutton_areas[which][BOTTOM])
inside_area = FALSE;
return inside_area;
@@ -2433,10 +2458,11 @@
struct SynapticsHwState *hw)
{
int nfingers = 0;
- char close_point[SYNAPTICS_MAX_TOUCHES] = { 0 }; /* 1 for each point
close
- to another one */
+ uint32_t close_point = 0; /* 1 bit for each point close to another one */
int i, j;
+ BUG_RETURN_VAL(hw->num_mt_mask > sizeof(close_point) * 8, 0);
+
for (i = 0; i < hw->num_mt_mask - 1; i++) {
ValuatorMask *f1;
@@ -2468,14 +2494,16 @@
* size. Good luck. */
if (abs(x1 - x2) < (priv->maxx - priv->minx) * .3 &&
abs(y1 - y2) < (priv->maxy - priv->miny) * .3) {
- close_point[j] = 1;
- close_point[i] = 1;
+ close_point |= (1 << j);
+ close_point |= (1 << i);
}
}
}
- for (i = 0; i < SYNAPTICS_MAX_TOUCHES; i++)
- nfingers += close_point[i];
+ while (close_point > 0) {
+ nfingers += close_point & 0x1;
+ close_point >>= 1;
+ }
return nfingers;
}
--
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]