From owner-svn-src-user@FreeBSD.ORG Wed Jun 4 21:09:38 2014 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id BE3CF673; Wed, 4 Jun 2014 21:09:38 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 91CBC2500; Wed, 4 Jun 2014 21:09:38 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.8/8.14.8) with ESMTP id s54L9cWK016845; Wed, 4 Jun 2014 21:09:38 GMT (envelope-from jceel@svn.freebsd.org) Received: (from jceel@localhost) by svn.freebsd.org (8.14.8/8.14.8/Submit) id s54L9cOR016844; Wed, 4 Jun 2014 21:09:38 GMT (envelope-from jceel@svn.freebsd.org) Message-Id: <201406042109.s54L9cOR016844@svn.freebsd.org> From: Jakub Wojciech Klama Date: Wed, 4 Jun 2014 21:09:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r267080 - user/jceel/soc2014_evdev/head/sys/dev/usb/input X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Jun 2014 21:09:38 -0000 Author: jceel Date: Wed Jun 4 21:09:38 2014 New Revision: 267080 URL: http://svnweb.freebsd.org/changeset/base/267080 Log: Disable sending 'empty' events (such as reporting relative move delta=0) to not confuse xf86-input-evdev module, thus making Xorg working with utouch(4). Modified: user/jceel/soc2014_evdev/head/sys/dev/usb/input/utouch.c Modified: user/jceel/soc2014_evdev/head/sys/dev/usb/input/utouch.c ============================================================================== --- user/jceel/soc2014_evdev/head/sys/dev/usb/input/utouch.c Wed Jun 4 20:05:52 2014 (r267079) +++ user/jceel/soc2014_evdev/head/sys/dev/usb/input/utouch.c Wed Jun 4 21:09:38 2014 (r267080) @@ -220,7 +220,7 @@ utouch_attach(device_t dev) evdev_support_abs(sc->sc_evdev, ABS_Y); if (sc->sc_flags & UTOUCH_FLAG_Z_AXIS) - evdev_support_rel(sc->sc_evdev, REL_Z); + evdev_support_rel(sc->sc_evdev, REL_WHEEL); for (i = 0; i < sc->sc_nbuttons; i++) evdev_support_key(sc->sc_evdev, BTN_MOUSE + i); @@ -296,10 +296,10 @@ utouch_intr_callback(struct usb_xfer *xf for (i = 0; i < sc->sc_nbuttons; i++) { if (hid_get_data(buf, len, &sc->sc_loc_btn[i])) buttons |= (1 << i); - - changed += buttons != 0; } + changed += buttons != sc->sc_oldbuttons; + if (changed) { utouch_report_event(sc, x, y, dz, buttons); sc->sc_oldx = x; @@ -353,22 +353,26 @@ utouch_report_event(struct utouch_softc { int i; - if (sc->sc_flags & UTOUCH_FLAG_X_AXIS) - evdev_push_event(sc->sc_evdev, EV_ABS, ABS_X, x); + if (x != sc->sc_oldx || y != sc->sc_oldy) { + if (sc->sc_flags & UTOUCH_FLAG_X_AXIS) + evdev_push_event(sc->sc_evdev, EV_ABS, ABS_X, x); - if (sc->sc_flags & UTOUCH_FLAG_Y_AXIS) - evdev_push_event(sc->sc_evdev, EV_ABS, ABS_Y, y); + if (sc->sc_flags & UTOUCH_FLAG_Y_AXIS) + evdev_push_event(sc->sc_evdev, EV_ABS, ABS_Y, y); + } - if (sc->sc_flags & UTOUCH_FLAG_Z_AXIS) - evdev_push_event(sc->sc_evdev, EV_REL, REL_Z, dz); + if (sc->sc_flags & UTOUCH_FLAG_Z_AXIS && dz != 0) + evdev_push_event(sc->sc_evdev, EV_REL, REL_WHEEL, dz); - for (i = 0; i < sc->sc_nbuttons; i++) { - if (((buttons & (1 << i)) ^ - (sc->sc_oldbuttons & (1 << i))) == 0) - continue; + if (buttons != sc->sc_oldbuttons) { + for (i = 0; i < sc->sc_nbuttons; i++) { + if (((buttons & (1 << i)) ^ + (sc->sc_oldbuttons & (1 << i))) == 0) + continue; - evdev_push_event(sc->sc_evdev, EV_KEY, - BTN_MOUSE + i, !!(buttons & (1 << i))); + evdev_push_event(sc->sc_evdev, EV_KEY, + BTN_MOUSE + i, !!(buttons & (1 << i))); + } } evdev_sync(sc->sc_evdev);