From 8d00456ad3e7b7a49d8fadb269334589e3704758 Mon Sep 17 00:00:00 2001 From: Mike Gabriel Date: Wed, 21 Feb 2018 10:39:46 +0100 Subject: nxagent: Add support for optionally enabling/disabling the magic pixel feature. Fixes ArcticaProject/nx-libs#657. --- nx-X11/programs/Xserver/hw/nxagent/Args.c | 18 ++++++++++++++++++ nx-X11/programs/Xserver/hw/nxagent/Events.c | 2 +- nx-X11/programs/Xserver/hw/nxagent/Options.c | 2 ++ nx-X11/programs/Xserver/hw/nxagent/Options.h | 6 ++++++ nx-X11/programs/Xserver/hw/nxagent/man/nxagent.1 | 7 +++++++ 5 files changed, 34 insertions(+), 1 deletion(-) (limited to 'nx-X11') diff --git a/nx-X11/programs/Xserver/hw/nxagent/Args.c b/nx-X11/programs/Xserver/hw/nxagent/Args.c index 14f696e2d..604b33187 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Args.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Args.c @@ -676,6 +676,10 @@ int ddxProcessArgument(int argc, char *argv[], int i) return 1; } + if (!strcmp(argv[i], "-nomagicpixel")) { + nxagentChangeOption(MagicPixel, 0); + return 1; + } if (!strcmp(argv[i], "-noonce")) { @@ -1246,6 +1250,19 @@ static void nxagentParseOptions(char *name, char *value) return; } + else if (!strcmp(name, "magicpixel")) + { + if (!strcmp(value, "0")) + { + nxagentChangeOption(MagicPixel, 0); + } + else + { + nxagentChangeOption(MagicPixel, 1); + } + + return; + } else if (strcmp(name, "shadowuid") == 0) { nxagentShadowUid = atoi(value); @@ -2075,6 +2092,7 @@ void ddxUseMsg() ErrorF("-forcenx force use of NX protocol messages assuming communication through nxproxy\n"); ErrorF("-timeout int auto-disconnect timeout in seconds (minimum allowed: 60)\n"); ErrorF("-norootlessexit don't exit if there are no clients in rootless mode\n"); + ErrorF("-nomagicpixel disable nxagent's magic pixel\n"); #ifdef RENDER ErrorF("-norender disable the use of the render extension\n"); ErrorF("-nocomposite disable the use of the composite extension\n"); diff --git a/nx-X11/programs/Xserver/hw/nxagent/Events.c b/nx-X11/programs/Xserver/hw/nxagent/Events.c index 315b6572e..8681ab270 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Events.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Events.c @@ -1218,7 +1218,7 @@ FIXME: Don't enqueue the KeyRelease event if the key was if (nxagentOption(Fullscreen)) { - if (nxagentMagicPixelZone(X.xbutton.x, X.xbutton.y)) + if ( (nxagentOption(MagicPixel) == 1) && (nxagentMagicPixelZone(X.xbutton.x, X.xbutton.y)) ) { pScreen = nxagentScreen(X.xbutton.window); diff --git a/nx-X11/programs/Xserver/hw/nxagent/Options.c b/nx-X11/programs/Xserver/hw/nxagent/Options.c index 3464fdb10..dba54a6c6 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Options.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Options.c @@ -155,6 +155,8 @@ void nxagentInitOptions() nxagentOptions.Menu = 1; + nxagentOptions.MagicPixel = 1; + nxagentOptions.ClientOs = UNDEFINED; nxagentOptions.InhibitXkb = 1; diff --git a/nx-X11/programs/Xserver/hw/nxagent/Options.h b/nx-X11/programs/Xserver/hw/nxagent/Options.h index 95b0642e1..a4e2c5099 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Options.h +++ b/nx-X11/programs/Xserver/hw/nxagent/Options.h @@ -385,6 +385,12 @@ typedef struct _AgentOptions int Menu; + /* + * Enabling/disabling the magic pixel. + */ + + int MagicPixel; + /* * Specify the Operative System of the client. */ diff --git a/nx-X11/programs/Xserver/hw/nxagent/man/nxagent.1 b/nx-X11/programs/Xserver/hw/nxagent/man/nxagent.1 index 124f08743..1c0fe5fa4 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/man/nxagent.1 +++ b/nx-X11/programs/Xserver/hw/nxagent/man/nxagent.1 @@ -399,6 +399,10 @@ auto-disconnect timeout in seconds (minimum allowed: 60) .B \-norootlessexit don't exit if there are no clients in rootless mode .TP 8 +.B \-nomagicpixel +disable magic pixel support at session startup, can be re-enabled via nx/nx option on session +resumption +.TP 8 .B \-norender disable the use of the render extension .TP 8 @@ -599,6 +603,9 @@ overrides the command line default. support pulldown menu in \fBnxagent\fR session (only available on proxy <-> agent remote sessions) .TP 8 +.B magicpixel= +enable/disable magic pixel support in fullscreen mode (default: 1, enabled) +.TP 8 .B sleep= delay X server operations when suspended (provided in msec), set to \fI0\fR to keep \fBnxagent\fR session fully functional when suspended -- cgit v1.2.3