Commit 0297567c authored by Mike Gabriel's avatar Mike Gabriel

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.
parent f40792c4
......@@ -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)
......
......@@ -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);
......
......@@ -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)
{
......
......@@ -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\
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment