2013-12-12 15:33:35 +01:00
|
|
|
From: Luc Verhaegen <lverhaegen@suse.de>
|
|
|
|
|
|
|
|
Handle 'Zap' - Ctrl-Alt-Backspace more gracefully
|
|
|
|
|
|
|
|
To avoid accidental zapping of the Xserver warn after
|
|
|
|
the first ctrl-alt-backspace by emitting a beep. Only
|
|
|
|
Zap the server if a second ctrl-alt-backspace is sent
|
|
|
|
within 2 seconds.
|
|
|
|
This can be enabled with a new option flag "ZapWarning"
|
|
|
|
|
2019-09-18 14:48:07 +02:00
|
|
|
Index: xorg-server-1.20.5/hw/xfree86/common/xf86Config.c
|
2012-04-20 11:32:05 +02:00
|
|
|
===================================================================
|
2019-09-18 14:48:07 +02:00
|
|
|
--- xorg-server-1.20.5.orig/hw/xfree86/common/xf86Config.c
|
|
|
|
+++ xorg-server-1.20.5/hw/xfree86/common/xf86Config.c
|
|
|
|
@@ -622,6 +622,7 @@ typedef enum {
|
2009-08-04 21:52:16 +02:00
|
|
|
FLAG_NOTRAPSIGNALS,
|
|
|
|
FLAG_DONTVTSWITCH,
|
|
|
|
FLAG_DONTZAP,
|
|
|
|
+ FLAG_ZAPWARNING,
|
|
|
|
FLAG_DONTZOOM,
|
|
|
|
FLAG_DISABLEVIDMODE,
|
|
|
|
FLAG_ALLOWNONLOCAL,
|
2019-09-18 14:48:07 +02:00
|
|
|
@@ -659,6 +660,8 @@ static OptionInfoRec FlagOptions[] = {
|
2012-04-20 11:32:05 +02:00
|
|
|
{0}, FALSE},
|
|
|
|
{FLAG_DONTZAP, "DontZap", OPTV_BOOLEAN,
|
|
|
|
{0}, FALSE},
|
|
|
|
+ { FLAG_ZAPWARNING, "ZapWarning", OPTV_BOOLEAN,
|
|
|
|
+ {0}, FALSE },
|
|
|
|
{FLAG_DONTZOOM, "DontZoom", OPTV_BOOLEAN,
|
|
|
|
{0}, FALSE},
|
|
|
|
{FLAG_DISABLEVIDMODE, "DisableVidModeExtension", OPTV_BOOLEAN,
|
2019-09-18 14:48:07 +02:00
|
|
|
@@ -740,6 +743,7 @@ configServerFlags(XF86ConfFlagsPtr flags
|
2009-08-04 21:52:16 +02:00
|
|
|
xf86GetOptValBool(FlagOptions, FLAG_NOTRAPSIGNALS, &xf86Info.notrapSignals);
|
|
|
|
xf86GetOptValBool(FlagOptions, FLAG_DONTVTSWITCH, &xf86Info.dontVTSwitch);
|
|
|
|
xf86GetOptValBool(FlagOptions, FLAG_DONTZAP, &xf86Info.dontZap);
|
|
|
|
+ xf86GetOptValBool(FlagOptions, FLAG_ZAPWARNING, &xf86Info.ZapWarning);
|
|
|
|
xf86GetOptValBool(FlagOptions, FLAG_DONTZOOM, &xf86Info.dontZoom);
|
|
|
|
|
|
|
|
xf86GetOptValBool(FlagOptions, FLAG_IGNORE_ABI, &xf86Info.ignoreABI);
|
2019-09-18 14:48:07 +02:00
|
|
|
Index: xorg-server-1.20.5/hw/xfree86/common/xf86Events.c
|
2012-04-20 11:32:05 +02:00
|
|
|
===================================================================
|
2019-09-18 14:48:07 +02:00
|
|
|
--- xorg-server-1.20.5.orig/hw/xfree86/common/xf86Events.c
|
|
|
|
+++ xorg-server-1.20.5/hw/xfree86/common/xf86Events.c
|
|
|
|
@@ -166,13 +166,25 @@ xf86ProcessActionEvent(ActionEvent actio
|
2015-11-10 15:31:30 +01:00
|
|
|
DebugF("ProcessActionEvent(%d,%p)\n", (int) action, arg);
|
2008-03-21 02:47:42 +01:00
|
|
|
switch (action) {
|
|
|
|
case ACTION_TERMINATE:
|
2012-04-20 11:32:05 +02:00
|
|
|
- if (!xf86Info.dontZap) {
|
2013-03-18 10:21:12 +01:00
|
|
|
- xf86Msg(X_INFO, "Server zapped. Shutting down.\n");
|
2012-04-20 11:32:05 +02:00
|
|
|
+ if (xf86Info.dontZap)
|
|
|
|
+ break;
|
2008-03-21 02:47:42 +01:00
|
|
|
+
|
2012-04-20 11:32:05 +02:00
|
|
|
+ if (xf86Info.ZapWarning) {
|
|
|
|
+ static struct timeval LastZap = { 0, 0};
|
|
|
|
+ struct timeval NewZap;
|
2008-03-21 02:47:42 +01:00
|
|
|
+
|
2012-04-20 11:32:05 +02:00
|
|
|
+ gettimeofday(&NewZap, NULL);
|
2008-03-21 02:47:42 +01:00
|
|
|
+
|
2012-04-20 11:32:05 +02:00
|
|
|
+ if ((NewZap.tv_sec - LastZap.tv_sec) >= 2) {
|
|
|
|
+ xf86OSRingBell(30, 1000, 50);
|
|
|
|
+ LastZap = NewZap;
|
|
|
|
+ break;
|
|
|
|
+ }
|
2008-03-21 02:47:42 +01:00
|
|
|
+ }
|
|
|
|
#ifdef XFreeXDGA
|
2012-04-20 11:32:05 +02:00
|
|
|
- DGAShutdown();
|
|
|
|
+ DGAShutdown();
|
2008-03-21 02:47:42 +01:00
|
|
|
#endif
|
2012-04-20 11:32:05 +02:00
|
|
|
- GiveUp(0);
|
|
|
|
- }
|
|
|
|
+ GiveUp(0);
|
|
|
|
break;
|
2008-03-21 02:47:42 +01:00
|
|
|
case ACTION_NEXT_MODE:
|
2012-04-20 11:32:05 +02:00
|
|
|
if (!xf86Info.dontZoom)
|
2019-09-18 14:48:07 +02:00
|
|
|
Index: xorg-server-1.20.5/hw/xfree86/common/xf86Globals.c
|
2012-04-20 11:32:05 +02:00
|
|
|
===================================================================
|
2019-09-18 14:48:07 +02:00
|
|
|
--- xorg-server-1.20.5.orig/hw/xfree86/common/xf86Globals.c
|
|
|
|
+++ xorg-server-1.20.5/hw/xfree86/common/xf86Globals.c
|
|
|
|
@@ -107,6 +107,7 @@ xf86InfoRec xf86Info = {
|
2012-04-20 11:32:05 +02:00
|
|
|
.autoVTSwitch = TRUE,
|
|
|
|
.ShareVTs = FALSE,
|
|
|
|
.dontZap = FALSE,
|
|
|
|
+ .ZapWarning = TRUE,
|
|
|
|
.dontZoom = FALSE,
|
|
|
|
.notrapSignals = FALSE,
|
2018-05-19 20:13:03 +02:00
|
|
|
.currentScreen = NULL,
|
2019-09-18 14:48:07 +02:00
|
|
|
Index: xorg-server-1.20.5/hw/xfree86/common/xf86Privstr.h
|
2012-04-20 11:32:05 +02:00
|
|
|
===================================================================
|
2019-09-18 14:48:07 +02:00
|
|
|
--- xorg-server-1.20.5.orig/hw/xfree86/common/xf86Privstr.h
|
|
|
|
+++ xorg-server-1.20.5/hw/xfree86/common/xf86Privstr.h
|
|
|
|
@@ -62,6 +62,7 @@ typedef struct {
|
2012-04-20 11:32:05 +02:00
|
|
|
Bool autoVTSwitch;
|
|
|
|
Bool ShareVTs;
|
|
|
|
Bool dontZap;
|
|
|
|
+ Bool ZapWarning;
|
|
|
|
Bool dontZoom;
|
|
|
|
Bool notrapSignals; /* don't exit cleanly - die at fault */
|
2018-05-19 20:13:03 +02:00
|
|
|
|