Chase Douglas has proposed merging lp:~utouch-team/qt/reenable-tablet into 
lp:~kubuntu-packagers/qt/ubuntu.

Requested reviews:
  Denis Dzyubenko (shadone)
  Kubuntu Packagers (kubuntu-packagers)
Related bugs:
  Bug #762938 in pencil (Ubuntu): "Wacom Pressure broken with Qt applications"
  https://bugs.launchpad.net/ubuntu/+source/pencil/+bug/762938

For more details, see:
https://code.launchpad.net/~utouch-team/qt/reenable-tablet/+merge/64244

The patch to enable XInput 2.1 multitouch support disabled XInput 1.x support. 
The Wacom tablet support depends on XInput 1.x support. The two XInput code 
paths should be able to work side by side, and with some minor modifications 
appear to do so without issue. I have tested tablet and multitouch support with 
this change and verified that they seem to work appropriately.
-- 
https://code.launchpad.net/~utouch-team/qt/reenable-tablet/+merge/64244
Your team Kubuntu Packagers is requested to review the proposed merge of 
lp:~utouch-team/qt/reenable-tablet into lp:~kubuntu-packagers/qt/ubuntu.
=== modified file 'debian/changelog'
--- debian/changelog	2011-06-09 16:33:21 +0000
+++ debian/changelog	2011-06-10 19:43:27 +0000
@@ -1,3 +1,10 @@
+qt4-x11 (4:4.7.3-1ubuntu4) UNRELEASED; urgency=low
+
+  * Re-enable tablet support (LP: #762938)
+    - Updated kubuntu_28_xi2.1.patch with the fix
+
+ -- Chase Douglas <chase.doug...@ubuntu.com>  Fri, 10 Jun 2011 13:09:55 -0400
+
 qt4-x11 (4:4.7.3-1ubuntu3) oneiric; urgency=low
 
   * debian/rules:

=== modified file 'debian/patches/kubuntu_28_xi2.1.patch'
--- debian/patches/kubuntu_28_xi2.1.patch	2011-06-03 13:46:31 +0000
+++ debian/patches/kubuntu_28_xi2.1.patch	2011-06-10 19:43:27 +0000
@@ -148,7 +148,7 @@
   $XIY  -xinput ............ Compile Xinput support. This also enabled tablet support
                           which requires IRIX with wacom.h and libXi or
                           XFree86 with X11/extensions/XInput.h and libXi.
-@@ -5934,7 +5952,23 @@
+@@ -5934,7 +5952,22 @@
  	fi
      fi
  
@@ -157,7 +157,6 @@
 +    if [ "$CFG_XINPUT2" != "no" ]; then
 +        if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/x11/xinput2 "XInput2" $L_FLAGS $I_FLAGS $l_FLAGS $X11TESTS_FLAGS; then
 +	    CFG_XINPUT2=yes
-+	    CFG_XINPUT=no
 +        else
 +            if [ "$CFG_XINPUT2" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
 +                echo "XInput2 support cannot be enabled due to functionality tests!"
@@ -351,11 +350,12 @@
  // ### This should be static but it isn't because of the friend declaration
  // ### in qpaintdevice.h which then should have a static too but can't have
  // ### it because "storage class specifiers invalid in friend function
-@@ -1659,9 +1678,13 @@
+@@ -1659,9 +1678,14 @@
  
      // XInputExtension
      X11->use_xinput = false;
 -    X11->xinput_major = 0;
++    X11->use_xinput2 = false;
 +    X11->xinput_opcode = 0;
      X11->xinput_eventbase = 0;
      X11->xinput_errorbase = 0;
@@ -366,23 +366,24 @@
  
      X11->use_xkb = false;
      X11->xkb_major = 0;
-@@ -2123,14 +2146,25 @@
+@@ -2123,14 +2146,26 @@
  #endif // QT_RUNTIME_XINERAMA
  #endif // QT_NO_XINERAMA
  
 -#ifndef QT_NO_XINPUT
 +#if !defined(QT_NO_XINPUT2)
-+        X11->use_xinput = XQueryExtension(X11->display, "XInputExtension", &X11->xinput_opcode,
++        X11->use_xinput2 = XQueryExtension(X11->display, "XInputExtension", &X11->xinput_opcode,
 +                                          &X11->xinput_eventbase, &X11->xinput_errorbase);
-+        if (X11->use_xinput) {
++        if (X11->use_xinput2) {
 +            // we want XInput2
 +            int ximajor = 2, ximinor = 1;
 +            if (XIQueryVersion(X11->display, &ximajor, &ximinor) == BadRequest) {
 +                // XInput2 not available
-+                X11->use_xinput = false;
++                X11->use_xinput2 = false;
 +            }
 +        }
-+#elif !defined(QT_NO_XINPUT)
++#endif
++#if !defined(QT_NO_XINPUT)
          // See if Xinput is supported on the connected display
          X11->ptrXCloseDevice = 0;
          X11->ptrXListInputDevices = 0;
@@ -409,7 +410,7 @@
          break;
 +#if !defined(QT_NO_XINPUT2)
 +    case GenericEvent:
-+        if (X11->use_xinput
++        if (X11->use_xinput2
 +                && XGetEventData(X11->display, &event->xcookie)
 +                && event->xcookie.extension == X11->xinput_opcode) {
 +            // remember for later
@@ -757,15 +758,15 @@
 ===================================================================
 --- qt-everywhere-opensource-src-4.7.2.orig/src/gui/kernel/qt_x11_p.h	2011-02-22 12:03:58.000000000 +0000
 +++ qt-everywhere-opensource-src-4.7.2/src/gui/kernel/qt_x11_p.h	2011-03-02 18:15:16.057309732 +0000
-@@ -97,13 +97,14 @@
+@@ -97,13 +97,15 @@
  #  include <X11/extensions/shape.h>
  #endif // QT_NO_SHAPE
  
 -
--#if !defined (QT_NO_TABLET)
 +#if !defined(QT_NO_XINPUT2)
 +#  include <X11/extensions/XInput2.h>
-+#elif !defined (QT_NO_TABLET)
++#endif
+ #if !defined (QT_NO_TABLET)
  #  include <X11/extensions/XInput.h>
 -#if defined (Q_OS_IRIX)
 -#  include <X11/extensions/SGIMisc.h>
@@ -778,7 +779,7 @@
  #endif // QT_NO_TABLET
  
  
-@@ -434,11 +435,15 @@
+@@ -434,11 +435,16 @@
      bool use_mitshm_pixmaps;
      int mitshm_major;
  
@@ -786,6 +787,7 @@
 +    // true if Qt is compiled w/ XInput2 or Tablet support and we have a tablet.
      bool use_xinput;
 -    int xinput_major;
++    bool use_xinput2;
 +    int xinput_opcode;
      int xinput_eventbase;
      int xinput_errorbase;
@@ -900,7 +902,7 @@
 +    if (!q->testAttribute(Qt::WA_WState_Created) || q->windowType() == Qt::Desktop)
 +        return;
 +
-+    if (X11->use_xinput) {
++    if (X11->use_xinput2) {
 +        XIEventMask xieventmask;
 +
 +        const int mask_len = XIMaskLen(XI_LASTEVENT);

-- 
kubuntu-devel mailing list
kubuntu-devel@lists.ubuntu.com
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/kubuntu-devel

Reply via email to