aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/programs/Xserver/hw/nxagent/Args.c
diff options
context:
space:
mode:
authorMike Gabriel <mike.gabriel@das-netzwerkteam.de>2016-06-10 01:05:58 +0200
committerMike Gabriel <mike.gabriel@das-netzwerkteam.de>2016-06-18 19:45:04 +0200
commit4b4a6a35c47590bd4ab1c16d9bf1398bb51624b2 (patch)
tree8b2a43fffc3d0c4498b804f32c8600baad629915 /nx-X11/programs/Xserver/hw/nxagent/Args.c
parent3f8aa38feb327688ef62836613d160e80f868575 (diff)
downloadnx-libs-4b4a6a35c47590bd4ab1c16d9bf1398bb51624b2.tar.gz
nx-libs-4b4a6a35c47590bd4ab1c16d9bf1398bb51624b2.tar.bz2
nx-libs-4b4a6a35c47590bd4ab1c16d9bf1398bb51624b2.zip
Properly enable/disable Xinerama support in nxagent via cmdline options provider in Xserver/os/utils.c.
* Xinerama defaults to enabled, using RRXineramaExtension (i.e. cmdline option: +rrxinerama). * Cmdline option -rrxinerama disables Xinerama support entirely. * Cmdline option +xinerama switches from RRXineramaExtension to PanoramiXExtension. * Cmdline option -xinerama is actually non-functional (i.e. the default). * If the nx/nx option "xinerama" is handed over to nxagent, then Xinerama is only switched on if that given option enables it (value: 1) _and_ if either of the Xinerama extensions (PanoramiX or RRXinerama) has been initialized (via cmdline options above). Fixes ArcticaProject/nx-libs#117. Fixes ArcticaProject/nx-libs#134 (makes flawed PR#134 obsolete).
Diffstat (limited to 'nx-X11/programs/Xserver/hw/nxagent/Args.c')
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Args.c62
1 files changed, 41 insertions, 21 deletions
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Args.c b/nx-X11/programs/Xserver/hw/nxagent/Args.c
index 2590dd6c3..6e6d61772 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Args.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Args.c
@@ -86,6 +86,18 @@ is" without express or implied warranty.
#endif
+#ifdef PANORAMIX
+ #define PANORAMIX_DISABLED_COND (noPanoramiXExtension || PanoramiXExtensionDisabledHack)
+#else
+ #define PANORAMIX_DISABLED_COND TRUE
+#endif
+
+#ifdef RANDR
+ #define RRXINERAMA_DISABLED_COND noRRXineramaExtension
+#else
+ #define RRXINERAMA_DISABLED_COND TRUE
+#endif
+
/*
* Define this to force the dispatcher
* to always use the dumb scheduler.
@@ -103,6 +115,8 @@ extern int _XGetBitsPerPixel(Display *dpy, int depth);
extern char dispatchExceptionAtReset;
+extern const char *__progname;
+
char nxagentDisplayName[1024];
Bool nxagentSynchronize = False;
@@ -1047,6 +1061,13 @@ int ddxProcessArgument(int argc, char *argv[], int i)
return 0;
}
+ /*
+ * Disable Xinerama (i.e. fake it in Screen.c) if somehow Xinerama support
+ * has been disabled on the cmdline.
+ */
+ if (PANORAMIX_DISABLED_COND && RRXINERAMA_DISABLED_COND)
+ nxagentChangeOption(Xinerama, 0);
+
return 0;
}
@@ -1205,33 +1226,32 @@ static void nxagentParseOptions(char *name, char *value)
}
else if (!strcmp(name, "xinerama"))
{
-#ifdef PANORAMIX
- if (!PanoramiXExtensionDisabledHack)
+#if !defined(PANORAMIX) && !defined(RANDR)
+ nxagentChangeOption(Xinerama, 0);
+ fprintf(stderr, "Warning: No Xinerama support compiled into %s.\n", __progname);
+ return;
+#else
+ if (PANORAMIX_DISABLED_COND && RRXINERAMA_DISABLED_COND)
+ nxagentChangeOption(Xinerama, 0);
+ fprintf(stderr, "Warning: XINERAMA extension has been disabled on %s startup.\n", __progname);
+ return;
+
+ if (!strcmp(value, "1"))
{
- 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));
- }
+ nxagentChangeOption(Xinerama, 1);
+ return;
}
- else
+ else if (!strcmp(value, "0"))
{
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 */
+ else
+ {
+ fprintf(stderr, "Warning: Ignoring bad value '%s' for option 'xinerama'.\n",
+ validateString(value));
+ }
return;
+#endif
}
else if (!strcmp(name, "resize"))
{