xorg-x11-server/xserver-1.3.0-avoid-ps2-probe.patch
Adam Jackson a346b95ad6 * Thu Oct 11 2007 Adam Jackson <ajax@redhat.com> 1.3.0.0-30
- xserver-1.3.0-avoid-ps2-probe.patch: /dev/input/mice is always ExplorerPS/2,
  so don't waste time on startup probing for it.
2007-10-11 14:11:57 +00:00

114 lines
3.7 KiB
Diff

diff -up xorg-server-1.3.0.0/hw/xfree86/loader/loadmod.c.jx xorg-server-1.3.0.0/hw/xfree86/loader/loadmod.c
--- xorg-server-1.3.0.0/hw/xfree86/loader/loadmod.c.jx 2007-04-16 12:37:51.000000000 -0400
+++ xorg-server-1.3.0.0/hw/xfree86/loader/loadmod.c 2007-10-10 19:13:47.000000000 -0400
@@ -408,7 +408,8 @@ FindModuleInSubdir(const char *dirpath,
while ((direntry = readdir(dir))) {
if (direntry->d_name[0] == '.')
continue;
- if ((stat(direntry->d_name, &stat_buf) == 0) && S_ISDIR(stat_buf.st_mode)) {
+
+ if (direntry->d_type == DT_DIR) {
snprintf(tmpBuf, PATH_MAX, "%s/%s", dirpath, direntry->d_name);
if ((ret = FindModuleInSubdir(tmpBuf, module)))
break;
@@ -525,8 +526,7 @@ LoaderListDirs(const char **subdirlist,
if (dirlen + strlen(dp->d_name) > PATH_MAX)
continue;
strcpy(fp, dp->d_name);
- if (!(stat(buf, &stat_buf) == 0 &&
- S_ISREG(stat_buf.st_mode)))
+ if (dp->d_type == DT_REG)
continue;
for (p = patterns; p->pattern; p++) {
if (regexec(&p->rex, dp->d_name, 2, match, 0) == 0 &&
diff -up xorg-server-1.3.0.0/hw/xfree86/os-support/linux/lnx_mouse.c.jx xorg-server-1.3.0.0/hw/xfree86/os-support/linux/lnx_mouse.c
--- xorg-server-1.3.0.0/hw/xfree86/os-support/linux/lnx_mouse.c.jx 2006-09-18 02:04:18.000000000 -0400
+++ xorg-server-1.3.0.0/hw/xfree86/os-support/linux/lnx_mouse.c 2007-10-11 09:53:33.000000000 -0400
@@ -45,7 +45,8 @@ typedef enum {
MOUSE_PROTO_SERIAL,
MOUSE_PROTO_PS2,
MOUSE_PROTO_MSC,
- MOUSE_PROTO_GPM
+ MOUSE_PROTO_GPM,
+ MOUSE_PROTO_EXPPS2,
} protocolTypes;
static struct {
@@ -55,7 +56,8 @@ static struct {
{ MOUSE_PROTO_UNKNOWN, NULL },
{ MOUSE_PROTO_PS2, "PS/2" },
{ MOUSE_PROTO_MSC, "MouseSystems" },
- { MOUSE_PROTO_GPM, "GPM" }
+ { MOUSE_PROTO_GPM, "GPM" },
+ { MOUSE_PROTO_EXPPS2, "ExplorerPS/2" },
};
static const char *
@@ -87,7 +89,7 @@ FindDevice(InputInfoPtr pInfo, const cha
}
static const char *
-GuessProtocol(InputInfoPtr pInfo, int flags)
+lnxMouseMagic(InputInfoPtr pInfo)
{
int fd = -1;
const char *dev;
@@ -137,8 +139,10 @@ GuessProtocol(InputInfoPtr pInfo, int fl
}
}
- if (strcmp(realdev, DEFAULT_PS2_DEV) == 0)
- proto = MOUSE_PROTO_PS2;
+ if (strcmp(realdev, DEFAULT_MOUSE_DEV) == 0)
+ proto = MOUSE_PROTO_EXPPS2;
+ else if (strcmp(realdev, DEFAULT_PS2_DEV) == 0)
+ proto = MOUSE_PROTO_EXPPS2;
else if (strcmp(realdev, DEFAULT_GPM_DATA_DEV) == 0)
proto = MOUSE_PROTO_MSC;
else if (strcmp(realdev, DEFAULT_GPM_CTL_DEV) == 0)
@@ -171,15 +175,14 @@ GuessProtocol(InputInfoPtr pInfo, int fl
close(fd);
}
if (proto == MOUSE_PROTO_UNKNOWN) {
- xf86Msg(X_ERROR, "%s: GuessProtocol: Cannot find mouse protocol.\n",
+ xf86Msg(X_ERROR, "%s: Cannot find mouse protocol.\n",
pInfo->name);
return NULL;
} else {
for (i = 0; i < sizeof(devproto)/sizeof(devproto[0]); i++) {
if (devproto[i].proto == proto) {
xf86Msg(X_INFO,
- "%s: GuessProtocol: "
- "setting mouse protocol to \"%s\"\n",
+ "%s: Setting mouse protocol to \"%s\"\n",
pInfo->name, devproto[i].name);
return devproto[i].name;
}
@@ -188,6 +191,18 @@ GuessProtocol(InputInfoPtr pInfo, int fl
return NULL;
}
+static const char *
+GuessProtocol(InputInfoPtr pInfo, int flags)
+{
+ return lnxMouseMagic(pInfo);
+}
+
+static const char *
+SetupAuto(InputInfoPtr pInfo, int *protoPara)
+{
+ return lnxMouseMagic(pInfo);
+}
+
_X_EXPORT OSMouseInfoPtr
xf86OSMouseInit(int flags)
{
@@ -200,6 +215,7 @@ xf86OSMouseInit(int flags)
p->DefaultProtocol = DefaultProtocol;
p->FindDevice = FindDevice;
p->GuessProtocol = GuessProtocol;
+ p->SetupAuto = SetupAuto;
return p;
}