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.c178
1 files changed, 178 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..3a27e0da0
--- /dev/null
+++ b/nx-X11/programs/Xserver/hw/nxagent/Options.c
@@ -0,0 +1,178 @@
+/**************************************************************************/
+/* */
+/* Copyright (c) 2001, 2007 NoMachine, http://www.nomachine.com/. */
+/* */
+/* NXAGENT, NX protocol compression and NX extensions to this software */
+/* are copyright of NoMachine. Redistribution and use of the present */
+/* software is allowed according to terms specified in the file LICENSE */
+/* which comes in the source distribution. */
+/* */
+/* Check http://www.nomachine.com/licensing.html for applicability. */
+/* */
+/* NX and NoMachine are trademarks of NoMachine S.r.l. */
+/* */
+/* All rights reserved. */
+/* */
+/**************************************************************************/
+
+#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;
+
+/*
+ * 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.X = 0;
+ nxagentOptions.Y = 0;
+ nxagentOptions.Width = 0;
+ nxagentOptions.Height = 0;
+ nxagentOptions.BorderWidth = 0;
+
+ 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.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;
+}
+
+/*
+ * 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;
+}
+
+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;
+}