Index: xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_acpi.c =================================================================== RCS file: /cvs/xorg/xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_acpi.c,v retrieving revision 1.2 diff -u -r1.2 lnx_acpi.c --- xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_acpi.c 31 Oct 2005 05:45:40 -0000 1.2 +++ xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_acpi.c 2 Jan 2006 17:17:29 -0000 @@ -45,6 +45,13 @@ memset(ev, 0, LINE_LENGTH); n = read( fd, ev, LINE_LENGTH ); + if (n <= 0) { + /* can only happen when reading from acpid socket */ + xf86MsgVerb(X_WARNING,3,"ACPI Event handler disappeared, reopening.\n"); + lnxCloseACPI(); + lnxACPIOpen(); + return 0; + } /* Check that we have a video event */ if (strstr(ev, "video") == ev) { @@ -160,6 +167,9 @@ #ifdef DEBUG ErrorF("ACPI: Closing device\n"); #endif + xf86PMGetEventFromOs = NULL; + xf86PMConfirmEventToOs = NULL; + if (ACPIihPtr) { fd = xf86RemoveInputHandler(ACPIihPtr); shutdown(fd, 2);