diff options
Diffstat (limited to 'packages/nonworking/xfree86/xfree86-4.3.0/tinyx-kbd-enable-fix.patch')
-rw-r--r-- | packages/nonworking/xfree86/xfree86-4.3.0/tinyx-kbd-enable-fix.patch | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/packages/nonworking/xfree86/xfree86-4.3.0/tinyx-kbd-enable-fix.patch b/packages/nonworking/xfree86/xfree86-4.3.0/tinyx-kbd-enable-fix.patch index e69de29bb2..2c5355c9e4 100644 --- a/packages/nonworking/xfree86/xfree86-4.3.0/tinyx-kbd-enable-fix.patch +++ b/packages/nonworking/xfree86/xfree86-4.3.0/tinyx-kbd-enable-fix.patch @@ -0,0 +1,37 @@ +--- xc/programs/Xserver/hw/kdrive/linux/keyboard.c.orig 2001-11-08 10:26:24.000000000 +0000 ++++ xc/programs/Xserver/hw/kdrive/linux/keyboard.c 2003-03-11 21:13:09.000000000 +0000 +@@ -397,12 +397,13 @@ + static struct termios LinuxTermios; + static int LinuxKbdType; + +-void ++int + LinuxKeyboardEnable (int fd, void *closure) + { + struct termios nTty; + unsigned char buf[256]; + int n; ++ int fd_orig_flags; + + ioctl (fd, KDGKBMODE, &LinuxKbdTrans); + tcgetattr (fd, &LinuxTermios); +@@ -420,9 +421,18 @@ + tcsetattr(fd, TCSANOW, &nTty); + /* + * Flush any pending keystrokes ++ * ++ * Also set to nonblock, just to be safe + */ ++ fd_orig_flags = fcntl( fd , F_GETFL, 0 ); ++ fcntl ( fd, F_SETFL, fd_orig_flags | O_NONBLOCK ); ++ + while ((n = read (fd, buf, sizeof (buf))) > 0) +- ; ++ ; ++ ++ fcntl ( fd , F_SETFL, fd_orig_flags ); ++ ++ return fd; + } + + void |