diff options
author | Mike Gabriel <mike.gabriel@das-netzwerkteam.de> | 2015-10-07 20:51:12 +0200 |
---|---|---|
committer | Mike Gabriel <mike.gabriel@das-netzwerkteam.de> | 2015-12-30 00:05:53 +0100 |
commit | 0297567cd501b6fc012c41ff4a1ae27304ff6a10 (patch) | |
tree | 5beb83ca372493fa7cde5d0b7b581c27a53726eb | |
parent | f40792c436c2e0678f46478002830367b683f20c (diff) | |
download | nx-libs-0297567cd501b6fc012c41ff4a1ae27304ff6a10.tar.gz nx-libs-0297567cd501b6fc012c41ff4a1ae27304ff6a10.tar.bz2 nx-libs-0297567cd501b6fc012c41ff4a1ae27304ff6a10.zip |
Provide support for re-enabling Xinerama on session resumptions.
By design, when resuming a session, Xinerama can only be re-enabled
by NX option parsing.
Thus, this change introduces a "xinerama" NX option that can
be loaded via an options file into NX agent when resuming
a session. The new xinerame NX session option also allows
switching on Xinerama at session startup via an option file.
When implementing the new NX Xinerama support into clients (like
TheQVD, X2Go Client, etc., this new xinerama NX option should be
used for activating Xinerama in the NX / QVD / X2Go session.
-rw-r--r-- | nx-X11/programs/Xserver/hw/nxagent/Args.c | 31 | ||||
-rw-r--r-- | nx-X11/programs/Xserver/hw/nxagent/Reconnect.c | 2 | ||||
-rw-r--r-- | nx-X11/programs/Xserver/hw/nxagent/Screen.c | 6 | ||||
-rw-r--r-- | nxcomp/Misc.cpp | 1 |
4 files changed, 37 insertions, 3 deletions
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Args.c b/nx-X11/programs/Xserver/hw/nxagent/Args.c index 5c5a1e8f8..309f08d0e 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Args.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Args.c @@ -42,6 +42,7 @@ is" without express or implied warranty. #include "screenint.h" #include "input.h" #include "misc.h" +#include "globals.h" #include "scrnintstr.h" #include "dixstruct.h" #include "servermd.h" @@ -1202,6 +1203,36 @@ static void nxagentParseOptions(char *name, char *value) return; } + else if (!strcmp(name, "xinerama")) + { +#ifdef PANORAMIX + if (!PanoramiXExtensionDisabledHack) + { + if (!strcmp(value, "1")) + { + nxagentChangeOption(Xinerama, 1); + } + else if (!strcmp(value, "0")) + { + nxagentChangeOption(Xinerama, 0); + } + else + { + fprintf(stderr, "Warning: Ignoring bad value '%s' for option 'xinerama'.\n", + validateString(value)); + } + } + else + { + nxagentChangeOption(Xinerama, 0); + fprintf(stderr, "Warning: Xinerama extension has been disabled via -disablexineramaextension cmdline switch.\n"); + } +#else + nxagentChangeOption(Xinerama, 0); + fprintf(stderr, "Warning: No Xinerama support compiled into nxagent.\n") +#endif /* of PANORAMIX */ + return; + } else if (!strcmp(name, "resize")) { if (nxagentOption(DesktopResize) == 0 || strcmp(value, "0") == 0) diff --git a/nx-X11/programs/Xserver/hw/nxagent/Reconnect.c b/nx-X11/programs/Xserver/hw/nxagent/Reconnect.c index b26fa9cfe..660d30863 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Reconnect.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Reconnect.c @@ -624,7 +624,7 @@ Bool nxagentReconnectSession(void) nxagentRedirectDefaultWindows(); - if (nxagentResizeDesktopAtStartup || nxagentOption(Rootless) == True) + if (nxagentResizeDesktopAtStartup || nxagentOption(Rootless) == True || nxagentOption(Xinerama) == True) { nxagentChangeScreenConfig(0, nxagentOption(RootWidth), nxagentOption(RootHeight), 0, 0); diff --git a/nx-X11/programs/Xserver/hw/nxagent/Screen.c b/nx-X11/programs/Xserver/hw/nxagent/Screen.c index 087f3f41a..17e749a6b 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Screen.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Screen.c @@ -1113,8 +1113,10 @@ Bool nxagentOpenScreen(int index, ScreenPtr pScreen, nxagentChangeOption(ViewportXSpan, nxagentOption(Width) - nxagentOption(RootWidth)); nxagentChangeOption(ViewportYSpan, nxagentOption(Height) - nxagentOption(RootHeight)); - /* store the user's preference provided via cmdline */ - nxagentOption(Xinerama) = !noPanoramiXExtension; + /* PanoramiXExtension enabled via cmdline, turn on Xinerama in nxagent + */ + if( (!noPanoramiXExtension) && (!PanoramiXExtensionDisabledHack) ) + nxagentOption(Xinerama) = True; if (nxagentReconnectTrap == 0) { diff --git a/nxcomp/Misc.cpp b/nxcomp/Misc.cpp index 3297d8ee8..ee73f19d8 100644 --- a/nxcomp/Misc.cpp +++ b/nxcomp/Misc.cpp @@ -306,6 +306,7 @@ clipboard=n\n\ streaming=n\n\ backingstore=n\n\ composite=n\n\ +xinerama=n\n\ shmem=b\n\ shpix=b\n\ kbtype=s\n\ |