aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/programs/Xserver/hw/nxagent/Options.c
diff options
context:
space:
mode:
Diffstat (limited to 'nx-X11/programs/Xserver/hw/nxagent/Options.c')
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Options.c210
1 files changed, 210 insertions, 0 deletions
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Options.c b/nx-X11/programs/Xserver/hw/nxagent/Options.c
new file mode 100644
index 000000000..978f3ab95
--- /dev/null
+++ b/nx-X11/programs/Xserver/hw/nxagent/Options.c
@@ -0,0 +1,210 @@
+/**************************************************************************/
+/* */
+/* Copyright (c) 2001, 2011 NoMachine (http://www.nomachine.com) */
+/* Copyright (c) 2008-2014 Oleksandr Shneyder <o.shneyder@phoca-gmbh.de> */
+/* Copyright (c) 2011-2016 Mike Gabriel <mike.gabriel@das-netzwerkteam.de>*/
+/* Copyright (c) 2014-2016 Mihai Moldovan <ionic@ionic.de> */
+/* Copyright (c) 2014-2016 Ulrich Sibiller <uli42@gmx.de> */
+/* Copyright (c) 2015-2016 Qindel Group (http://www.qindel.com) */
+/* */
+/* NXAGENT, NX protocol compression and NX extensions to this software */
+/* are copyright of the aforementioned persons and companies. */
+/* */
+/* Redistribution and use of the present software is allowed according */
+/* to terms specified in the file LICENSE which comes in the source */
+/* distribution. */
+/* */
+/* All rights reserved. */
+/* */
+/* NOTE: This software has received contributions from various other */
+/* contributors, only the core maintainers and supporters are listed as */
+/* copyright holders. Please contact us, if you feel you should be listed */
+/* as copyright holder, as well. */
+/* */
+/**************************************************************************/
+
+#include <stdio.h>
+#include <string.h>
+
+#include "X.h"
+
+#include "Agent.h"
+#include "Args.h"
+#include "Options.h"
+#include "Utils.h"
+
+/*
+ * Instead of having a single options repository
+ * data could be attached to the display or the
+ * screen. The macro nxagentOption() should make
+ * the transition simple.
+ */
+
+AgentOptionsRec nxagentOptions;
+
+AgentOptionsRec nxagentOptionsBackup;
+
+AgentOptionsPtr nxagentOptionsPtr = &nxagentOptions;
+
+/*
+ * If this is set, print the geometry in the block handler.
+ */
+
+unsigned int nxagentPrintGeometryFlags = 0;
+/*
+ * This must be called at startup to initialize
+ * the options repository to the default values.
+ */
+
+void nxagentInitOptions()
+{
+ nxagentOptions.LinkType = UNDEFINED;
+
+ nxagentOptions.Desktop = UNDEFINED;
+ nxagentOptions.Persistent = 1;
+ nxagentOptions.Rootless = UNDEFINED;
+ nxagentOptions.Fullscreen = UNDEFINED;
+ nxagentOptions.NoRootlessExit = False;
+
+ nxagentOptions.X = 0;
+ nxagentOptions.Y = 0;
+ nxagentOptions.Width = 0;
+ nxagentOptions.Height = 0;
+ nxagentOptions.BorderWidth = 0;
+
+ nxagentOptions.WMBorderWidth = -1;
+ nxagentOptions.WMTitleHeight = -1;
+
+ nxagentOptions.SavedX = 0;
+ nxagentOptions.SavedY = 0;
+ nxagentOptions.SavedWidth = 0;
+ nxagentOptions.SavedHeight = 0;
+
+ nxagentOptions.Timeout = 0;
+
+ nxagentOptions.Nested = 0;
+
+ nxagentOptions.BackingStore = BackingStoreUndefined;
+
+ nxagentOptions.Clipboard = ClipboardBoth;
+
+ nxagentOptions.SharedMemory = 1;
+
+ nxagentOptions.SharedPixmaps = 1;
+
+ nxagentOptions.DeviceControl = 0;
+
+ nxagentOptions.DeviceControlUserDefined = 0;
+
+ nxagentOptions.ResetKeyboardAtResume = 1;
+
+ nxagentOptions.Reset = 0;
+
+ nxagentOptions.RootX = 0;
+ nxagentOptions.RootY = 0;
+ nxagentOptions.RootWidth = 0;
+ nxagentOptions.RootHeight = 0;
+
+ nxagentOptions.ViewportXSpan = 0;
+ nxagentOptions.ViewportYSpan = 0;
+
+ #ifndef __CYGWIN32__
+
+ nxagentOptions.DesktopResize = 1;
+
+ #else
+
+ nxagentOptions.DesktopResize = 0;
+
+ #endif
+
+ nxagentOptions.Ratio = DONT_SCALE;
+ nxagentOptions.XRatio = DONT_SCALE;
+ nxagentOptions.YRatio = DONT_SCALE;
+
+ nxagentOptions.FloatRatio = 1.0;
+ nxagentOptions.FloatXRatio = 1.0;
+ nxagentOptions.FloatYRatio = 1.0;
+
+ nxagentOptions.UseDamage = 1;
+
+ nxagentOptions.Binder = UNDEFINED;
+ nxagentOptions.BinderOptions = NULL;
+
+ nxagentOptions.Xdmcp = 0;
+
+ nxagentOptions.DisplayLatency = 0;
+ nxagentOptions.DisplayBuffer = UNDEFINED;
+ nxagentOptions.DisplayCoalescence = 0;
+
+ nxagentOptions.Composite = 1;
+
+ nxagentOptions.IgnoreVisibility = 0;
+
+ nxagentOptions.ViewOnly = 0;
+
+ nxagentOptions.Adaptive = 0;
+
+ nxagentOptions.Streaming = 0;
+
+ nxagentOptions.DeferLevel = UNDEFINED;
+ nxagentOptions.DeferTimeout = 200;
+
+ nxagentOptions.TileWidth = UNDEFINED;
+ nxagentOptions.TileHeight = UNDEFINED;
+
+ nxagentOptions.Menu = 1;
+
+ nxagentOptions.ClientOs = UNDEFINED;
+
+ nxagentOptions.InhibitXkb = 1;
+
+ nxagentOptions.CopyBufferSize = COPY_UNLIMITED;
+
+ nxagentOptions.ImageRateLimit = 0;
+
+ nxagentOptions.Xinerama = 1;
+
+ nxagentOptions.SleepTime = DEFAULT_SLEEP_TIME;
+
+ nxagentOptions.ReconnectTolerance = DEFAULT_TOLERANCE;
+}
+
+/*
+ * This is called at session reconnection
+ * to reset some options to their default
+ * values. The reason to avoid calling the
+ * nxagentInitOptions() is that not all the
+ * options can change value when reconnec-
+ * ting.
+ */
+
+void nxagentResetOptions()
+{
+ if (nxagentLockDeferLevel == 0)
+ {
+ nxagentOptions.DeferLevel = UNDEFINED;
+ }
+
+ nxagentOptions.DeferTimeout = 200;
+
+ nxagentOptions.TileWidth = UNDEFINED;
+ nxagentOptions.TileHeight = UNDEFINED;
+
+ nxagentOptions.WMBorderWidth = -1;
+ nxagentOptions.WMTitleHeight = -1;
+}
+
+void nxagentSaveOptions()
+{
+ memcpy(&nxagentOptionsBackup, &nxagentOptions, sizeof(AgentOptionsRec));
+}
+
+void nxagentRestoreOptions()
+{
+ nxagentOptions.DeferLevel = nxagentOptionsBackup.DeferLevel;
+ nxagentOptions.DeferTimeout = nxagentOptionsBackup.DeferTimeout;
+
+ nxagentOptions.TileWidth = nxagentOptionsBackup.TileWidth;
+ nxagentOptions.TileHeight = nxagentOptionsBackup.TileHeight;
+}