aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Gabriel <mike.gabriel@das-netzwerkteam.de>2015-10-07 20:51:12 +0200
committerMike Gabriel <mike.gabriel@das-netzwerkteam.de>2015-12-30 00:05:53 +0100
commit0297567cd501b6fc012c41ff4a1ae27304ff6a10 (patch)
tree5beb83ca372493fa7cde5d0b7b581c27a53726eb
parentf40792c436c2e0678f46478002830367b683f20c (diff)
downloadnx-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.c31
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Reconnect.c2
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Screen.c6
-rw-r--r--nxcomp/Misc.cpp1
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\