6875743: Mask SIGIO on new libsysevent/door threads to create nv_124
authorHenry Zhao <Henry.Zhao@Sun.COM>
Fri, 11 Sep 2009 15:20:26 -0700
changeset 782 e2a8274058f3
parent 781 bf2bd78db20e
child 783 2ba69490c44b
6875743: Mask SIGIO on new libsysevent/door threads to create
open-src/driver/xf86-input-hotkey/sun-src/hotkey.c
--- 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: