/**************************************************************************/ /* */ /* Copyright (c) 2001, 2011 NoMachine (http://www.nomachine.com) */ /* Copyright (c) 2008-2014 Oleksandr Shneyder */ /* Copyright (c) 2011-2016 Mike Gabriel */ /* Copyright (c) 2014-2016 Mihai Moldovan */ /* Copyright (c) 2014-2016 Ulrich Sibiller */ /* 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 #include #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(void) { nxagentOptions.LinkType = UNDEFINED; nxagentOptions.Desktop = True; nxagentOptions.Persistent = True; nxagentOptions.Rootless = False; nxagentOptions.Shadow = False; nxagentOptions.Fullscreen = False; nxagentOptions.AllScreens = False; 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 = False; nxagentOptions.BackingStore = BackingStoreUndefined; nxagentOptions.Clipboard = ClipboardBoth; nxagentOptions.SharedMemory = True; nxagentOptions.SharedPixmaps = True; nxagentOptions.DeviceControl = False; nxagentOptions.DeviceControlUserDefined = False; nxagentOptions.ResetKeyboardAtResume = True; nxagentOptions.Reset = False; nxagentOptions.RootX = 0; nxagentOptions.RootY = 0; nxagentOptions.RootWidth = 0; nxagentOptions.RootHeight = 0; nxagentOptions.ViewportXSpan = 0; nxagentOptions.ViewportYSpan = 0; nxagentOptions.DesktopResize = True; 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 = True; nxagentOptions.Binder = False; nxagentOptions.BinderOptions = NULL; nxagentOptions.Xdmcp = False; nxagentOptions.DisplayBuffer = UNDEFINED; nxagentOptions.DisplayCoalescence = 0; nxagentOptions.Composite = False; nxagentOptions.IgnoreVisibility = False; nxagentOptions.ViewOnly = False; nxagentOptions.Adaptive = False; nxagentOptions.Streaming = False; nxagentOptions.DeferLevel = UNDEFINED; nxagentOptions.DeferTimeout = 200; nxagentOptions.TileWidth = UNDEFINED; nxagentOptions.TileHeight = UNDEFINED; nxagentOptions.Menu = True; nxagentOptions.MagicPixel = True; nxagentOptions.ClientOs = UNDEFINED; nxagentOptions.InhibitXkb = True; nxagentOptions.CopyBufferSize = COPY_UNLIMITED; nxagentOptions.ImageRateLimit = 0; nxagentOptions.Xinerama = True; nxagentOptions.SleepTimeMillis = DEFAULT_SLEEP_TIME_MILLIS; nxagentOptions.ReconnectTolerance = DEFAULT_TOLERANCE; nxagentOptions.KeycodeConversion = DEFAULT_KEYCODE_CONVERSION; nxagentOptions.AutoGrab = False; } /* * 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 reconnecting. */ void nxagentResetOptions(void) { if (nxagentLockDeferLevel == 0) { nxagentOptions.DeferLevel = UNDEFINED; } nxagentOptions.DeferTimeout = 200; nxagentOptions.TileWidth = UNDEFINED; nxagentOptions.TileHeight = UNDEFINED; nxagentOptions.WMBorderWidth = -1; nxagentOptions.WMTitleHeight = -1; nxagentOptions.KeycodeConversion = DEFAULT_KEYCODE_CONVERSION; } void nxagentSaveOptions(void) { memcpy(&nxagentOptionsBackup, &nxagentOptions, sizeof(AgentOptionsRec)); } void nxagentRestoreOptions(void) { nxagentOptions.DeferLevel = nxagentOptionsBackup.DeferLevel; nxagentOptions.DeferTimeout = nxagentOptionsBackup.DeferTimeout; nxagentOptions.TileWidth = nxagentOptionsBackup.TileWidth; nxagentOptions.TileHeight = nxagentOptionsBackup.TileHeight; }