rpms/xorg-x11-drv-synaptics/F-9 xf86-input-synaptics-0.15.1-dont-crash-without-Device.patch, NONE, 1.1 xf86-input-synaptics-0.15.1-dont-lose-buttonup.patch, NONE, 1.1 xf86-input-synaptics-0.15.1-edges.patch, NONE, 1.1 xf86-input-synaptics-0.15.1-preprobe.patch, NONE, 1.1 .cvsignore, 1.2, 1.3 10-synaptics.fdi, 1.2, 1.3 sources, 1.2, 1.3 xorg-x11-drv-synaptics.spec, 1.3, 1.4

Peter Hutterer whot at fedoraproject.org
Tue Sep 9 14:35:28 UTC 2008


Author: whot

Update of /cvs/pkgs/rpms/xorg-x11-drv-synaptics/F-9
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv16103

Modified Files:
	.cvsignore 10-synaptics.fdi sources 
	xorg-x11-drv-synaptics.spec 
Added Files:
	xf86-input-synaptics-0.15.1-dont-crash-without-Device.patch 
	xf86-input-synaptics-0.15.1-dont-lose-buttonup.patch 
	xf86-input-synaptics-0.15.1-edges.patch 
	xf86-input-synaptics-0.15.1-preprobe.patch 
Log Message:
* Tue Sep 9 2008 Peter Hutterer <peter.hutterer at redhat.com> 0.15.1-1
- update to upstream 0.15.1
- remove xf86-input-synaptics-0.15.0-tap.patch - merged in upstream.
- xf86-input-synaptics-0.15.1-dont-lose-buttonup.patch: force a click if
  middle button emulation times out during ReadInput cycle. RH #233717.
- xf86-input-synaptics-0.15.1-edges.patch: improve edge calculation and
  acceleration factors.
- xf86-input-synaptics-0.15.1-preprobe patch: pre-probe eventcomm devices for
  axis ranges if specifed with Device option.
- xf86-input-synaptics-0.15.1-dont-crash-without-Device.patch: don't crash if 
  neither Device nor Path is given.
- update fdi file to support "bcm5974" devices.



xf86-input-synaptics-0.15.1-dont-crash-without-Device.patch:

--- NEW FILE xf86-input-synaptics-0.15.1-dont-crash-without-Device.patch ---
>From 5d3a47eed9f5330982d10c3acc15c486e3c86beb Mon Sep 17 00:00:00 2001
From: Peter Hutterer <peter.hutterer at redhat.com>
Date: Tue, 9 Sep 2008 19:12:35 +0930
Subject: [PATCH] Don't crash when neither Path nor Device are given.

xf86ReplaceOption doesn't seem to like NULL values
---
 src/synaptics.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/src/synaptics.c b/src/synaptics.c
index 3e55538..8475d1a 100644
--- a/src/synaptics.c
+++ b/src/synaptics.c
@@ -176,7 +176,8 @@ SetDeviceAndProtocol(LocalDevicePtr local)
     device = xf86FindOptionValue(local->options, "Device");
     if (!device) {
 	device = xf86FindOptionValue(local->options, "Path");
-	xf86ReplaceStrOption(local->options, "Device", device);
+	if (device)
+	    xf86ReplaceStrOption(local->options, "Device", device);
     }
     if (device && strstr(device, "/dev/input/event")) {
 #ifdef BUILD_EVENTCOMM
-- 
1.6.0.1


xf86-input-synaptics-0.15.1-dont-lose-buttonup.patch:

--- NEW FILE xf86-input-synaptics-0.15.1-dont-lose-buttonup.patch ---
>From 2bb34ea034ebab2a81d17fefe416c4adc80d3817 Mon Sep 17 00:00:00 2001
From: Peter Hutterer <peter.hutterer at redhat.com>
Date: Sat, 6 Sep 2008 03:03:42 +0930
Subject: [PATCH] Don't lose button up event if timeout is cancelled in the same ReadInput cycle

On a left/right button press, middle button emulation springs into action and
changes the reported hw state. It then returns a delay that is supposed to set
a timer. No button event is posted to the server, the timer ensures that it'll
be posted later.

If however - in the same cycle - the button up is reported, but with a
hardware time > middle emulation timeout, the middle button emulation is
canceled. The hw state is reset to button down, and processing continues,
reporting the button down event.
Since this is in the same cycle, the new delay overrides the previous one and
the timer is never set.

Introduce a new state into MB emulation that forces the click event if the
above situation occurs.

Red Hat Bug 233717 <http://bugzilla.redhat.com/show_bug.cgi?id=233717>
---
 src/synaptics.c    |   28 ++++++++++++++++++++++++++--
 src/synapticsstr.h |    4 +++-
 2 files changed, 29 insertions(+), 3 deletions(-)

diff --git a/src/synaptics.c b/src/synaptics.c
index 3e55538..6027572 100644
--- a/src/synaptics.c
+++ b/src/synaptics.c
@@ -877,6 +877,8 @@ HandleMidButtonEmulation(SynapticsPrivate *priv, struct SynapticsHwState *hw, in
 
     while (!done) {
 	switch (priv->mid_emu_state) {
+	case MBE_LEFT_CLICK:
+	case MBE_RIGHT_CLICK:
 	case MBE_OFF:
 	    priv->button_delay_millis = hw->millis;
 	    if (hw->left) {
@@ -892,7 +894,12 @@ HandleMidButtonEmulation(SynapticsPrivate *priv, struct SynapticsHwState *hw, in
 				 hw->millis);
 	    if (timeleft > 0)
 		*delay = MIN(*delay, timeleft);
-	    if (!hw->left || (timeleft <= 0)) {
+
+            /* timeout, but within the same ReadInput cycle! */
+            if ((timeleft <= 0) && !hw->left) {
+		priv->mid_emu_state = MBE_LEFT_CLICK;
+		done = TRUE;
+            } else if ((!hw->left) || (timeleft <= 0)) {
 		hw->left = TRUE;
 		priv->mid_emu_state = MBE_TIMEOUT;
 		done = TRUE;
@@ -908,7 +915,12 @@ HandleMidButtonEmulation(SynapticsPrivate *priv, struct SynapticsHwState *hw, in
 				 hw->millis);
 	    if (timeleft > 0)
 		*delay = MIN(*delay, timeleft);
-	    if (!hw->right || (timeleft <= 0)) {
+
+	     /* timeout, but within the same ReadInput cycle! */
+            if ((timeleft <= 0) && !hw->right) {
+		priv->mid_emu_state = MBE_RIGHT_CLICK;
+		done = TRUE;
+            } else if (!hw->right || (timeleft <= 0)) {
 		hw->right = TRUE;
 		priv->mid_emu_state = MBE_TIMEOUT;
 		done = TRUE;
@@ -1918,6 +1930,18 @@ HandleState(LocalDevicePtr local, struct SynapticsHwState *hw)
     if (dx || dy)
 	xf86PostMotionEvent(local->dev, 0, 0, 2, dx, dy);
 
+    if (priv->mid_emu_state == MBE_LEFT_CLICK)
+    {
+	xf86PostButtonEvent(local->dev, FALSE, 1, 1, 0, 0);
+	xf86PostButtonEvent(local->dev, FALSE, 1, 0, 0, 0);
+	priv->mid_emu_state = MBE_OFF;
+    } else if (priv->mid_emu_state == MBE_RIGHT_CLICK)
+    {
+	xf86PostButtonEvent(local->dev, FALSE, 3, 1, 0, 0);
+	xf86PostButtonEvent(local->dev, FALSE, 3, 0, 0, 0);
+	priv->mid_emu_state = MBE_OFF;
+    }
+
     change = buttons ^ priv->lastButtons;
     while (change) {
 	id = ffs(change); /* number of first set bit 1..32 is returned */
diff --git a/src/synapticsstr.h b/src/synapticsstr.h
index ca61a9c..5d61d0e 100644
--- a/src/synapticsstr.h
+++ b/src/synapticsstr.h
@@ -54,7 +54,9 @@ enum MidButtonEmulation {
     MBE_RIGHT,			/* Right button pressed, waiting for left button or timeout */
     MBE_MID,			/* Left and right buttons pressed, waiting for both buttons
 				   to be released */
-    MBE_TIMEOUT			/* Waiting for both buttons to be released. */
+    MBE_TIMEOUT,		/* Waiting for both buttons to be released. */
+    MBE_LEFT_CLICK,		/* Emulate left button click. */
+    MBE_RIGHT_CLICK,		/* Emulate right button click. */
 };
 
 /* See docs/tapndrag.dia for a state machine diagram */
-- 
1.6.0.1


xf86-input-synaptics-0.15.1-edges.patch:

--- NEW FILE xf86-input-synaptics-0.15.1-edges.patch ---
>From 9ab7e725daa21ceb487df324db62f2e0148b9f4e Mon Sep 17 00:00:00 2001
From: Peter Hutterer <peter.hutterer at redhat.com>
Date: Tue, 9 Sep 2008 00:27:36 +0930
Subject: [PATCH] Improve edge autodetection and accel.

The synaptics spec specifies "typical axis ranges" for synaptics devices.
Based on these typical ranges, calculate edge coordinates and apply the same
proportions to the device at hand.
Based on the hard-coded ranges and acceleration, calculate accel for
autodetected ranges in the same proportions.
---
 src/eventcomm.c    |   12 ++++----
 src/synaptics.c    |   82 ++++++++++++++++++++++++++++++++++++++++------------
 src/synapticsstr.h |    1 +
 3 files changed, 70 insertions(+), 25 deletions(-)

diff --git a/src/eventcomm.c b/src/eventcomm.c
index 6c37dbd..8474c54 100644
--- a/src/eventcomm.c
+++ b/src/eventcomm.c
@@ -108,11 +108,11 @@ event_query_is_touchpad(int fd)
     return TRUE;
 }
 
-/* Query device for axis ranges and store outcome in the default parameter. */
+/* Query device for axis ranges */
 static void
 event_query_axis_ranges(int fd, LocalDevicePtr local)
 {
-    SynapticsSHM *pars = &((SynapticsPrivate *)local->private)->synpara_default;
+    SynapticsPrivate *priv = (SynapticsPrivate *)local->private;
     struct input_absinfo abs;
     int rc;
 
@@ -121,8 +121,8 @@ event_query_axis_ranges(int fd, LocalDevicePtr local)
     {
 	xf86Msg(X_INFO, "%s: x-axis range %d - %d\n", local->name,
 		abs.minimum, abs.maximum);
-	pars->left_edge  = abs.minimum;
-	pars->right_edge = abs.maximum;
+	priv->minx = abs.minimum;
+	priv->maxx = abs.maximum;
     } else
 	xf86Msg(X_ERROR, "%s: failed to query axis range (%s)\n", local->name,
 		strerror(errno));
@@ -132,8 +132,8 @@ event_query_axis_ranges(int fd, LocalDevicePtr local)
     {
 	xf86Msg(X_INFO, "%s: y-axis range %d - %d\n", local->name,
 		abs.minimum, abs.maximum);
-	pars->top_edge    = abs.minimum;
-	pars->bottom_edge = abs.maximum;
+	priv->miny = abs.minimum;
+	priv->maxy = abs.maximum;
     } else
 	xf86Msg(X_ERROR, "%s: failed to query axis range (%s)\n", local->name,
 		strerror(errno));
diff --git a/src/synaptics.c b/src/synaptics.c
index 0a87be8..6cb49e1 100644
--- a/src/synaptics.c
+++ b/src/synaptics.c
@@ -13,6 +13,7 @@
  * Copyright © 2006 Christian Thaeter
  * Copyright © 2007 Joseph P. Skudlarek
  * Copyright © 2008 Fedor P. Goncharov
+ * Copyright © 2008 Red Hat, Inc.
  *
  * Permission to use, copy, modify, distribute, and sell this software
  * and its documentation for any purpose is hereby granted without
@@ -307,6 +308,10 @@ SynapticsPreInit(InputDriverPtr drv, IDevPtr dev, int flags)
     char *repeater;
     pointer opts;
     int status;
+    float minSpeed, maxSpeed;
+    int horizScrollDelta, vertScrollDelta,
+        edgeMotionMinSpeed, edgeMotionMaxSpeed;
+    int l, r, t, b; /* left, right, top, bottom */
 
     /* allocate memory for SynapticsPrivateRec */
     priv = xcalloc(1, sizeof(SynapticsPrivate));
@@ -349,14 +354,6 @@ SynapticsPreInit(InputDriverPtr drv, IDevPtr dev, int flags)
 
     xf86OptionListReport(opts);
 
-    /* set hard-coded axis ranges before querying the device.
-     * These defaults are overwritten with the ones provided by the device
-     * during SetDeviceAndProtocol (if applicable). */
-    priv->synpara_default.left_edge   = 1900;
-    priv->synpara_default.right_edge  = 5400;
-    priv->synpara_default.top_edge    = 1900;
-    priv->synpara_default.bottom_edge = 4000;
-
     SetDeviceAndProtocol(local);
 
     /* open the touchpad device */
@@ -383,11 +380,58 @@ SynapticsPreInit(InputDriverPtr drv, IDevPtr dev, int flags)
     /* read the parameters */
     pars = &priv->synpara_default;
     pars->version = (PACKAGE_VERSION_MAJOR*10000+PACKAGE_VERSION_MINOR*100+PACKAGE_VERSION_PATCHLEVEL);
-    /* pars->xyz_edge contains defaults or values reported by hardware*/
-    pars->left_edge = xf86SetIntOption(opts, "LeftEdge", pars->left_edge);
-    pars->right_edge = xf86SetIntOption(opts, "RightEdge", pars->right_edge);
-    pars->top_edge = xf86SetIntOption(opts, "TopEdge", pars->top_edge);
-    pars->bottom_edge = xf86SetIntOption(opts, "BottomEdge", pars->bottom_edge);
+
+    /* The synaptics specs specify typical edge widths of 4% on x, and 5.4% on
+     * y (page 7) [Synaptics TouchPad Interfacing Guide, 510-000080 - A
+     * Second Edition, http://www.synaptics.com/support/dev_support.cfm, 8 Sep
+     * 2008]
+     * If the range was autodetected, apply these edge widths to all four
+     * sides.
+     */
+    if (priv->maxx && priv->maxy)
+    {
+        int width, height;
+        int ewidth, eheight; /* edge width/height */
+
+        width = abs(priv->maxx - priv->minx);
+        height = abs(priv->maxy - priv->miny);
+        ewidth = width * .04;
+        eheight = height * .055;
+
+        l = priv->minx + ewidth;
+        r = priv->maxx - ewidth;
+        t = priv->miny + eheight;
+        b = priv->maxy - eheight;
+
+        /* Default min/max speed are 0.09/0.18. Assuming we have a device that
+         * reports height 3040 (typical y range in synaptics specs) this gives
+         * us the same result. */
+        minSpeed = 273.0/height;
+        maxSpeed = 547.0/height;
+
+        /* Again, based on typical x/y range and defaults */
+        horizScrollDelta = width * .025;
+        vertScrollDelta = height * .04;
+        edgeMotionMinSpeed = 1;
+        edgeMotionMaxSpeed = width * .1;
+    } else {
+        l = 1900;
+        r = 5400;
+        t = 1900;
+        b = 4000;
+        minSpeed = 0.09;
+        maxSpeed = 0.18;
+
+        horizScrollDelta = 100;
+        vertScrollDelta = 100;
+        edgeMotionMinSpeed = 1;
+        edgeMotionMaxSpeed = 400;
+    }
+
+    pars->left_edge = xf86SetIntOption(opts, "LeftEdge", l);
+    pars->right_edge = xf86SetIntOption(opts, "RightEdge", r);
+    pars->top_edge = xf86SetIntOption(opts, "TopEdge", t);
+    pars->bottom_edge = xf86SetIntOption(opts, "BottomEdge", b);
 
     pars->finger_low = xf86SetIntOption(opts, "FingerLow", 25);
     pars->finger_high = xf86SetIntOption(opts, "FingerHigh", 30);
@@ -399,8 +443,8 @@ SynapticsPreInit(InputDriverPtr drv, IDevPtr dev, int flags)
     pars->fast_taps = xf86SetIntOption(opts, "FastTaps", FALSE);
     pars->emulate_mid_button_time = xf86SetIntOption(opts, "EmulateMidButtonTime", 75);
     pars->emulate_twofinger_z = xf86SetIntOption(opts, "EmulateTwoFingerMinZ", 257);
-    pars->scroll_dist_vert = xf86SetIntOption(opts, "VertScrollDelta", 100);
-    pars->scroll_dist_horiz = xf86SetIntOption(opts, "HorizScrollDelta", 100);
+    pars->scroll_dist_vert = xf86SetIntOption(opts, "VertScrollDelta", horizScrollDelta);
+    pars->scroll_dist_horiz = xf86SetIntOption(opts, "HorizScrollDelta", vertScrollDelta);
     pars->scroll_edge_vert = xf86SetBoolOption(opts, "VertEdgeScroll", TRUE);
     pars->special_scroll_area_right  = xf86SetBoolOption(opts, "SpecialScrollAreaRight", TRUE);
     pars->scroll_edge_horiz = xf86SetBoolOption(opts, "HorizEdgeScroll", TRUE);
@@ -409,8 +453,8 @@ SynapticsPreInit(InputDriverPtr drv, IDevPtr dev, int flags)
     pars->scroll_twofinger_horiz = xf86SetBoolOption(opts, "HorizTwoFingerScroll", FALSE);
     pars->edge_motion_min_z = xf86SetIntOption(opts, "EdgeMotionMinZ", 30);
     pars->edge_motion_max_z = xf86SetIntOption(opts, "EdgeMotionMaxZ", 160);
-    pars->edge_motion_min_speed = xf86SetIntOption(opts, "EdgeMotionMinSpeed", 1);
-    pars->edge_motion_max_speed = xf86SetIntOption(opts, "EdgeMotionMaxSpeed", 400);
+    pars->edge_motion_min_speed = xf86SetIntOption(opts, "EdgeMotionMinSpeed", edgeMotionMinSpeed);
+    pars->edge_motion_max_speed = xf86SetIntOption(opts, "EdgeMotionMaxSpeed", edgeMotionMaxSpeed);
     pars->edge_motion_use_always = xf86SetBoolOption(opts, "EdgeMotionUseAlways", FALSE);
     repeater = xf86SetStrOption(opts, "Repeater", NULL);
     pars->updown_button_scrolling = xf86SetBoolOption(opts, "UpDownScrolling", TRUE);
@@ -442,8 +486,8 @@ SynapticsPreInit(InputDriverPtr drv, IDevPtr dev, int flags)
     pars->press_motion_min_z = xf86SetIntOption(opts, "PressureMotionMinZ", pars->edge_motion_min_z);
     pars->press_motion_max_z = xf86SetIntOption(opts, "PressureMotionMaxZ", pars->edge_motion_max_z);
 
-    pars->min_speed = synSetFloatOption(opts, "MinSpeed", 0.09);
-    pars->max_speed = synSetFloatOption(opts, "MaxSpeed", 0.18);
+    pars->min_speed = synSetFloatOption(opts, "MinSpeed", minSpeed);
+    pars->max_speed = synSetFloatOption(opts, "MaxSpeed", maxSpeed);
     pars->accl = synSetFloatOption(opts, "AccelFactor", 0.0015);
     pars->trackstick_speed = synSetFloatOption(opts, "TrackstickSpeed", 40);
     pars->scroll_dist_circ = synSetFloatOption(opts, "CircScrollDelta", 0.1);
diff --git a/src/synapticsstr.h b/src/synapticsstr.h
index 5d61d0e..e5dd780 100644
--- a/src/synapticsstr.h
+++ b/src/synapticsstr.h
@@ -139,6 +139,7 @@ typedef struct _SynapticsPrivateRec
     int prev_z;				/* previous z value, for palm detection */
     int avg_width;			/* weighted average of previous fingerWidth values */
 
+    int minx, maxx, miny, maxy;         /* min/max dimensions as detected */
 } SynapticsPrivate;
 
 #endif /* _SYNAPTICSSTR_H_ */
-- 
1.6.0.1


xf86-input-synaptics-0.15.1-preprobe.patch:

--- NEW FILE xf86-input-synaptics-0.15.1-preprobe.patch ---
>From aeb2fa0764bad4203237eb89bf34963dc92bb7f2 Mon Sep 17 00:00:00 2001
From: Peter Hutterer <peter.hutterer at redhat.com>
Date: Tue, 9 Sep 2008 00:24:06 +0930
Subject: [PATCH] Pre-probe the device (eventcomm only).

For auto-dev, we'd probe the device node and get the axis ranges. If we
specify the device however we didn't retrieve the axis ranges and thus got
stuck with the defaults - losing out on automatic edge and accel calculation.

This is an issue if the device is hotplugged, as HAL will specify the device
node.

This patch adds another hook to synproto_operations to pre-probe the device.
This hook is only used by eventcomm and opens the FD, queries the axis range
and closes the FD again.
---
 src/alpscomm.c  |    3 ++-
 src/eventcomm.c |   28 +++++++++++++++++++++++++++-
 src/ps2comm.c   |    3 ++-
 src/psmcomm.c   |    3 ++-
 src/synaptics.c |    5 +++--
 src/synproto.h  |    1 +
 6 files changed, 37 insertions(+), 6 deletions(-)

diff --git a/src/alpscomm.c b/src/alpscomm.c
index 4f19d04..0b93fef 100644
--- a/src/alpscomm.c
+++ b/src/alpscomm.c
@@ -262,5 +262,6 @@ struct SynapticsProtocolOperations alps_proto_operations = {
     ALPSDeviceOffHook,
     ALPSQueryHardware,
     ALPSReadHwState,
-    ALPSAutoDevProbe
+    ALPSAutoDevProbe,
+    NULL /* ProbeDevice */
 };
diff --git a/src/eventcomm.c b/src/eventcomm.c
index e3ac20e..6c37dbd 100644
--- a/src/eventcomm.c
+++ b/src/eventcomm.c
@@ -305,6 +305,31 @@ static int EventDevOnly(const struct dirent *dir) {
 	return strncmp(EVENT_DEV_NAME, dir->d_name, 5) == 0;
 }
 
+/**
+ * Probe the given device name for axis ranges, if appropriate.
+ */
+static Bool
+EventProbeDevice(LocalDevicePtr local, char* device)
+{
+    int fd;
+
+    SYSCALL(fd = open(device, O_RDONLY));
+    if (fd < 0)
+        goto out;
+
+    if (!event_query_is_touchpad(fd))
+        goto out;
+
+    event_query_axis_ranges(fd, local);
+
+out:
+    if (fd >= 0)
+        SYSCALL(close(fd));
+
+    /* Always return TRUE, PreInit will complain for us if necessary */
+    return TRUE;
+}
+
 static Bool
 EventAutoDevProbe(LocalDevicePtr local)
 {
@@ -361,5 +386,6 @@ struct SynapticsProtocolOperations event_proto_operations = {
     EventDeviceOffHook,
     EventQueryHardware,
     EventReadHwState,
-    EventAutoDevProbe
+    EventAutoDevProbe,
+    EventProbeDevice
 };
diff --git a/src/ps2comm.c b/src/ps2comm.c
index 32e3dc9..cc2a202 100644
--- a/src/ps2comm.c
+++ b/src/ps2comm.c
@@ -758,5 +758,6 @@ struct SynapticsProtocolOperations psaux_proto_operations = {
     PS2DeviceOffHook,
     PS2QueryHardware,
     PS2ReadHwState,
-    PS2AutoDevProbe
+    PS2AutoDevProbe,
+    NULL /* ProbeDevice */
 };
diff --git a/src/psmcomm.c b/src/psmcomm.c
index 95364ab..c36bed3 100644
--- a/src/psmcomm.c
+++ b/src/psmcomm.c
@@ -177,5 +177,6 @@ struct SynapticsProtocolOperations psm_proto_operations = {
     PSMDeviceOffHook,
     PSMQueryHardware,
     PSMReadHwState,
-    PSMAutoDevProbe
+    PSMAutoDevProbe,
+    NULL /* ProbeDevice */
 };
diff --git a/src/synaptics.c b/src/synaptics.c
index 397cfd8..53d3290 100644
--- a/src/synaptics.c
+++ b/src/synaptics.c
@@ -180,8 +180,9 @@ SetDeviceAndProtocol(LocalDevicePtr local)
     }
     if (device && strstr(device, "/dev/input/event")) {
 #ifdef BUILD_EVENTCOMM
-	/* trust the device name if we've been given one */
-	proto = SYN_PROTO_EVENT;
+        if (event_proto_operations.ProbeDevice &&
+            event_proto_operations.ProbeDevice(local, device))
+            proto = SYN_PROTO_EVENT;
 #endif
     } else {
 	str_par = xf86FindOptionValue(local->options, "Protocol");
diff --git a/src/synproto.h b/src/synproto.h
index d5ae8f9..246adbd 100644
--- a/src/synproto.h
+++ b/src/synproto.h
@@ -96,6 +96,7 @@ struct SynapticsProtocolOperations {
 			struct SynapticsProtocolOperations *proto_ops,
 			struct CommData *comm, struct SynapticsHwState *hwRet);
     Bool (*AutoDevProbe)(LocalDevicePtr local);
+    Bool (*ProbeDevice)(LocalDevicePtr local, char* name);
 };
 
 extern struct SynapticsProtocolOperations psaux_proto_operations;
-- 
1.6.0.1



Index: .cvsignore
===================================================================
RCS file: /cvs/pkgs/rpms/xorg-x11-drv-synaptics/F-9/.cvsignore,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- .cvsignore	12 Aug 2008 06:51:25 -0000	1.2
+++ .cvsignore	9 Sep 2008 14:35:28 -0000	1.3
@@ -1 +1 @@
-xf86-input-synaptics-0.15.0.tar.bz2
+xf86-input-synaptics-0.15.1.tar.bz2


Index: 10-synaptics.fdi
===================================================================
RCS file: /cvs/pkgs/rpms/xorg-x11-drv-synaptics/F-9/10-synaptics.fdi,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- 10-synaptics.fdi	7 Sep 2008 13:14:17 -0000	1.2
+++ 10-synaptics.fdi	9 Sep 2008 14:35:28 -0000	1.3
@@ -11,6 +11,9 @@
       <match key="info.product" contains="appletouch">
           <merge key="input.x11_driver" type="string">synaptics</merge>
       </match>
+      <match key="info.product" contains="bcm5974">
+          <merge key="input.x11_driver" type="string">synaptics</merge>
+      </match>
     </match>
   </device>
 </deviceinfo>


Index: sources
===================================================================
RCS file: /cvs/pkgs/rpms/xorg-x11-drv-synaptics/F-9/sources,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- sources	12 Aug 2008 06:51:25 -0000	1.2
+++ sources	9 Sep 2008 14:35:28 -0000	1.3
@@ -1 +1 @@
-939f1c831c5cd3a6f027e982592dfc5b  xf86-input-synaptics-0.15.0.tar.bz2
+0a588c729295b9a91a05d9d157270917  xf86-input-synaptics-0.15.1.tar.bz2


Index: xorg-x11-drv-synaptics.spec
===================================================================
RCS file: /cvs/pkgs/rpms/xorg-x11-drv-synaptics/F-9/xorg-x11-drv-synaptics.spec,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- xorg-x11-drv-synaptics.spec	7 Sep 2008 13:14:17 -0000	1.3
+++ xorg-x11-drv-synaptics.spec	9 Sep 2008 14:35:28 -0000	1.4
@@ -4,8 +4,8 @@
 
 Name:           xorg-x11-drv-synaptics
 Summary:        Xorg X11 synaptics input driver
-Version:        0.15.0
-Release:        3%{?dist}
+Version:        0.15.1
+Release:        1%{?dist}
 URL:            http://www.x.org
 License:        MIT
 Group:          User Interface/X Hardware Support
@@ -13,7 +13,10 @@
 
 Source0:        ftp://ftp.x.org/pub/individual/driver/%{tarball}-%{version}.tar.bz2
 Source1:        10-synaptics.fdi
-Patch1:		 xf86-input-synaptics-0.15.0-tap.patch
+Patch2:		 xf86-input-synaptics-0.15.1-dont-lose-buttonup.patch
+Patch3:		 xf86-input-synaptics-0.15.1-edges.patch
+Patch4:		 xf86-input-synaptics-0.15.1-preprobe.patch
+Patch5:		 xf86-input-synaptics-0.15.1-dont-crash-without-Device.patch
 ExcludeArch:    s390 s390x
 
 BuildRequires:  libtool pkgconfig
@@ -58,7 +61,10 @@
 
 %prep
 %setup -q -n %{tarball}-%{version}
-%patch1 -p1 -b .tap
+%patch2 -p1 -b .dont-lose-buttonup
+%patch3 -p1 -b .edges
+%patch4 -p1 -b .preprobe
+%patch5 -p1 -b .dont-crash-without-device
 
 %build
 autoreconf -v --install --force || exit 1
@@ -92,6 +98,19 @@
 %doc COPYING README
 
 %changelog
+* Tue Sep 9 2008 Peter Hutterer <peter.hutterer at redhat.com> 0.15.1-1
+- update to upstream 0.15.1
+- remove xf86-input-synaptics-0.15.0-tap.patch - merged in upstream.
+- xf86-input-synaptics-0.15.1-dont-lose-buttonup.patch: force a click if
+  middle button emulation times out during ReadInput cycle. RH #233717.
+- xf86-input-synaptics-0.15.1-edges.patch: improve edge calculation and
+  acceleration factors.
+- xf86-input-synaptics-0.15.1-preprobe patch: pre-probe eventcomm devices for
+  axis ranges if specifed with Device option.
+- xf86-input-synaptics-0.15.1-dont-crash-without-Device.patch: don't crash if 
+  neither Device nor Path is given.
+- update fdi file to support "bcm5974" devices.
+
 * Sun Sep 7 2008 Peter Hutterer <peter.hutterer at redhat.com> 0.15.0-3
 - update fdi file to support "appletouch" devices.
 




More information about the fedora-extras-commits mailing list