Module Name: xsrc Committed By: tsutsui Date: Fri Oct 15 17:42:04 UTC 2021
Modified Files: xsrc/external/mit/xorg-server/dist/hw/sun: sunIo.c sunKbd.c Log Message: Handle restoring keyboard state via AbortDevices() rather than AbortDDX(). Tested on 3/60. Note AbortDevices() and DEVICE_ABORT in deviceProc functions were introduced after Xorg 1.14.0: https://gitlab.freedesktop.org/xorg/xserver/-/commit/9f79e93b6b3416055d08a0e8f9f16d5fd0649e36 To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 xsrc/external/mit/xorg-server/dist/hw/sun/sunIo.c cvs rdiff -u -r1.10 -r1.11 xsrc/external/mit/xorg-server/dist/hw/sun/sunKbd.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: xsrc/external/mit/xorg-server/dist/hw/sun/sunIo.c diff -u xsrc/external/mit/xorg-server/dist/hw/sun/sunIo.c:1.6 xsrc/external/mit/xorg-server/dist/hw/sun/sunIo.c:1.7 --- xsrc/external/mit/xorg-server/dist/hw/sun/sunIo.c:1.6 Tue Dec 8 10:33:47 2020 +++ xsrc/external/mit/xorg-server/dist/hw/sun/sunIo.c Fri Oct 15 17:42:04 2021 @@ -163,17 +163,12 @@ AbortDDX(enum ExitCode error) { int i; ScreenPtr pScreen; - DevicePtr devPtr; #ifdef SVR4 (void) OsSignal (SIGPOLL, SIG_IGN); #else (void) OsSignal (SIGIO, SIG_IGN); #endif - if (sunKeyboardDevice) { - devPtr = &sunKeyboardDevice->public; - (void) sunChangeKbdTranslation (((sunKbdPrivPtr)(devPtr->devicePrivate))->fd, FALSE); - } #if defined(SVR4) || defined(CSRG_BASED) sunNonBlockConsoleOff (); #else Index: xsrc/external/mit/xorg-server/dist/hw/sun/sunKbd.c diff -u xsrc/external/mit/xorg-server/dist/hw/sun/sunKbd.c:1.10 xsrc/external/mit/xorg-server/dist/hw/sun/sunKbd.c:1.11 --- xsrc/external/mit/xorg-server/dist/hw/sun/sunKbd.c:1.10 Wed Mar 17 15:02:27 2021 +++ xsrc/external/mit/xorg-server/dist/hw/sun/sunKbd.c Fri Oct 15 17:42:04 2021 @@ -669,7 +669,7 @@ sunKbdProc(DeviceIntPtr device, int what * Set the keyboard into "direct" mode and turn on * event translation. */ - if (sunChangeKbdTranslation(pPriv->fd,TRUE) == -1) + if (sunChangeKbdTranslation(pPriv->fd, TRUE) == -1) FatalError("Can't set keyboard translation\n"); SetNotifyFd(pPriv->fd, sunKbdHandlerNotify, X_NOTIFY_READ, NULL); pKeyboard->on = TRUE; @@ -687,13 +687,18 @@ sunKbdProc(DeviceIntPtr device, int what /* * Restore original keyboard directness and translation. */ - if (sunChangeKbdTranslation(pPriv->fd,FALSE) == -1) + if (sunChangeKbdTranslation(pPriv->fd, FALSE) == -1) FatalError("Can't reset keyboard translation\n"); RemoveNotifyFd(pPriv->fd); pKeyboard->on = FALSE; break; case DEVICE_ABORT: + /* + * Restore original keyboard directness and translation. + */ + pPriv = (sunKbdPrivPtr)pKeyboard->devicePrivate; + (void)sunChangeKbdTranslation(pPriv->fd, FALSE); break; } return Success;