Hello community,

here is the log from the commit of package xf86-input-synaptics for 
openSUSE:Factory checked in at 2013-01-08 09:15:47
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xf86-input-synaptics (Old)
 and      /work/SRC/openSUSE:Factory/.xf86-input-synaptics.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "xf86-input-synaptics", Maintainer is ""

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/xf86-input-synaptics/xf86-input-synaptics.changes    
    2012-07-31 14:00:01.000000000 +0200
+++ 
/work/SRC/openSUSE:Factory/.xf86-input-synaptics.new/xf86-input-synaptics.changes
   2013-01-08 09:15:48.000000000 +0100
@@ -1,0 +2,6 @@
+Fri Jan  4 09:58:45 UTC 2013 - sndir...@suse.com
+
+- xf86-input-synaptics-Reset-num_active_touches-on-DeviceOff-52496.patch
+  * Reset num_active_touches on DeviceOff (bnc#779452, fdo#52496)
+
+-------------------------------------------------------------------

New:
----
  xf86-input-synaptics-Reset-num_active_touches-on-DeviceOff-52496.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ xf86-input-synaptics.spec ++++++
--- /var/tmp/diff_new_pack.IPRSGo/_old  2013-01-08 09:15:49.000000000 +0100
+++ /var/tmp/diff_new_pack.IPRSGo/_new  2013-01-08 09:15:49.000000000 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package xf86-input-synaptics
 #
-# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -27,6 +27,7 @@
 Patch0:         xf86-input-synaptics-wait.diff
 Patch2:         xf86-input-synaptics-xorg.conf.d_snippet.diff
 Patch5:         xf86-input-synaptics-default-tap.diff
+Patch6:         
xf86-input-synaptics-Reset-num_active_touches-on-DeviceOff-52496.patch
 BuildRequires:  autoconf >= 2.60
 BuildRequires:  automake
 BuildRequires:  libtool
@@ -75,6 +76,7 @@
 %patch0 -p1
 %patch2 -p1
 %patch5 -p1
+%patch6 -p1
 
 %build
 autoreconf -fi

++++++ xf86-input-synaptics-Reset-num_active_touches-on-DeviceOff-52496.patch 
++++++
>From a245d42f53096b1ae81e6702729f97ca508e5b5b Mon Sep 17 00:00:00 2001
From: Peter Hutterer <peter.hutte...@who-t.net>
Date: Thu, 30 Aug 2012 16:38:38 +1000
Subject: [PATCH] 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>
---
 src/synaptics.c |    2 ++
 1 file changed, 2 insertions(+)

Index: xf86-input-synaptics-1.6.2/src/synaptics.c
===================================================================
--- xf86-input-synaptics-1.6.2.orig/src/synaptics.c
+++ xf86-input-synaptics-1.6.2/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, str
         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, e-mail: opensuse-commit+unsubscr...@opensuse.org
For additional commands, e-mail: opensuse-commit+h...@opensuse.org

Reply via email to