Hello community,

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

Package is "xf86-input-wacom"

Changes:
--------
--- /work/SRC/openSUSE:Factory/xf86-input-wacom/xf86-input-wacom.changes        
2013-06-25 14:47:18.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.xf86-input-wacom.new/xf86-input-wacom.changes   
2013-08-19 10:53:16.000000000 +0200
@@ -1,0 +2,27 @@
+Sat Aug 17 21:31:14 UTC 2013 - [email protected]
+
+- Update to version 0.22.1:
+  + Fix build on ABI < 16 - touch_mask isn't defined.
+- Changes from version 0.22.0:
+  + Unify wcmFingerMultitouch and wcmSendTouchEvent.
+  + Transform touch events just like all other events.
+  + Add support for 0xEC.
+- Changes from version 0.21.99.1:
+  + Add xf86OptionListFree for distcheck.
+  + Don't emulate a mouse when multitouch is enabled.
+  + Add support for Cintiq 22HDT and 13HD, DTK2241 and DTH2242.
+  + Don't init abswheel2 valuator (7th val) if we don't have one.
+  + Free the device name after reassigning.
+  + Free the touch mask on shutdown.
+  + Free input attribute's product.
+  + Free duplicated option list after conversion to InputOption.
+  + Plug memory leaks left by xf86SetStrOption.
+  + Purge TILT_REQUEST_FLAG
+  + man: clarify how to configure keys on higher shift levels in
+    xsetwacom.
+  + xsetwacom:
+    - Map a bunch of special symbols.
+    - If we fail to map a string, try as special key or warn.
+    - Add special mappings for Home, End, Delete.
+
+-------------------------------------------------------------------

Old:
----
  xf86-input-wacom-0.21.0.tar.bz2

New:
----
  xf86-input-wacom-0.22.1.tar.bz2

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

Other differences:
------------------
++++++ xf86-input-wacom.spec ++++++
--- /var/tmp/diff_new_pack.WoNNAO/_old  2013-08-19 10:53:17.000000000 +0200
+++ /var/tmp/diff_new_pack.WoNNAO/_new  2013-08-19 10:53:17.000000000 +0200
@@ -23,7 +23,7 @@
 %endif
 
 Name:           xf86-input-wacom
-Version:        0.21.0
+Version:        0.22.1
 Release:        0
 Summary:        Wacom input driver for the Xorg X server
 License:        GPL-2.0+

++++++ xf86-input-wacom-0.21.0.tar.bz2 -> xf86-input-wacom-0.22.1.tar.bz2 ++++++
++++ 2843 lines of diff (skipped)
++++    retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-input-wacom-0.21.0/ChangeLog new/xf86-input-wacom-0.22.1/ChangeLog
--- old/xf86-input-wacom-0.21.0/ChangeLog       2013-04-29 22:18:17.000000000 
+0200
+++ new/xf86-input-wacom-0.22.1/ChangeLog       2013-07-15 19:06:35.000000000 
+0200
@@ -1,3 +1,309 @@
+commit b25eb646c36d19a46c561b3c091adb5c86c563df
+Author: Peter Hutterer <[email protected]>
+Date:   Fri Jul 12 10:28:08 2013 +1000
+
+    Fix build on ABI < 16 - touch_mask isn't defined
+    
+    Fixes: http://sourceforge.net/p/linuxwacom/bugs/232
+    
+    Signed-off-by: Peter Hutterer <[email protected]>
+
+commit 4982cebdadb32376c3b1964616ede44a712c8a24
+Author: Jason Gerecke <[email protected]>
+Date:   Wed Jul 10 11:49:29 2013 -0700
+
+    wacom 0.22.0
+    
+    Signed-off-by: Jason Gerecke <[email protected]>
+
+commit 67daf21bdb7b32c27818bffaf56849a522d23477
+Author: Ping Cheng <[email protected]>
+Date:   Fri Jun 7 15:34:03 2013 -0700
+
+    Unify wcmFingerMultitouch and wcmSendTouchEvent
+    
+    Signed-off-by: Ping Cheng <[email protected]>
+    Acked-by: Jason Gerecke <[email protected]>
+
+commit d0a5c68b2582fc6bdcee1d949913f78c0651b1a6
+Author: Sjoerd Simons <[email protected]>
+Date:   Sat May 25 01:06:16 2013 +0200
+
+    Transform touch events just like all other events
+    
+    Transform touch coordinates in the same way as other events coming from
+    the wacom driver otherwise setting for exmaple the Wacom Rotation
+    property has no effect
+    
+    Signed-off-by: Sjoerd Simons <[email protected]>
+    Acked-by: Jason Gerecke <[email protected]>
+
+commit 8e5b56e7a461c416d5b29f338bbd749626452b5d
+Author: Jason Gerecke <[email protected]>
+Date:   Wed Jul 10 13:50:55 2013 -0700
+
+    Revert "Transform touch events just like all other events"
+    
+    This reverts commit bfb56bf858e08d95156d52cec9744d3d3251b59c.
+    This commit will be split in two to provide proper credit for
+    each of the two authors.
+    
+    Signed-off-by: Jason Gerecke <[email protected]>
+
+commit 85b62fa528564607875a88babab11dd6d2481b04
+Author: Ping Cheng <[email protected]>
+Date:   Tue Jul 2 11:25:59 2013 -0700
+
+    Add support for 0xEC.
+    
+    It is a Wacom device found in Samsung Ativ Smart PC Pro 700t.
+    
+    Signed-off-by: Ping Cheng <[email protected]>
+    Signed-off-by: Peter Hutterer <[email protected]>
+
+commit a2c57c0104e2aee3e3f2544b094d443e20f076cb
+Author: Peter Hutterer <[email protected]>
+Date:   Wed Jul 3 09:35:30 2013 +1000
+
+    Revert "Add support for 0xED."
+    
+    Typo in commit message, tablet is actually 0xEC. Revert and re-commit to
+    make the patch easier to find.
+    
+    This reverts commit 8488c2af5bdd6dc4d049dc6d895c50c5f34aea14.
+
+commit 8488c2af5bdd6dc4d049dc6d895c50c5f34aea14
+Author: Ping Cheng <[email protected]>
+Date:   Tue Jul 2 11:25:59 2013 -0700
+
+    Add support for 0xED.
+    
+    It is a Wacom device found in Samsung Ativ Smart PC Pro 700t.
+    
+    Signed-off-by: Ping Cheng <[email protected]>
+
+commit 361ac83d06159ec02bf33237eb5ec24652c8b700
+Author: Ping Cheng <[email protected]>
+Date:   Fri Jun 14 16:03:18 2013 -0700
+
+    wacom 0.21.99.1
+    
+    Signed-off-by: Ping Cheng <[email protected]>
+
+commit 4f7d24c2138685a9881c7b5314747dc17d7cc147
+Author: Ping Cheng <[email protected]>
+Date:   Fri Jun 14 15:57:16 2013 -0700
+
+    Add xf86OptionListFree for distcheck
+    
+    Signed-off-by: Ping Cheng <[email protected]>
+
+commit bfb56bf858e08d95156d52cec9744d3d3251b59c
+Author: Ping Cheng <[email protected]>
+Date:   Fri Jun 7 15:34:03 2013 -0700
+
+    Transform touch events just like all other events
+    
+    Transform touch coordinates in the same way as other events coming from
+    the wacom driver otherwise setting for exmaple the Wacom Rotation
+    property has no effect
+    
+    Signed-off-by: Sjoerd Simons <[email protected]>
+    Acked-by: Jason Gerecke <[email protected]>
+    Signed-off-by: Ping Cheng <[email protected]>
+
+commit f38dd5736e2df7c3eec0338bd0c7bef8c562b979
+Author: Ping Cheng <[email protected]>
+Date:   Thu Jun 6 18:25:52 2013 -0700
+
+    Don't emulate a mouse when multitouch is enabled
+    
+    Currently when enabling XI 1.2 multitouch events the Wacom driver does a
+    strange mix of emulating a mouse (when there is only touch) and
+    switches suddenly switches to be a touchscreen when 2 fingers are down.
+    
+    Change this to only send touch events when using multitouch mode, such
+    that the touchscreen works the same as other touchscreens. This enables
+    applications to properly respond to one finger touches (e.g. panning
+    in GTK+).
+    
+    The X server core will still send emulated input events to applications
+    not supporting multitouch, so there shouldn't be a regression for those
+    applications.
+    
+    Signed-off-by: Sjoerd Simons <[email protected]>
+    Acked-by: Jason Gerecke <[email protected]>
+    Signed-off-by: Ping Cheng <[email protected]>
+
+commit 3578b919360e7a4d6cfbbe4c33c3084be0c6d5c9
+Author: Ping Cheng <[email protected]>
+Date:   Fri May 17 15:11:39 2013 -0700
+
+    Add support for Cintiq 22HDT and 13HD, DTK2241 and DTH2242.
+    
+    Signed-off-by: Ping Cheng <[email protected]>
+    Reviewed-by: Peter Hutterer <[email protected]>
+    Signed-off-by: Peter Hutterer <[email protected]>
+
+commit 2dffd217b112c346c6c0b07e82cb069a3cf84246
+Author: Peter Hutterer <[email protected]>
+Date:   Thu May 9 13:31:38 2013 +1000
+
+    Don't init abswheel2 valuator (7th val) if we don't have one
+    
+    InitValuatorAxisStruct() will return if the axisnum > num_axes and not
+    initialise anything which is why the current code worked without issues.
+    
+    With a new patch to the server this will now complain with an error message
+    to the log.
+    
+    Signed-off-by: Peter Hutterer <[email protected]>
+    Reviewed-by: Ping Cheng <[email protected]>
+
+commit b350a95717ac04a0bed1d836a0b90c94724dc597
+Author: Peter Hutterer <[email protected]>
+Date:   Thu May 9 13:45:15 2013 +1000
+
+    Free the device name after reassigning
+    
+    When hotplugging the first tool (usually the stylus) changes pInfo->name to
+    the name + tool name. Thus, free the original one.
+    
+    And strdup the oldname so we can unconditially free it, regardless of
+    whether we changed the actual device name or not.
+    
+    Signed-off-by: Peter Hutterer <[email protected]>
+    Reviewed-by: Ping Cheng <[email protected]>
+
+commit 06abd7a61323034bd58e745a18f0b08723de0064
+Author: Peter Hutterer <[email protected]>
+Date:   Thu May 9 13:14:45 2013 +1000
+
+    Free the touch mask on shutdown
+    
+    Signed-off-by: Peter Hutterer <[email protected]>
+    Reviewed-by: Ping Cheng <[email protected]>
+
+commit 6d26cb9b9f71bfec1c388a72dcbb09f09f31bd04
+Author: Peter Hutterer <[email protected]>
+Date:   Thu May 9 11:21:40 2013 +1000
+
+    Free input attribute's product
+    
+    This is copied first by DuplicateInputAttributes, then asprintf makes
+    another copy.
+    
+    Signed-off-by: Peter Hutterer <[email protected]>
+    Reviewed-by: Ping Cheng <[email protected]>
+
+commit dff311a44c13687c12e86d8233f15bb0f8868361
+Author: Peter Hutterer <[email protected]>
+Date:   Thu May 9 10:55:33 2013 +1000
+
+    Free duplicated option list after conversion to InputOption
+    
+    The duplicated list is a copy (as the comment in the server says) and thus
+    must be freed.
+    
+    ==27895== 947 (40 direct, 907 indirect) bytes in 1 blocks are definitely 
lost in loss record 266 of 311
+    ==27895==    at 0x4A06B6F: calloc (vg_replace_malloc.c:593)
+    ==27895==    by 0x4E538C: addNewOption2 (Flags.c:203)
+    ==27895==    by 0x4E5401: xf86addNewOption (Flags.c:216)
+    ==27895==    by 0x4AEB24: xf86AddNewOption (xf86Option.c:347)
+    ==27895==    by 0x4AE54B: xf86OptionListDuplicate (xf86Option.c:152)
+    ==27895==    by 0xB74D139: wcmOptionDupConvert (wcmValidateDevice.c:382)
+    ==27895==    by 0xB74D408: wcmQueueHotplug (wcmValidateDevice.c:515)
+    ==27895==    by 0xB74D645: wcmHotplugOthers (wcmValidateDevice.c:568)
+    ==27895==    by 0xB742DA2: wcmPreInit (wcmConfig.c:599)
+    ==27895==    by 0x4C1ACF: xf86NewInputDevice (xf86Xinput.c:846)
+    ==27895==    by 0x4C2014: NewInputDeviceRequest (xf86Xinput.c:989)
+    ==27895==    by 0x4DD72C: device_added (udev.c:231)
+    
+    Signed-off-by: Peter Hutterer <[email protected]>
+    Reviewed-by: Ping Cheng <[email protected]>
+
+commit bc095d579bc6b1380080c83c4e5f6df173364b76
+Author: Peter Hutterer <[email protected]>
+Date:   Thu May 9 10:39:39 2013 +1000
+
+    Plug memory leaks left by xf86SetStrOption
+    
+    xf86SetStrOption() returns a strdup'd string that needs to be freed after
+    use.
+    
+    This requires some const char* → char* changes too, for things that were
+    never really const char* to begin with anyway.
+    
+    wcmEventAutoDevProbe() can use xf86CheckStrOption so it too returns a
+    strup that we can free lateron.
+    
+    Signed-off-by: Peter Hutterer <[email protected]>
+    Reviewed-by: Ping Cheng <[email protected]>
+
+commit 6940e481a4aadfbc4c87362e1461a43b296bc8b1
+Author: Peter Hutterer <[email protected]>
+Date:   Tue Apr 30 14:40:07 2013 +1000
+
+    Purge TILT_REQUEST_FLAG
+    
+    Write-only value, obsolete as of xf86-input-wacom-0.10.4-45-gba90433
+    
+    Signed-off-by: Peter Hutterer <[email protected]>
+    Acked-by: Ping Cheng <[email protected]>
+
+commit 1329374edbd8bd5a375d32829d0f6153f84e6b6f
+Author: Peter Hutterer <[email protected]>
+Date:   Thu May 2 09:34:56 2013 +1000
+
+    man: clarify how to configure keys on higher shift levels in xsetwacom
+    
+    Signed-off-by: Peter Hutterer <[email protected]>
+    Reviewed-by: Ping Cheng <[email protected]>
+
+commit d0dbb34e524ebb58bb9a5a623d2fa96a1470516f
+Author: Peter Hutterer <[email protected]>
+Date:   Mon Apr 29 14:47:06 2013 +1000
+
+    xsetwacom: map a bunch of special symbols
+    
+    Punctuation marks and others map to XK_* keysyms but only in their named
+    form, not in their single-character symbol form.
+    
+    Signed-off-by: Peter Hutterer <[email protected]>
+    Reviewed-by: Ping Cheng <[email protected]>
+
+commit e50725269dd76c4a3c92c84dd4413034a8937df0
+Author: Peter Hutterer <[email protected]>
+Date:   Mon Apr 29 14:46:18 2013 +1000
+
+    xsetwacom: if we fail to map a string, try as special key or warn
+    
+    If a string comes back with a KeySym of 0, try again as a special key. And
+    if that fails too, print a warning.
+    
+    Signed-off-by: Peter Hutterer <[email protected]>
+    Reviewed-by: Ping Cheng <[email protected]>
+
+commit 915a64589f34a0593fe55afa82de30c4415c3020
+Author: Peter Hutterer <[email protected]>
+Date:   Mon Apr 29 14:14:43 2013 +1000
+
+    xsetwacom: add special mappings for Home, End, Delete
+    
+    These three are likely written as home, end, del, so let's try to
+    understand that.
+    
+    Signed-off-by: Peter Hutterer <[email protected]>
+    Reviewed-by: Ping Cheng <[email protected]>
+
+commit c1f31c0ab16bc11614d6cfbd9bc16e4714732279
+Author: Jason Gerecke <[email protected]>
+Date:   Mon Apr 29 13:20:58 2013 -0700
+
+    wacom 0.21.0
+    
+    Signed-off-by: Jason Gerecke <[email protected]>
+
 commit 5c6bd8d45ca2358d42fdd028112e724c691774ba
 Author: Jason Gerecke <[email protected]>
 Date:   Fri Apr 19 18:14:59 2013 -0700
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-input-wacom-0.21.0/compile new/xf86-input-wacom-0.22.1/compile
--- old/xf86-input-wacom-0.21.0/compile 1970-01-01 01:00:00.000000000 +0100
+++ new/xf86-input-wacom-0.22.1/compile 2013-07-10 20:34:12.000000000 +0200
@@ -0,0 +1,347 @@
+#! /bin/sh
+# Wrapper for compilers which do not understand '-c -o'.
+
+scriptversion=2012-10-14.11; # UTC
+
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Written by Tom Tromey <[email protected]>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <[email protected]> or send patches to
+# <[email protected]>.
+
+nl='
+'
+
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent tools from complaining about whitespace usage.
+IFS=" ""       $nl"
+
+file_conv=
+
+# func_file_conv build_file lazy
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Windows hosts. If the determined conversion
+# type is listed in (the comma separated) LAZY, no conversion will
+# take place.
+func_file_conv ()
+{
+  file=$1
+  case $file in
+    / | /[!/]*) # absolute file, and not a UNC file
+      if test -z "$file_conv"; then
+       # lazily determine how to convert abs files
+       case `uname -s` in
+         MINGW*)
+           file_conv=mingw
+           ;;
+         CYGWIN*)
+           file_conv=cygwin
+           ;;
+         *)
+           file_conv=wine
+           ;;
+       esac
+      fi
+      case $file_conv/,$2, in
+       *,$file_conv,*)
+         ;;
+       mingw/*)
+         file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
+         ;;
+       cygwin/*)
+         file=`cygpath -m "$file" || echo "$file"`
+         ;;
+       wine/*)
+         file=`winepath -w "$file" || echo "$file"`
+         ;;
+      esac
+      ;;
+  esac
+}
+
+# func_cl_dashL linkdir
+# Make cl look for libraries in LINKDIR
+func_cl_dashL ()
+{
+  func_file_conv "$1"
+  if test -z "$lib_path"; then
+    lib_path=$file
+  else
+    lib_path="$lib_path;$file"
+  fi
+  linker_opts="$linker_opts -LIBPATH:$file"
+}
+
+# func_cl_dashl library
+# Do a library search-path lookup for cl
+func_cl_dashl ()
+{
+  lib=$1
+  found=no
+  save_IFS=$IFS
+  IFS=';'
+  for dir in $lib_path $LIB
+  do
+    IFS=$save_IFS
+    if $shared && test -f "$dir/$lib.dll.lib"; then
+      found=yes
+      lib=$dir/$lib.dll.lib
+      break
+    fi
+    if test -f "$dir/$lib.lib"; then
+      found=yes
+      lib=$dir/$lib.lib
+      break
+    fi
+    if test -f "$dir/lib$lib.a"; then
+      found=yes
+      lib=$dir/lib$lib.a
+      break
+    fi
+  done
+  IFS=$save_IFS
+
+  if test "$found" != yes; then
+    lib=$lib.lib
+  fi
+}
+
+# func_cl_wrapper cl arg...
+# Adjust compile command to suit cl
+func_cl_wrapper ()
+{
+  # Assume a capable shell
+  lib_path=
+  shared=:
+  linker_opts=
+  for arg
+  do
+    if test -n "$eat"; then
+      eat=
+    else
+      case $1 in
+       -o)
+         # configure might choose to run compile as 'compile cc -o foo foo.c'.
+         eat=1
+         case $2 in
+           *.o | *.[oO][bB][jJ])
+             func_file_conv "$2"
+             set x "$@" -Fo"$file"
+             shift
+             ;;
+           *)
+             func_file_conv "$2"
+             set x "$@" -Fe"$file"
+             shift
+             ;;
+         esac
+         ;;
+       -I)
+         eat=1
+         func_file_conv "$2" mingw
+         set x "$@" -I"$file"
+         shift
+         ;;
+       -I*)
+         func_file_conv "${1#-I}" mingw
+         set x "$@" -I"$file"
+         shift
+         ;;
+       -l)
+         eat=1
+         func_cl_dashl "$2"
+         set x "$@" "$lib"
+         shift
+         ;;
+       -l*)
+         func_cl_dashl "${1#-l}"
+         set x "$@" "$lib"
+         shift
+         ;;
+       -L)
+         eat=1
+         func_cl_dashL "$2"
+         ;;
+       -L*)
+         func_cl_dashL "${1#-L}"
+         ;;
+       -static)
+         shared=false
+         ;;
+       -Wl,*)
+         arg=${1#-Wl,}
+         save_ifs="$IFS"; IFS=','
+         for flag in $arg; do
+           IFS="$save_ifs"
+           linker_opts="$linker_opts $flag"
+         done
+         IFS="$save_ifs"
+         ;;
+       -Xlinker)
+         eat=1
+         linker_opts="$linker_opts $2"
+         ;;
+       -*)
+         set x "$@" "$1"
+         shift
+         ;;
+       *.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
+         func_file_conv "$1"
+         set x "$@" -Tp"$file"
+         shift
+         ;;
+       *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
+         func_file_conv "$1" mingw
+         set x "$@" "$file"
+         shift
+         ;;
+       *)
+         set x "$@" "$1"
+         shift
+         ;;
+      esac
+    fi
+    shift
+  done
+  if test -n "$linker_opts"; then
+    linker_opts="-link$linker_opts"
+  fi
+  exec "$@" $linker_opts
+  exit 1
+}
+
+eat=
+
+case $1 in
+  '')
+     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: compile [--help] [--version] PROGRAM [ARGS]
+
+Wrapper for compilers which do not understand '-c -o'.
+Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
+arguments, and rename the output as expected.
+
+If you are trying to build a whole package this is not the
+right script to run: please start by reading the file 'INSTALL'.
+
+Report bugs to <[email protected]>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "compile $scriptversion"
+    exit $?
+    ;;
+  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
+    func_cl_wrapper "$@"      # Doesn't return...
+    ;;
+esac
+
+ofile=
+cfile=
+
+for arg
+do
+  if test -n "$eat"; then
+    eat=
+  else
+    case $1 in
+      -o)
+       # configure might choose to run compile as 'compile cc -o foo foo.c'.
+       # So we strip '-o arg' only if arg is an object.
+       eat=1
+       case $2 in
+         *.o | *.obj)
+           ofile=$2
+           ;;
+         *)
+           set x "$@" -o "$2"
+           shift
+           ;;
+       esac
+       ;;
+      *.c)
+       cfile=$1
+       set x "$@" "$1"
+       shift
+       ;;
+      *)
+       set x "$@" "$1"
+       shift
+       ;;
+    esac
+  fi
+  shift
+done
+
+if test -z "$ofile" || test -z "$cfile"; then
+  # If no '-o' option was seen then we might have been invoked from a
+  # pattern rule where we don't need one.  That is ok -- this is a
+  # normal compilation that the losing compiler can handle.  If no
+  # '.c' file was seen then we are probably linking.  That is also
+  # ok.
+  exec "$@"
+fi
+
+# Name of file we expect compiler to create.
+cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
+
+# Create the lock directory.
+# Note: use '[/\\:.-]' here to ensure that we don't use the same name
+# that we are using for the .o file.  Also, base the name on the expected
+# object file name, since that is what matters with a parallel build.
+lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
+while true; do
+  if mkdir "$lockdir" >/dev/null 2>&1; then
+    break
+  fi
+  sleep 1
+done
+# FIXME: race condition here if user kills between mkdir and trap.
+trap "rmdir '$lockdir'; exit 1" 1 2 15
+
+# Run the compile.
+"$@"
+ret=$?
+
+if test -f "$cofile"; then
+  test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
+elif test -f "${cofile}bj"; then
+  test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
+fi
+
+rmdir "$lockdir"
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-input-wacom-0.21.0/configure.ac 
new/xf86-input-wacom-0.22.1/configure.ac
--- old/xf86-input-wacom-0.21.0/configure.ac    2013-04-29 21:59:05.000000000 
+0200
+++ new/xf86-input-wacom-0.22.1/configure.ac    2013-07-15 19:04:34.000000000 
+0200
@@ -23,7 +23,7 @@
 # Initialize Autoconf
 AC_PREREQ([2.60])
 AC_INIT([xf86-input-wacom],
-        [0.21.0],
+        [0.22.1],
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
         [xf86-input-wacom])
 AC_CONFIG_MACRO_DIR([m4])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-input-wacom-0.21.0/man/xsetwacom.man 
new/xf86-input-wacom-0.22.1/man/xsetwacom.man
--- old/xf86-input-wacom-0.21.0/man/xsetwacom.man       2013-04-18 
23:45:21.000000000 +0200
+++ new/xf86-input-wacom-0.22.1/man/xsetwacom.man       2013-07-15 
19:01:59.000000000 +0200
@@ -112,6 +112,14 @@
 shift, press and release b, release shift, release a". In addition to the "key"
 keyword, "button" and "modetoggle" are also recognized. Multiple keywords may
 be present in one action if desired: for example "key +ctrl button 5 key 
-ctrl".
+
+The driver can only simulate physical key events but not keysyms and
+xetwacom translates the mapping sequence into such events. Thus,
+symbols on the same physical key will generate the same event. For
+example, '1' and '!' are on the same key on a US keyboard and thus have the
+same keycode).  For access to keys on a higher shift level, the sequence
+should be entered as it would be typed on a physical keyboard. For example,
+a exclamation mark is entered by the sequence of "key +shift 1 -shift".
 .TP
 \fBBindToSerial\fR [serial|0]
 Bind the device to the tool with the specified serial number. Once bound,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-input-wacom-0.21.0/src/wcmCommon.c 
new/xf86-input-wacom-0.22.1/src/wcmCommon.c
--- old/xf86-input-wacom-0.21.0/src/wcmCommon.c 2013-04-18 23:45:21.000000000 
+0200
+++ new/xf86-input-wacom-0.22.1/src/wcmCommon.c 2013-07-15 19:02:20.000000000 
+0200
@@ -970,8 +970,14 @@
        if (pChannel->nSamples < common->wcmRawSample) ++pChannel->nSamples;
 
        if ((ds.device_type == TOUCH_ID) && common->wcmTouch)
+       {
                wcmGestureFilter(priv, ds.serial_num - 1);
-
+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 16
+               /* When using XI 1.2 multitouch events don't do common 
dispatching */
+               if (!common->wcmGesture)
+                 return;
+#endif
+       }
        /* For touch, only first finger moves the cursor */
        if ((common->wcmTouch && ds.device_type == TOUCH_ID && ds.serial_num == 
1) ||
            (ds.device_type != TOUCH_ID))
@@ -1462,6 +1468,10 @@
                        free(common->serials);
                        common->serials = next;
                }
+               free(common->device_path);
+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 16
+               free(common->touch_mask);
+#endif
                free(common);
        }
        *ptr = NULL;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-input-wacom-0.21.0/src/wcmConfig.c 
new/xf86-input-wacom-0.22.1/src/wcmConfig.c
--- old/xf86-input-wacom-0.21.0/src/wcmConfig.c 2013-04-18 23:45:21.000000000 
+0200
+++ new/xf86-input-wacom-0.22.1/src/wcmConfig.c 2013-07-15 19:01:59.000000000 
+0200
@@ -470,7 +470,9 @@
 static int wcmIsHotpluggedDevice(InputInfoPtr pInfo)
 {
        char *source = xf86CheckStrOption(pInfo->options, "_source", "");
-       return !strcmp(source, "_driver/wacom");
+       int matches = (strcmp(source, "_driver/wacom") == 0);
+       free(source);
+       return matches;
 }
 
 /* wcmPreInit - called for each input devices with the driver set to
@@ -510,8 +512,8 @@
 {
        WacomDevicePtr priv = NULL;
        WacomCommonPtr common = NULL;
-       const char*     type;
-       const char*     device, *oldname;
+       char            *type, *device;
+       char            *oldname = NULL;
        int             need_hotplug = 0, is_dependent = 0;
 
        gWacomModule.wcmDrv = drv;
@@ -561,7 +563,7 @@
 
        common->debugLevel = xf86SetIntOption(pInfo->options,
                                              "CommonDBG", common->debugLevel);
-       oldname = pInfo->name;
+       oldname = strdup(pInfo->name);
 
        if (wcmIsHotpluggedDevice(pInfo))
                is_dependent = 1;
@@ -572,6 +574,7 @@
                char *new_name;
                if (asprintf(&new_name, "%s %s", pInfo->name, type) == -1)
                        new_name = strdup(pInfo->name);
+               free(pInfo->name);
                pInfo->name = priv->name = new_name;
        }
 
@@ -609,6 +612,9 @@
        if (IsTouch(priv) || (IsTablet(priv) && !common->wcmTouchDevice))
                wcmLinkTouchAndPen(pInfo);
 
+       free(type);
+       free(oldname);
+
        return Success;
 
 SetupProc_fail:
@@ -622,6 +628,8 @@
                pInfo->fd = -1;
        }
 
+       free(type);
+       free(oldname);
        return BadMatch;
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-input-wacom-0.21.0/src/wcmTouchFilter.c 
new/xf86-input-wacom-0.22.1/src/wcmTouchFilter.c
--- old/xf86-input-wacom-0.21.0/src/wcmTouchFilter.c    2013-04-12 
18:11:00.000000000 +0200
+++ new/xf86-input-wacom-0.22.1/src/wcmTouchFilter.c    2013-07-15 
19:01:59.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2009 - 2010 by Ping Cheng, Wacom. <[email protected]>
+ * Copyright 2009 - 2013 by Ping Cheng, Wacom. <[email protected]>
  * Copyright 2011 by Alexey Osipov. <[email protected]>
  *
  * This program is free software; you can redistribute it and/or
@@ -37,7 +37,6 @@
 #define GESTURE_LAG_MODE              8
 #define GESTURE_PREDRAG_MODE         16
 #define GESTURE_DRAG_MODE            32
-#define GESTURE_MULTITOUCH_MODE      64
 
 #define WCM_SCROLL_UP                 5        /* vertical up */
 #define WCM_SCROLL_DOWN               4        /* vertical down */
@@ -102,80 +101,41 @@
  * the multitouch API available in XI2.2.
  *
  * @param[in] priv
- * @param[in] channel    Channel to send a touch event for
- * @param[in] no_update  If 'true', TouchUpdate events will not be created.
- * This should be used when entering multitouch mode to ensure TouchBegin
- * events are sent for already-in-prox contacts.
+ * @param[in] contact_id  ID of the contact to send event for
  */
 static void
-wcmSendTouchEvent(WacomDevicePtr priv, WacomChannelPtr channel, Bool no_update)
+wcmSendTouchEvent(WacomDevicePtr priv, int contact_id)
 {
 #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 16
-       ValuatorMask *mask = priv->common->touch_mask;
-       WacomDeviceState state = channel->valid.state;
-       WacomDeviceState oldstate = channel->valid.states[1];
-       int type = -1;
-
-       valuator_mask_set(mask, 0, state.x);
-       valuator_mask_set(mask, 1, state.y);
-
-       if (!state.proximity) {
-               DBG(6, priv->common, "This is a touch end event\n");
-               type = XI_TouchEnd;
-       }
-       else if (!oldstate.proximity || no_update) {
-               DBG(6, priv->common, "This is a touch begin event\n");
-               type = XI_TouchBegin;
-       }
-       else {
-               DBG(6, priv->common, "This is a touch update event\n");
-               type = XI_TouchUpdate;
-       }
-
-       xf86PostTouchEvent(priv->pInfo->dev, state.serial_num - 1, type, 0, 
mask);
-#endif
-}
+       WacomChannelPtr channel = getContactNumber(priv->common, contact_id);
 
-/**
- * Send multitouch events. If entering multitouch mode (indicated by
- * GESTURE_LAG_MODE), then touch events are sent for all in-prox
- * contacts. Otherwise, only the specified contact has a touch event
- * generated.
- *
- * @param[in] priv
- * @param[in] contact_id  ID of the contact to send event for (at minimum)
- */
-static void
-wcmFingerMultitouch(WacomDevicePtr priv, int contact_id) {
-       Bool lag_mode = priv->common->wcmGestureMode == GESTURE_LAG_MODE;
-       Bool prox = FALSE;
-       int i;
-
-       if (lag_mode && TabletHasFeature(priv->common, WCM_LCD)) {
-               /* wcmSingleFingerPress triggers a button press as
-                * soon as a single finger appears. ensure we release
-                * that button before getting too far along
-                */
-               wcmSendButtonClick(priv, 1, 0);
-       }
-
-       for (i = 0; i < MAX_CHANNELS; i++) {
-               WacomChannelPtr channel = priv->common->wcmChannel+i;
+       if (channel) {
                WacomDeviceState state  = channel->valid.state;
-               if (state.device_type != TOUCH_ID)
-                       continue;
-
-               if (lag_mode || state.serial_num == contact_id + 1) {
-                       wcmSendTouchEvent(priv, channel, lag_mode);
+               ValuatorMask *mask = priv->common->touch_mask;
+               WacomDeviceState oldstate = channel->valid.states[1];
+               int type = -1;
+
+               wcmRotateAndScaleCoordinates (priv->pInfo, &state.x, &state.y);
+
+               valuator_mask_set(mask, 0, state.x);
+               valuator_mask_set(mask, 1, state.y);
+
+               if (!state.proximity) {
+                       DBG(6, priv->common, "This is a touch end event\n");
+                       type = XI_TouchEnd;
+               }
+               else if (!oldstate.proximity) {
+                       DBG(6, priv->common, "This is a touch begin event\n");
+                       type = XI_TouchBegin;
+               }
+               else {
+                       DBG(6, priv->common, "This is a touch update event\n");
+                       type = XI_TouchUpdate;
                }
 
-               prox |= state.proximity;
+               xf86PostTouchEvent(priv->pInfo->dev, contact_id, type, 0, mask);
        }
-
-       if (!prox)
-               priv->common->wcmGestureMode = GESTURE_NONE_MODE;
-       else if (lag_mode)
-               priv->common->wcmGestureMode = GESTURE_MULTITOUCH_MODE;
+#endif
 }
 
 static double touchDistance(WacomDeviceState ds0, WacomDeviceState ds1)
@@ -373,6 +333,15 @@
        WacomCommonPtr common = priv->common;
        WacomDeviceState ds[2] = {{0}}, dsLast[2] = {{0}};
 
+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 16
+       /* Send multitouch data to X if appropriate */
+       if (!common->wcmGesture)
+       {
+               wcmSendTouchEvent(priv, touch_id);
+               return;
+       }
+#endif
+
        getStateHistory(common, ds, ARRAY_SIZE(ds), 0);
        getStateHistory(common, dsLast, ARRAY_SIZE(dsLast), 1);
 
@@ -386,9 +355,6 @@
                return;
        }
 
-       if (common->wcmGestureMode == GESTURE_MULTITOUCH_MODE)
-               goto ret;
-
        /* When 2 fingers are in proximity, it must always be in one of
         * the valid 2 fingers modes: LAG, SCROLL, or ZOOM.
         * LAG mode is used while deciding between SCROLL and ZOOM and
@@ -521,16 +487,6 @@
        }
 ret:
 
-#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 16
-       /* Send multitouch data to X if appropriate */
-       if (!common->wcmGesture && ds[1].proximity && common->wcmGestureMode == 
GESTURE_NONE_MODE)
-               common->wcmGestureMode = GESTURE_LAG_MODE;
-       if (!common->wcmGesture && (common->wcmGestureMode == GESTURE_LAG_MODE 
||
-           common->wcmGestureMode == GESTURE_MULTITOUCH_MODE)) {
-               wcmFingerMultitouch(priv, touch_id);
-       }
-#endif
-
        if ((common->wcmGestureMode == GESTURE_NONE_MODE || 
common->wcmGestureMode == GESTURE_DRAG_MODE) &&
            touch_id == 0)
        {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-input-wacom-0.21.0/src/wcmUSB.c 
new/xf86-input-wacom-0.22.1/src/wcmUSB.c
--- old/xf86-input-wacom-0.21.0/src/wcmUSB.c    2013-04-20 03:16:52.000000000 
+0200
+++ new/xf86-input-wacom-0.22.1/src/wcmUSB.c    2013-07-15 19:01:59.000000000 
+0200
@@ -277,6 +277,10 @@
        { WACOM_VENDOR_ID, 0xF4, 200000, 200000, &usbCintiqV5   }, /* Cintiq 
24HD */
        { WACOM_VENDOR_ID, 0xFA, 200000, 200000, &usbCintiqV5   }, /* Cintiq 
22HD */
        { WACOM_VENDOR_ID, 0xF8, 200000, 200000, &usbCintiqV5   }, /* Cintiq 
24HD touch (EMR digitizer) */
+       { WACOM_VENDOR_ID, 0x304,200000, 200000, &usbCintiqV5   }, /* Cintiq 
13HD */
+       { WACOM_VENDOR_ID, 0x57, 200000, 200000, &usbCintiqV5   }, /* DTK2241 */
+       { WACOM_VENDOR_ID, 0x59, 200000, 200000, &usbCintiqV5   }, /* DTH2242 */
+       { WACOM_VENDOR_ID, 0x5B, 200000, 200000, &usbCintiqV5   }, /* Cintiq 
22HDT */
 
        { WACOM_VENDOR_ID, 0x90, 100000, 100000, &usbTabletPC   }, /* TabletPC 
0x90 */
        { WACOM_VENDOR_ID, 0x93, 100000, 100000, &usbTabletPC   }, /* TabletPC 
0x93 */
@@ -287,6 +291,7 @@
        { WACOM_VENDOR_ID, 0xE3, 100000, 100000, &usbTabletPC   }, /* TabletPC 
0xE3 */
        { WACOM_VENDOR_ID, 0xE5, 100000, 100000, &usbTabletPC   }, /* TabletPC 
0xE5 */
        { WACOM_VENDOR_ID, 0xE6, 100000, 100000, &usbTabletPC   }, /* TabletPC 
0xE6 */
+       { WACOM_VENDOR_ID, 0xEC, 100000, 100000, &usbTabletPC   }, /* TabletPC 
0xEC */
        { WACOM_VENDOR_ID, 0xED, 100000, 100000, &usbTabletPC   }, /* TabletPC 
0xED */
        { WACOM_VENDOR_ID, 0xEF, 100000, 100000, &usbTabletPC   }, /* TabletPC 
0xEF */
        { WACOM_VENDOR_ID, 0x100,100000, 100000, &usbTabletPC   }, /* TabletPC 
0x100 */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-input-wacom-0.21.0/src/wcmValidateDevice.c 
new/xf86-input-wacom-0.22.1/src/wcmValidateDevice.c
--- old/xf86-input-wacom-0.21.0/src/wcmValidateDevice.c 2013-04-18 
23:45:21.000000000 +0200
+++ new/xf86-input-wacom-0.22.1/src/wcmValidateDevice.c 2013-07-15 
19:01:59.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright 2009 - 2010 by Ping Cheng, Wacom. <[email protected]>
+ * Copyright 2009 - 2013 by Ping Cheng, Wacom. <[email protected]>
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -35,12 +35,17 @@
        int match = 0;
        InputInfoPtr pDevices = xf86FirstLocalDevice();
 
-       for (; pDevices != NULL; pDevices = pDevices->next)
+       for (; !match && pDevices != NULL; pDevices = pDevices->next)
        {
                char* device = xf86CheckStrOption(pDevices->options, "Device", 
NULL);
 
                /* device can be NULL on some distros */
-               if (!device || !strstr(pDevices->drv->driverName, "wacom"))
+               if (!device)
+                       continue;
+
+               free(device);
+
+               if (!strstr(pDevices->drv->driverName, "wacom"))
                        continue;
 
                if (pInfo != pDevices)
@@ -55,11 +60,10 @@
                                /* only add the new tool if the matching 
major/minor
                                * was from the same source */
                                if (strcmp(fsource, psource))
-                               {
                                        match = 1;
-                                       break;
-                               }
                        }
+                       free(fsource);
+                       free(psource);
                }
        }
        if (match)
@@ -112,6 +116,7 @@
                isInUse = 4;
        }
 ret:
+       free(lsource);
        return isInUse;
 }
 
@@ -134,7 +139,7 @@
        int j, k, ret = FALSE;
        WacomDevicePtr priv = (WacomDevicePtr)pInfo->private;
        WacomCommonPtr common = priv->common;
-       char* dsource = xf86CheckStrOption(pInfo->options, "_source", NULL);
+       char* dsource;
 
        if (!type)
        {
@@ -142,6 +147,8 @@
                return FALSE;
        }
 
+       dsource = xf86CheckStrOption(pInfo->options, "_source", NULL);
+
        /* walkthrough all types */
        for (j = 0; j < ARRAY_SIZE(wcmType); j++)
        {
@@ -175,6 +182,7 @@
                xf86Msg(X_ERROR, "%s: Invalid type '%s' for this device.\n",
                        pInfo->name, type);
 
+       free(dsource);
        return ret;
 }
 
@@ -255,6 +263,7 @@
                case 0xC6:  /* CintiqV5 */
                case 0xCC:  /* CinitqV5 */
                case 0xFA:  /* Cintiq 22HD */
+               case 0x5B:  /* Cintiq 22HDT Pen */
                        TabletSetFeature(priv->common, WCM_LCD);
                        /* fall through */
                case 0xB0:  /* I3 */
@@ -277,6 +286,7 @@
                case 0xE6: /* TPC with 2FGT */
                case 0x93: /* TPC with 1FGT */
                case 0x9A: /* TPC with 1FGT */
+               case 0xEC: /* TPC with 1FGT */
                case 0xED: /* TPC with 1FGT */
                case 0x90: /* TPC */
                case 0x97: /* TPC */
@@ -286,6 +296,11 @@
 
                case 0x9F:
                case 0xF6: /* Cintiq 24HDT Touch */
+               case 0x57: /* DTK2241 */
+               case 0x59: /* DTH2242 Pen */
+               case 0x5D: /* DTH2242 Touch */
+               case 0x5E: /* Cintiq 22HDT Touch */
+               case 0x304:/* Cintiq 13HD */
                        TabletSetFeature(priv->common, WCM_LCD);
                        break;
        }
@@ -367,7 +382,7 @@
        WacomToolPtr ser = common->serials;
        InputOption *iopts = NULL;
        char *name;
-       pointer options;
+       pointer options, o;
        int rc;
 
 #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12
@@ -405,13 +420,15 @@
 
        free(name);
 
-       while(options)
+       o = options;
+       while(o)
        {
                iopts = input_option_new(iopts,
-                                        xf86OptionName(options),
-                                        xf86OptionValue(options));
-               options = xf86NextOption(options);
+                                        xf86OptionName(o),
+                                        xf86OptionValue(o));
+               o = xf86NextOption(o);
        }
+       xf86OptionListFree(options);
        return iopts;
 }
 
@@ -427,10 +444,12 @@
 {
        int rc;
        InputAttributes *attr;
+       char *product;
+
        attr = DuplicateInputAttributes(pInfo->attrs);
-       rc = asprintf(&attr->product, "%s %s", attr->product, type);
-       if (rc == -1)
-               attr->product = NULL;
+       rc = asprintf(&product, "%s %s", attr->product, type);
+       free(attr->product);
+       attr->product = (rc != -1) ? product : NULL;
        return attr;
 }
 #endif
@@ -575,19 +594,20 @@
  * This changes the source to _driver/wacom, all auto-hotplugged devices
  * will have the same source.
  */
-int wcmNeedAutoHotplug(InputInfoPtr pInfo, const char **type)
+int wcmNeedAutoHotplug(InputInfoPtr pInfo, char **type)
 {
        char *source = xf86CheckStrOption(pInfo->options, "_source", NULL);
        int i;
+       int rc = 0;
 
        if (*type) /* type specified, don't hotplug */
-               return 0;
+               goto out;
 
        if (!source) /* xorg.conf device, don't auto-pick type */
-               return 0;
+               goto out;
 
        if (source && strcmp(source, "server/hal") && strcmp(source, 
"server/udev"))
-               return 0;
+               goto out;
 
        /* no type specified, so we need to pick the first one applicable
         * for our device */
@@ -595,13 +615,14 @@
        {
                if (wcmIsAValidType(pInfo, wcmType[i].type))
                {
+                       free(*type);
                        *type = strdup(wcmType[i].type);
                        break;
                }
        }
 
        if (!*type)
-               return 0;
+               goto out;
 
        xf86Msg(X_INFO, "%s: type not specified, assuming '%s'.\n", 
pInfo->name, *type);
        xf86Msg(X_INFO, "%s: other types will be automatically added.\n", 
pInfo->name);
@@ -610,7 +631,11 @@
        pInfo->options = xf86AddNewOption(pInfo->options, "Type", *type);
        pInfo->options = xf86ReplaceStrOption(pInfo->options, "_source", 
"_driver/wacom");
 
-       return 1;
+       rc = 1;
+
+       free(source);
+out:
+       return rc;
 }
 
 int wcmParseSerials (InputInfoPtr pInfo)
@@ -737,6 +762,8 @@
                 */
        }
 
+       free(s);
+
        /* Pad is always in absolute mode.
         * The pad also defaults to wheel scrolling, unlike the pens
         * (interesting effects happen on ArtPen and others with build-in
@@ -773,6 +800,7 @@
                                        " device\n", pInfo->name);
                else
                        wcmRotateTablet(pInfo, rotation);
+               free(s);
        }
 
        common->wcmRawSample = xf86SetIntOption(pInfo->options, "RawSample",
@@ -794,10 +822,6 @@
                        common->wcmSuppress = DEFAULT_SUPPRESS;
        }
 
-       if (xf86SetBoolOption(pInfo->options, "Tilt",
-                       (common->wcmFlags & TILT_REQUEST_FLAG)))
-               common->wcmFlags |= TILT_REQUEST_FLAG;
-
        /* pressure curve takes control points x1,y1,x2,y2
         * values in range from 0..100.
         * Linear curve is 0,0,100,100
@@ -815,6 +839,7 @@
                else
                        wcmSetPressureCurve(priv,a,b,c,d);
        }
+       free(s);
 
        /*Serials of tools we want hotpluged*/
        if (wcmParseSerials (pInfo) != 0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-input-wacom-0.21.0/src/xf86Wacom.c 
new/xf86-input-wacom-0.22.1/src/xf86Wacom.c
--- old/xf86-input-wacom-0.21.0/src/xf86Wacom.c 2013-04-18 23:45:21.000000000 
+0200
+++ new/xf86-input-wacom-0.22.1/src/xf86Wacom.c 2013-07-15 19:01:59.000000000 
+0200
@@ -296,20 +296,21 @@
 
 
        /* seventh valuator: abswheel2 */
-       index = 6;
-       label = None;
-       mode = Absolute;
-       min_res = max_res = res = 1;
-       min = 0;
-       max = 1;
-
        if ((TabletHasFeature(common, WCM_DUALRING)) && IsPad(priv))
-       { /* XXX: what is this axis label? */
+       {
+               /* XXX: what is this axis label? */
+               index = 6;
+               label = None;
+               mode = Absolute;
+               min_res = max_res = res = 1;
+               min = 0;
+               max = 1;
+
                min = MIN_PAD_RING;
                max = MAX_PAD_RING;
-       }
 
-       wcmInitAxis(pInfo->dev, index, label, min, max, res, min_res, max_res, 
mode);
+               wcmInitAxis(pInfo->dev, index, label, min, max, res, min_res, 
max_res, mode);
+       }
 
        return TRUE;
 }
@@ -483,7 +484,7 @@
  ****************************************************************************/
 #define DEV_INPUT_EVENT "/dev/input/event%d"
 #define EVDEV_MINORS    32
-const char *wcmEventAutoDevProbe (InputInfoPtr pInfo)
+char *wcmEventAutoDevProbe (InputInfoPtr pInfo)
 {
        /* We are trying to find the right eventX device */
        int i, wait = 0;
@@ -506,7 +507,7 @@
                                xf86ReplaceStrOption(pInfo->options, "Device", 
fname);
 
                                /* this assumes there is only one Wacom device 
on the system */
-                               return xf86FindOptionValue(pInfo->options, 
"Device");
+                               return xf86CheckStrOption(pInfo->options, 
"Device", NULL);
                        }
                }
                wait += 100;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-input-wacom-0.21.0/src/xf86Wacom.h 
new/xf86-input-wacom-0.22.1/src/xf86Wacom.h
--- old/xf86-input-wacom-0.21.0/src/xf86Wacom.h 2013-04-18 23:45:21.000000000 
+0200
+++ new/xf86-input-wacom-0.22.1/src/xf86Wacom.h 2013-07-15 19:01:59.000000000 
+0200
@@ -113,7 +113,7 @@
 extern Bool wcmOpen(InputInfoPtr pInfo);
 
 /* device autoprobing */
-const char *wcmEventAutoDevProbe (InputInfoPtr pInfo);
+char *wcmEventAutoDevProbe (InputInfoPtr pInfo);
 
 /* common tablet initialization regime */
 int wcmInitTablet(InputInfoPtr pInfo, const char* id, float version);
@@ -141,7 +141,7 @@
 extern int wcmDeviceTypeKeys(InputInfoPtr pInfo);
 
 /* hotplug */
-extern int wcmNeedAutoHotplug(InputInfoPtr pInfo, const char **type);
+extern int wcmNeedAutoHotplug(InputInfoPtr pInfo, char **type);
 extern void wcmHotplugOthers(InputInfoPtr pInfo, const char *basename);
 
 /* setup */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-input-wacom-0.21.0/src/xf86WacomDefs.h 
new/xf86-input-wacom-0.22.1/src/xf86WacomDefs.h
--- old/xf86-input-wacom-0.21.0/src/xf86WacomDefs.h     2013-04-18 
23:45:21.000000000 +0200
+++ new/xf86-input-wacom-0.22.1/src/xf86WacomDefs.h     2013-07-15 
19:01:59.000000000 +0200
@@ -394,7 +394,6 @@
  * WacomCommonRec
  *****************************************************************************/
 
-#define TILT_REQUEST_FLAG       1
 #define TILT_ENABLED_FLAG       2
 
 #define MAX_FINGERS 16
@@ -419,7 +418,7 @@
 struct _WacomCommonRec 
 {
        /* Do not move device_path, same offset as priv->name. Used by DBG 
macro */
-       const char* device_path;    /* device file name */
+       char* device_path;          /* device file name */
        dev_t min_maj;               /* minor/major number */
        unsigned char wcmFlags;     /* various flags (handle tilt) */
        int debugLevel;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-input-wacom-0.21.0/test/fake-symbols.c 
new/xf86-input-wacom-0.22.1/test/fake-symbols.c
--- old/xf86-input-wacom-0.21.0/test/fake-symbols.c     2013-04-10 
17:52:35.000000000 +0200
+++ new/xf86-input-wacom-0.22.1/test/fake-symbols.c     2013-07-15 
19:01:59.000000000 +0200
@@ -60,6 +60,13 @@
 {
     return NULL;
 }
+
+_X_EXPORT void 
+xf86OptionListFree(OPTTYPE opt)
+{
+    return;
+}
+
 _X_EXPORT CONST char *
 xf86FindOptionValue(OPTTYPE options, const char *name)
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-input-wacom-0.21.0/test/fake-symbols.h 
new/xf86-input-wacom-0.22.1/test/fake-symbols.h
--- old/xf86-input-wacom-0.21.0/test/fake-symbols.h     2013-04-10 
17:52:35.000000000 +0200
+++ new/xf86-input-wacom-0.22.1/test/fake-symbols.h     2013-07-15 
19:01:59.000000000 +0200
@@ -18,6 +18,7 @@
 
 extern OPTTYPE xf86ReplaceIntOption(OPTTYPE optlist, const char *name, const 
int val);
 extern OPTTYPE xf86AddNewOption(OPTTYPE head, const char *name, const char 
*val);
+extern void xf86OptionListFree(OPTTYPE optlist);
 extern char* xf86OptionName(OPTTYPE opt);
 extern CONST char* xf86FindOptionValue(OPTTYPE options, const char *name);
 extern int xf86NameCmp(const char *s1, const char *s2);
@@ -27,11 +28,7 @@
 
 extern char * xf86SetStrOption(OPTTYPE optlist, const char *name, CONST char 
*deflt);
 extern int xf86SetBoolOption(OPTTYPE optlist, const char *name, int deflt);
-extern OPTTYPE xf86AddNewOption(OPTTYPE head, const char *name, const char 
*val);
-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);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/xf86-input-wacom-0.21.0/tools/xsetwacom.c 
new/xf86-input-wacom-0.22.1/tools/xsetwacom.c
--- old/xf86-input-wacom-0.21.0/tools/xsetwacom.c       2013-04-10 
17:52:35.000000000 +0200
+++ new/xf86-input-wacom-0.22.1/tools/xsetwacom.c       2013-07-15 
19:01:59.000000000 +0200
@@ -570,6 +570,43 @@
 
        {"PgUp", "Prior"}, {"PgDn", "Next"},
 
+       {"del", "Delete"}, {"home", "Home"},
+       {"end", "End"},
+
+       {"`", "quoteleft"},
+       {"-", "minus"},
+       {"=", "equal"},
+       {"[", "bracketleft"},
+       {"]", "bracketright"},
+       {"\\", "backslash"},
+       {";", "semicolon"},
+       {"'", "apostrophe"},
+       {",", "comma"},
+       {".", "period"},
+       {"/", "slash"},
+
+       {"~", "asciitilde"},
+       {"!", "exclam"},
+       {"@", "at"},
+       {"#", "numbersign"},
+       {"$", "dollar"},
+       {"%", "percent"},
+       {"^", "asciicircum"},
+       {"&", "ampersand"},
+       {"*", "asterisk"},
+       {"(", "parenleft"},
+       {")", "parenright"},
+       {"_", "underscore"},
+       {"+", "plus"},
+       {"{", "braceleft"},
+       {"}", "braceright"},
+       {"|", "bar"},
+       {":", "colon"},
+       {"\"", "quotedbl"},
+       {"<", "less"},
+       {">", "greater"},
+       {"?", "question"},
+
        { NULL, NULL }
 };
 
@@ -1075,7 +1112,15 @@
                } else
                        need_press = need_release = 1;
 
+
                ks = XStringToKeysym(key);
+               if (ks == 0) {
+                       key = convert_specialkey(key);
+                       ks = XStringToKeysym(key);
+                       if (ks == 0)
+                               fprintf(stderr, "Warning: unable to map '%s' to 
a keycode.\n", key);
+               }
+
                kc = keysym_to_keycode(dpy, ks);
 
                if (need_press)
@@ -2676,15 +2721,36 @@
        char buff[5];
        struct modifier *m;
 
-       /* make sure at least the default keys (ascii 33 - 126) aren't
-        * specialkeys */
-       for (i = '!'; i <= '~'; i++)
+       /* make sure a-zA-Z aren't specialkeys */
+       for (i = 'a'; i <= 'z'; i++)
        {
                sprintf(buff, "%c", i);
                converted = convert_specialkey(buff);
                assert(strcmp(converted, buff) == 0);
        }
 
+       for (i = 'A'; i <= 'Z'; i++)
+       {
+               sprintf(buff, "%c", i);
+               converted = convert_specialkey(buff);
+               assert(strcmp(converted, buff) == 0);
+       }
+
+       /* punctuation are specialkeys */
+       for (i = '!'; i <= '/'; i++)
+       {
+               sprintf(buff, "%c", i);
+               converted = convert_specialkey(buff);
+               assert(strcmp(converted, buff) != 0);
+       }
+       for (i = ':'; i <= '?'; i++)
+       {
+               sprintf(buff, "%c", i);
+               converted = convert_specialkey(buff);
+               assert(strcmp(converted, buff) != 0);
+       }
+
+
        for (m = specialkeys; m->name; m++)
        {
                converted = convert_specialkey(m->name);

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to