aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/hw/xfree86/os-support/linux
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2012-11-19 11:21:45 +0100
committermarha <marha@users.sourceforge.net>2012-11-19 11:21:45 +0100
commit57b3e446b9b4017ccfdd3227be481df590740426 (patch)
tree0e4899f530f75d343c090202fc7123c78f9b4866 /xorg-server/hw/xfree86/os-support/linux
parent24635abae6008bef13e30d798b3f33abab412770 (diff)
parentb3e1e62c45f525cdd332073aaa34d8452cb23374 (diff)
downloadvcxsrv-57b3e446b9b4017ccfdd3227be481df590740426.tar.gz
vcxsrv-57b3e446b9b4017ccfdd3227be481df590740426.tar.bz2
vcxsrv-57b3e446b9b4017ccfdd3227be481df590740426.zip
Merge remote-tracking branch 'origin/released'
* origin/released: git update 19 nov 2012 Added bash script to update released branch Conflicts: mesalib/src/mapi/glapi/gen/gl_API.xml mesalib/src/mesa/program/.gitignore pixman/pixman/pixman-mmx.c xorg-server/Xi/xiquerypointer.c xorg-server/xkb/xkb.c
Diffstat (limited to 'xorg-server/hw/xfree86/os-support/linux')
-rw-r--r--xorg-server/hw/xfree86/os-support/linux/lnx_init.c33
1 files changed, 23 insertions, 10 deletions
diff --git a/xorg-server/hw/xfree86/os-support/linux/lnx_init.c b/xorg-server/hw/xfree86/os-support/linux/lnx_init.c
index 68c296b0f..bcb039f3f 100644
--- a/xorg-server/hw/xfree86/os-support/linux/lnx_init.c
+++ b/xorg-server/hw/xfree86/os-support/linux/lnx_init.c
@@ -38,6 +38,14 @@
#include <sys/stat.h>
+#ifndef K_OFF
+#define K_OFF 0x4
+#endif
+
+#ifndef KDSKBMUTE
+#define KDSKBMUTE 0x4B51
+#endif
+
static Bool KeepTty = FALSE;
static int activeVT = -1;
@@ -213,19 +221,23 @@ xf86OpenConsole(void)
tcgetattr(xf86Info.consoleFd, &tty_attr);
SYSCALL(ioctl(xf86Info.consoleFd, KDGKBMODE, &tty_mode));
-#ifdef K_OFF
- /* disable kernel special keys and buffering */
- SYSCALL(ret = ioctl(xf86Info.consoleFd, KDSKBMODE, K_OFF));
+ /* disable kernel special keys and buffering, new style */
+ SYSCALL(ret = ioctl(xf86Info.consoleFd, KDSKBMUTE, 1));
if (ret < 0)
-#endif
{
- SYSCALL(ret = ioctl(xf86Info.consoleFd, KDSKBMODE, K_RAW));
+ /* disable kernel special keys and buffering, old style */
+ SYSCALL(ret = ioctl(xf86Info.consoleFd, KDSKBMODE, K_OFF));
if (ret < 0)
- FatalError("xf86OpenConsole: KDSKBMODE K_RAW failed %s\n",
- strerror(errno));
-
- /* need to keep the buffer clean, else the kernel gets angry */
- xf86SetConsoleHandler(drain_console, NULL);
+ {
+ /* fine, just disable special keys */
+ SYSCALL(ret = ioctl(xf86Info.consoleFd, KDSKBMODE, K_RAW));
+ if (ret < 0)
+ FatalError("xf86OpenConsole: KDSKBMODE K_RAW failed %s\n",
+ strerror(errno));
+
+ /* ... and drain events, else the kernel gets angry */
+ xf86SetConsoleHandler(drain_console, NULL);
+ }
}
nTty = tty_attr;
@@ -271,6 +283,7 @@ xf86CloseConsole(void)
xf86Msg(X_WARNING, "xf86CloseConsole: KDSETMODE failed: %s\n",
strerror(errno));
+ SYSCALL(ioctl(xf86Info.consoleFd, KDSKBMUTE, 0));
SYSCALL(ioctl(xf86Info.consoleFd, KDSKBMODE, tty_mode));
tcsetattr(xf86Info.consoleFd, TCSANOW, &tty_attr);