--- a/open-src/driver/xf86-input-hotkey/sun-src/hotkey.c Fri Sep 11 13:17:39 2009 -0700
+++ b/open-src/driver/xf86-input-hotkey/sun-src/hotkey.c Fri Sep 11 15:20:26 2009 -0700
@@ -222,6 +222,7 @@
InputInfoPtr pInfo = device->public.devicePrivate;
char *s;
DeviceIntPtr mdev;
+ int blocked;
switch (what) {
case DEVICE_INIT:
@@ -230,11 +231,18 @@
return (!Success);
}
+ /*
+ * Block SIGIO so the new libsysevent/door threads created will
+ * mask SIGIO. See 6875743.
+ */
+ blocked = xf86BlockSIGIO();
+
if (hotkey_events_init(device)) {
if (pipe (hotkey_event_fd) == -1) {
xf86Msg(X_WARNING,
"hotkey_events_init: pipe open failed with errno %d\n", errno);
hotkey_events_fini();
+ xf86UnblockSIGIO(blocked);
return (!Success);
} else {
pInfo->fd = hotkey_event_fd[0];
@@ -242,9 +250,12 @@
}
} else {
xf86Msg(X_WARNING, "hotkey_events_init failed\n");
+ xf86UnblockSIGIO(blocked);
return (!Success);
}
+ xf86UnblockSIGIO(blocked);
+
device->public.on = FALSE;
break;
case DEVICE_ON: