rpms/xorg-x11-drv-evdev/devel evdev-2.0.4-cache-info.patch, 1.1, 1.2 evdev-2.0.4-reopen-device.patch, 1.1, 1.2 xorg-x11-drv-evdev.spec, 1.30, 1.31

Adam Jackson ajax at fedoraproject.org
Fri Sep 12 20:08:53 UTC 2008


Author: ajax

Update of /cvs/pkgs/rpms/xorg-x11-drv-evdev/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv12800

Modified Files:
	evdev-2.0.4-cache-info.patch evdev-2.0.4-reopen-device.patch 
	xorg-x11-drv-evdev.spec 
Log Message:
* Fri Sep 12 2008 Adam Jackson <ajax at redhat.com> 2.0.4-3
- evdev-2.0.4-reopen-device.patch: When arming the reopen timer, stash it in
  the driver private, and explicitly cancel it if the server decides to
  close the device for real.
- evdev-2.0.4-cache-info.patch: Rebase to account for same.


evdev-2.0.4-cache-info.patch:

Index: evdev-2.0.4-cache-info.patch
===================================================================
RCS file: /cvs/pkgs/rpms/xorg-x11-drv-evdev/devel/evdev-2.0.4-cache-info.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- evdev-2.0.4-cache-info.patch	28 Aug 2008 02:26:38 -0000	1.1
+++ evdev-2.0.4-cache-info.patch	12 Sep 2008 20:08:52 -0000	1.2
@@ -1,25 +1,6 @@
-From 441a97c22933db462dd53e000d1cb269dab6e825 Mon Sep 17 00:00:00 2001
-From: Peter Hutterer <peter.hutterer at redhat.com>
-Date: Thu, 28 Aug 2008 10:29:26 +0930
-Subject: [PATCH] Cache device information and compare against info after re-open.
-
-This way we ensure that if the topology changes under us, we don't open a
-completely different device. If a device has changed, we disable it.
-(cherry picked from commit 3bb7d100570134058eb4c906d4902c655148a8be)
-
-Conflicts:
-
-	src/evdev.c
-	src/evdev.h
----
- src/evdev.c |  131 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
- src/evdev.h |   12 +++++
- 2 files changed, 137 insertions(+), 6 deletions(-)
-
-diff --git a/src/evdev.c b/src/evdev.c
-index 16cf67f..ca6da6e 100644
---- a/src/evdev.c
-+++ b/src/evdev.c
+diff -up xf86-input-evdev-2.0.4/src/evdev.c.jx xf86-input-evdev-2.0.4/src/evdev.c
+--- xf86-input-evdev-2.0.4/src/evdev.c.jx	2008-09-12 16:04:34.000000000 -0400
++++ xf86-input-evdev-2.0.4/src/evdev.c	2008-09-12 16:04:56.000000000 -0400
 @@ -98,6 +98,7 @@ static const char *evdevDefaults[] = {
  };
  
@@ -28,7 +9,7 @@
  
  static void
  SetXkbOption(InputInfoPtr pInfo, char *name, char **option)
-@@ -176,11 +177,19 @@ EvdevReopenTimer(OsTimerPtr timer, CARD32 time, pointer arg)
+@@ -176,12 +177,19 @@ EvdevReopenTimer(OsTimerPtr timer, CARD3
  
      if (pInfo->fd != -1)
      {
@@ -36,8 +17,8 @@
 -                pEvdev->reopen_attempts - pEvdev->reopen_left);
 -
          pEvdev->reopen_left = 0;
+ 	pEvdev->reopen_timer = NULL;
 -        EvdevOn(pInfo->dev);
-+
 +        if (EvdevCacheCompare(pInfo, TRUE) == Success)
 +        {
 +            xf86Msg(X_INFO, "%s: Device reopened after %d attempts.\n", pInfo->name,
@@ -52,7 +33,7 @@
          return 0;
      }
  
-@@ -368,8 +377,6 @@ EvdevReadInput(InputInfoPtr pInfo)
+@@ -370,8 +378,6 @@ EvdevReadInput(InputInfoPtr pInfo)
      }
  }
  
@@ -61,7 +42,7 @@
  #define TestBit(bit, array) (array[(bit) / LONG_BITS]) & (1 << ((bit) % LONG_BITS))
  
  static void
-@@ -994,6 +1001,116 @@ EvdevConvert(InputInfoPtr pInfo, int first, int num, int v0, int v1, int v2,
+@@ -1000,6 +1006,116 @@ EvdevConvert(InputInfoPtr pInfo, int fir
      return TRUE;
  }
  
@@ -178,7 +159,7 @@
  static int
  EvdevProbe(InputInfoPtr pInfo)
  {
-@@ -1173,6 +1290,8 @@ EvdevPreInit(InputDriverPtr drv, IDevPtr dev, int flags)
+@@ -1179,6 +1295,8 @@ EvdevPreInit(InputDriverPtr drv, IDevPtr
          return NULL;
      }
  
@@ -187,10 +168,9 @@
      return pInfo;
  }
  
-diff --git a/src/evdev.h b/src/evdev.h
-index 0f8cf4b..47bbff2 100644
---- a/src/evdev.h
-+++ b/src/evdev.h
+diff -up xf86-input-evdev-2.0.4/src/evdev.h.jx xf86-input-evdev-2.0.4/src/evdev.h
+--- xf86-input-evdev-2.0.4/src/evdev.h.jx	2008-09-12 16:04:34.000000000 -0400
++++ xf86-input-evdev-2.0.4/src/evdev.h	2008-09-12 16:04:56.000000000 -0400
 @@ -40,6 +40,9 @@
  #include <X11/extensions/XKBstr.h>
  #endif
@@ -201,10 +181,10 @@
  typedef struct {
      const char *device;
      int kernel24;
-@@ -71,6 +74,15 @@ typedef struct {
- 
+@@ -72,6 +75,15 @@ typedef struct {
      int reopen_attempts; /* max attempts to re-open after read failure */
      int reopen_left;     /* number of attempts left to re-open the device */
+     OsTimerPtr reopen_timer;
 +
 +    /* Cached info from device. */
 +    char name[1024];
@@ -217,6 +197,3 @@
  } EvdevRec, *EvdevPtr;
  
  /* Middle Button emulation */
--- 
-1.5.6.4
-

evdev-2.0.4-reopen-device.patch:

Index: evdev-2.0.4-reopen-device.patch
===================================================================
RCS file: /cvs/pkgs/rpms/xorg-x11-drv-evdev/devel/evdev-2.0.4-reopen-device.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- evdev-2.0.4-reopen-device.patch	28 Aug 2008 02:26:38 -0000	1.1
+++ evdev-2.0.4-reopen-device.patch	12 Sep 2008 20:08:52 -0000	1.2
@@ -1,31 +1,6 @@
-From 188f07089d9c91d503391d05f0c3776360d7446b Mon Sep 17 00:00:00 2001
-From: Peter Hutterer <peter.hutterer at redhat.com>
-Date: Thu, 28 Aug 2008 10:24:33 +0930
-Subject: [PATCH] Attempt to re-open devices on read errors.
-
-Coming back from resume may leave us with a file descriptor that can be opened
-but fails on the first read (ENODEV).
-In this case, try to open the device until it becomes available or until the
-predefined count expires.
-
-Adds option "ReopenAttempts" <int>
-(cherry picked from commit b41d39a745cce9e91241453935ea4c702772c5da)
-
-Conflicts:
-
-	man/evdev.man
-	src/evdev.c
-	src/evdev.h
----
- man/evdev.man |    5 ++
- src/evdev.c   |  130 ++++++++++++++++++++++++++++++++++++++++++++++++--------
- src/evdev.h   |    4 ++
- 3 files changed, 120 insertions(+), 19 deletions(-)
-
-diff --git a/man/evdev.man b/man/evdev.man
-index f438f78..530f979 100644
---- a/man/evdev.man
-+++ b/man/evdev.man
+diff -up xf86-input-evdev-2.0.4/man/evdev.man.reopen-device xf86-input-evdev-2.0.4/man/evdev.man
+--- xf86-input-evdev-2.0.4/man/evdev.man.reopen-device	2008-08-14 22:27:13.000000000 -0400
++++ xf86-input-evdev-2.0.4/man/evdev.man	2008-09-12 15:45:50.000000000 -0400
 @@ -67,6 +67,11 @@ button event is registered.
  Sets the timeout (in milliseconds) that the driver waits before deciding
  if two buttons where pressed "simultaneously" when 3 button emulation is
@@ -38,10 +13,9 @@
  .SH AUTHORS
  Kristian Høgsberg.
  .SH "SEE ALSO"
-diff --git a/src/evdev.c b/src/evdev.c
-index a857db3..16cf67f 100644
---- a/src/evdev.c
-+++ b/src/evdev.c
+diff -up xf86-input-evdev-2.0.4/src/evdev.c.reopen-device xf86-input-evdev-2.0.4/src/evdev.c
+--- xf86-input-evdev-2.0.4/src/evdev.c.reopen-device	2008-08-14 22:27:13.000000000 -0400
++++ xf86-input-evdev-2.0.4/src/evdev.c	2008-09-12 15:55:42.000000000 -0400
 @@ -73,6 +73,7 @@
  #define EVDEV_RELATIVE_EVENTS	(1 << 2)
  #define EVDEV_ABSOLUTE_EVENTS	(1 << 3)
@@ -59,7 +33,7 @@
  static void
  SetXkbOption(InputInfoPtr pInfo, char *name, char **option)
  {
-@@ -154,6 +157,46 @@ PostKbdEvent(InputInfoPtr pInfo, struct input_event *ev, int value)
+@@ -154,6 +157,48 @@ PostKbdEvent(InputInfoPtr pInfo, struct 
      xf86PostKeyboardEvent(pInfo->dev, code, value);
  }
  
@@ -86,6 +60,7 @@
 +                pEvdev->reopen_attempts - pEvdev->reopen_left);
 +
 +        pEvdev->reopen_left = 0;
++	pEvdev->reopen_timer = NULL;
 +        EvdevOn(pInfo->dev);
 +        return 0;
 +    }
@@ -97,6 +72,7 @@
 +        xf86Msg(X_ERROR, "%s: Failed to reopen device after %d attempts.\n",
 +                pInfo->name, pEvdev->reopen_attempts);
 +        DisableDevice(pInfo->dev);
++	pEvdev->reopen_timer = NULL;
 +        return 0;
 +    }
 +
@@ -106,7 +82,7 @@
  static void
  EvdevReadInput(InputInfoPtr pInfo)
  {
-@@ -173,6 +216,15 @@ EvdevReadInput(InputInfoPtr pInfo)
+@@ -173,6 +218,15 @@ EvdevReadInput(InputInfoPtr pInfo)
              /* The kernel promises that we always only read a complete
               * event, so len != sizeof ev is an error. */
              xf86Msg(X_ERROR, "%s: Read error: %s\n", pInfo->name, strerror(errno));
@@ -117,12 +93,12 @@
 +                close(pInfo->fd);
 +                pInfo->fd = -1;
 +                pEvdev->reopen_left = pEvdev->reopen_attempts;
-+                TimerSet(NULL, 0, 100, EvdevReopenTimer, pInfo);
++                pEvdev->reopen_timer = TimerSet(NULL, 0, 100, EvdevReopenTimer, pInfo);
 +            }
              break;
          }
  
-@@ -836,6 +888,47 @@ EvdevInit(DeviceIntPtr device)
+@@ -836,6 +890,47 @@ EvdevInit(DeviceIntPtr device)
      return Success;
  }
  
@@ -150,7 +126,7 @@
 +        close(pInfo->fd);
 +        pInfo->fd = -1;
 +        pEvdev->reopen_left = pEvdev->reopen_attempts;
-+        TimerSet(NULL, 0, 100, EvdevReopenTimer, pInfo);
++        pEvdev->reopen_timer = TimerSet(NULL, 0, 100, EvdevReopenTimer, pInfo);
 +    } else
 +    {
 +        xf86AddEnabledDevice(pInfo);
@@ -170,7 +146,7 @@
  static int
  EvdevProc(DeviceIntPtr device, int what)
  {
-@@ -851,30 +944,26 @@ EvdevProc(DeviceIntPtr device, int what)
+@@ -851,30 +946,30 @@ EvdevProc(DeviceIntPtr device, int what)
  	return EvdevInit(device);
  
      case DEVICE_ON:
@@ -209,12 +185,16 @@
      case DEVICE_CLOSE:
  	xf86Msg(X_INFO, "%s: Close\n", pInfo->name);
 -	close(pInfo->fd);
++	if (pEvdev->reopen_timer) {
++	    TimerCancel(pEvdev->reopen_timer);
++	    pEvdev->reopen_timer = NULL;
++	}
 +        if (pInfo->fd != -1)
 +            close(pInfo->fd);
  	break;
      }
  
-@@ -1060,11 +1149,12 @@ EvdevPreInit(InputDriverPtr drv, IDevPtr dev, int flags)
+@@ -1060,11 +1155,12 @@ EvdevPreInit(InputDriverPtr drv, IDevPtr
          return NULL;
      }
  
@@ -229,7 +209,7 @@
  
      if (pInfo->fd < 0) {
          xf86Msg(X_ERROR, "Unable to open evdev device \"%s\".\n", device);
-@@ -1072,6 +1162,8 @@ EvdevPreInit(InputDriverPtr drv, IDevPtr dev, int flags)
+@@ -1072,6 +1168,8 @@ EvdevPreInit(InputDriverPtr drv, IDevPtr
          return NULL;
      }
  
@@ -238,10 +218,9 @@
      pEvdev->noXkb = noXkbExtension;
      /* parse the XKB options during kbd setup */
  
-diff --git a/src/evdev.h b/src/evdev.h
-index cad1eed..0f8cf4b 100644
---- a/src/evdev.h
-+++ b/src/evdev.h
+diff -up xf86-input-evdev-2.0.4/src/evdev.h.reopen-device xf86-input-evdev-2.0.4/src/evdev.h
+--- xf86-input-evdev-2.0.4/src/evdev.h.reopen-device	2008-08-14 22:27:13.000000000 -0400
++++ xf86-input-evdev-2.0.4/src/evdev.h	2008-09-12 15:55:44.000000000 -0400
 @@ -41,6 +41,7 @@
  #endif
  
@@ -250,16 +229,14 @@
      int kernel24;
      int screen;
      int min_x, min_y, max_x, max_y;
-@@ -67,6 +68,9 @@ typedef struct {
+@@ -67,6 +68,10 @@ typedef struct {
          Time                expires;     /* time of expiry */
          Time                timeout;
      } emulateMB;
 +
 +    int reopen_attempts; /* max attempts to re-open after read failure */
 +    int reopen_left;     /* number of attempts left to re-open the device */
++    OsTimerPtr reopen_timer;
  } EvdevRec, *EvdevPtr;
  
  /* Middle Button emulation */
--- 
-1.5.6.4
-


Index: xorg-x11-drv-evdev.spec
===================================================================
RCS file: /cvs/pkgs/rpms/xorg-x11-drv-evdev/devel/xorg-x11-drv-evdev.spec,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- xorg-x11-drv-evdev.spec	28 Aug 2008 02:26:38 -0000	1.30
+++ xorg-x11-drv-evdev.spec	12 Sep 2008 20:08:52 -0000	1.31
@@ -7,7 +7,7 @@
 Summary:    Xorg X11 evdev input driver
 Name:	    xorg-x11-drv-evdev
 Version:    2.0.4
-Release:    2%{?dist}
+Release:    3%{?dist}
 URL:	    http://www.x.org
 License:    MIT
 Group:	    User Interface/X Hardware Support
@@ -35,8 +35,8 @@
 %setup -q -n %{tarball}-%{version}
 
 # apply patches
-%patch1 -p1 -b .reopen-device.patch
-%patch2 -p1 -b .cache-info.patch
+%patch1 -p1 -b .reopen-device
+%patch2 -p1 -b .cache-info
 
 %build
 autoreconf -v --install || exit 1
@@ -61,6 +61,12 @@
 %{_mandir}/man4/evdev.4*
 
 %changelog
+* Fri Sep 12 2008 Adam Jackson <ajax at redhat.com> 2.0.4-3
+- evdev-2.0.4-reopen-device.patch: When arming the reopen timer, stash it in
+  the driver private, and explicitly cancel it if the server decides to
+  close the device for real.
+- evdev-2.0.4-cache-info.patch: Rebase to account for same.
+
 * Thu Aug 28 2008 Peter Hutterer <peter.hutterer at redhat.com> 2.0.4-2
 - evdev-2.0.4-reopen-device.patch: try to reopen devices if a read error
   occurs on the fd.




More information about the fedora-extras-commits mailing list