ChangeLog:

nxagent-1.5.0-87

- Corrected the enable-disable lazy encoding dialog in order to show
  the correct keystroke Ctrl-Alt-E.

nxagent-1.5.0-86

- Reset agent position at reconnection when the new size of display
  doesn't match the old size and fullscreen is on.

- Inserted a comment about handling of expose events.

nxagent-1.5.0-85

- If fullscreen and resize options are true when reconnecting, geo-
  metry option is ignored and the root window is resized to the en-
  tire screen.

- Read the position of the main window at startup from geometry op-
  tions.

nxagent-1.5.0-84

- Changed the keystroke Ctrl-Alt-L to toggle the image encoding on
  and off to the new combination Ctrl-Alt-E.

- Enabled the keystroke Ctrl-Alt-M to minimize the root window also
  in window mode.

nxagent-1.5.0-83

- Replaced the call to XIfEvent() with something less efficient but
  safer, based on XCheckIfEvent(). The previous version might never
  return if an I/O Error was encountered waiting for the event. The 
  new version fails gracefully, and returns after having restarted
  the client.

nxagent-1.5.0-82

- Removed some debug logs.

nxagent-1.5.0-81

- Forced window mode if X server geometry has changed at reconnection.

nxagent-1.5.0-80

- Reset resize desktop at startup flag before reconnection.

nxagent-1.5.0-79

- Removed race condition in the parsing order of the options parame-
  ter, now the geometry parameters are set in screen initialization.

nxagent-1.5.0-78

- Disabled auto-resize and viewport mode dialog in case of rootless
  session.

- Removed no more used -backingstore option from usage messages.

- Modified -bs command line option: now the default value "when_re-
  quested" is always set.

- Fixed wrong size of root window when switching from full screen to
  window mode and viewport navigation mode is enabled.

- Added option that solved a minimize bug in LeaveNotify when the
  root window is in full screen and the user is using viewport navi-
  gation mode.

- Forwarded HUP signal to NX transport, when session state is up and
  running.

nxagent-1.5.0-77

- Do PutImage in every case. Don't check if the drawable is synchro-
  nized.

- Do CopyArea, CopyPlane, Composite in every case, don't check whether
  the source is dirty.

nxagent-1.5.0-76

- Terminate rootless session 15 seconds after the last mapped window
  has been destroyed.

nxagent-1.5.0-75

- Ctrl-Alt-T shows suspend/terminate dialog also in rootless mode.

- Sleeps 50 ms in the block handler if the session state is down.

- In rootless mode, the focus window is changed following FocusIn
  events received from the real X server, also in the case no win-
  dow manager has been detected.

nxagent-1.5.0-74

- Changed the alerts names to comply with nxcomp-1.5.0-57.

- Moved loading of placeholder from startup to the first time it is
  needed.

- Corrected a typo in the CHANGELOG.

nxagent-1.5.0-73

- Ignored put image on not synchronized drawables, when the image
  doesn't cover the entire surface.

- Added parsing of render parameter in option file.

- Ignored I/O Error when session is suspended.

- Managed I/O Error at reconnection.

nxagent-1.5.0-72

- Fixed offset of the default window at reconnection and after switch-
  ing from fullscreen in window mode.

- Suppressed the -lazy command line option.

- Made some slightly changes in GCOps.c and Pixmap.c in order to com-
  ply with the new 'Lazy' option.

- Avoided to do CopyArea, CopyPlane and Composite operations when the
  source drawable is dirty.

- Rootless disconnect dialog has changed. This dialog is launched
  after some time the last window has been closed.

- Ignored geometry changes at reconnection if resize at startup is
  not set.

- Removed reset of the offset of the root window in viewport mode at
  reconnection.

- Fixed some refreshes problems in viewport mode and in desktop resize
  mode.

- Fixed a memory leak in nxagentWindowExposures().

- Added predicate to nxagentDispatchEvents.

- Implemented framework in order to wait for a free resource entry,
  when calling the asynchronous Collect* functions.

nxagent-1.5.0-71

- Added keystroke Ctrl+Alt+L switching lazy encoding option.

- Disabled viewport movement in resize mode.

- Changed agent geometry at screen resize.

- Changed agent geometry at initialization.

nxagent-1.5.0-70

- Restored the set of blocked signal after the dialog pid just laun-
  ched has been stored.

- Removed an already fixed FIXME.

- Updated the copyright message.

nxagent-1.5.0-69

- Started working at the integration of the lazy encoding functiona-
  lity. Made the agent draw the placeholder if the image is split and
  never suspend the client. There is no provision for synchronizing
  the drawables yet.

- Made the lazy encoding configurable by the new 'Lazy' option.

- Updated to include the changes in the NXStartSplit() and NXCommit-
  Split() requests.

- This version requires nxcomp-1.5.0-55 and nxcompext-1.5.0-16.

nxagent-1.5.0-68

- Fixed reconnection of iconified windows.

- Ignored the X server's scratch pixmap at reconnection.

- The desktop gets automatically resized at reconnection if the desk-
  top resize option is enabled.

- Added the resize option in nxagentProcessOptionsFile() to allow the
  user to change the geometry of both the root and the default window
  at reconnection.

- Fixed max size of the default window at startup when auto-resize
  mode is enabled or in the case of a reconnected session.

- Made some minimal changes in Atoms.c and NXdispatch.c.

nxagent-1.5.0-67

- Changed handling of expose events received from real X server. A re-
  gion is composed from expose events by checking the count field.

- Reimplemented the exposures managing. Now the GetInputFocus request
  is sent after a window has been configured or unmapped. We use a
  vector to store windows originating expose events while waiting for
  the reply to GetInputFocus.

nxagent-1.5.0-66

- Added the DisplayLatency value in the agent options. This is int-
  ended to give a hint about the latency of the current display
  connection. The value is currently used to determine if the agent
  is running across a slow link, and so it's appropriate to display
  the begin-reconnection alert.

nxagent-1.5.0-65

- Added the DesktopResize option. It controls the behaviour of the
  automatic (RandR) resize of the desktop when dragging the agent's
  window border.

- Automatic resize is again the default.

- Disabled the test logs in Events.c, GCOps.c Pixmap.c, Handlers.c,
  Reconnect.c.

- More cosmetic changes and code cleanup.

nxagent-1.5.0-64

- Rewritten the image streaming procedure to better leverage the new
  infrastructure. The start-split/end-split procedure is always init-
  iated by the agent, including when the size of the image is below
  the threshold, but the client is only suspended when the split has
  taken place in the NX transport.

nxagent-1.5.0-63

- Updated image streaming to use the new NX notification events.

- Removed the references to the NXSync() operation, not used anymore
  by the agent.

nxagent-1.5.0-62

- Fixed wrong position of the root window in case of viewport naviga-
  tion mode.

- Added a field to the client private to trace the client type.

- Tracked which clients are nxclient dialogs in order to not run the
  pulldown dialog on them.

nxagent-1.5.0-61

- Disabled server reset if not needed by XDMCP.

- Disabled persistence for indirect XDMCP session until the first gre-
  eter with the list of host has disappeared.

- Created a small data structure to contain information about integri-
  ty status and placeholder status of a drawable.

- Modified the call to nxagentRealizeOnePixmap function in order to
  avoid errors during the signal handling.

nxagent-1.5.0-60

- Added the XDMCP option. If both Rootless and XDMCP are selected the
  session will fail.

nxagent-1.5.0-59

- Limited the permission to reset the agent only to indirect XDMCP
  sessions, only one reset is allowed.

- Fixed max size of the default window when switching from fullscreen
  to window mode and auto-resize is disabled.

nxagent-1.5.0-58

- Enabled reset mechanism, in order to make XDMCP session work proper-
  ly.

- Added XSync for window manager detection, after a server reset since
  the XInternAtom already used should be cached.

- Now the pixmap status is always tested on real pixmap.

- The placeholder is drawn only once per drawable.

- Implemented nxagentUnmapWindows() in case of failed reconnection if
  the session was running in fullscreen mode and NX transport is not
  enabled.

- In nxagentPutSplitImage(), passing leftPad to XCreateImage().

- This version avoids sending the XSync() to the remote when a large
  amounts of GetInputFocus requests are issued by the same client.
  It will require more testing, especially to verify how it works on
  old Windows machines.

- Changed the NXCommitSplit() call to comply with the new interface.

- The drawable status is now propagated on graphic operations where
  the source is using the tile and stipple components on the graphic
  context and the tile or stipple are not synchronized. This affects
  the following operations:

  - PolyLines
  - PolySegment
  - PolyRectangle
  - PolyArc
  - FillPolygon
  - PolyFillRect
  - PolyFillArc
  - PolyText8
  - PolyText16

nxagent-1.5.0-57

- Removed two XSync() operations at screen initialization.

- Modified keyboard initialization in order to load the correct rules.
  This is choosen according to the vendor string of X-Window system in-
  stalled on the local machine.

- Corrected a few typos.

- When the NX transport is present, the failed reconnection dialog is
  launched on the remote X server by using the NXTransAlert() function.
  The same dialog is managed by NXTransDialog() when a session is run
  by connecting directly to the display.

- Removed the function nxagentUnmapAllWindows().

nxagent-1.5.0-56

- Set the parent window for the pulldown dialog.

nxagent-1.5.0-55

- Added an alert at the time the reconnection procedure begins. The
  alert is shown only when the NX transport is present and the link
  type is not LAN and is removed at the end of the resume operation.

- Removed the former code used for testing the alert functionality.

- Moved the function removing the splash window in Splash.c.

nxagent-1.5.0-54

- Fixed initialization of window privates storing exposed regions.
  This solves a bug affecting the refresh of windows introduced in
  nxagent-1.5.0-42.

- Added a STARTING state to nxagent. Until the agent is in this state
  the suspension mechanism is not activated.

nxagent-1.5.0-53

- Added the special keystroke Ctrl+Alt+R to enable or disable the
  auto-resize mode.

- A dialog notifies the user when the auto-resize mode is toggled.

- Added a test alert at startup, to verify that NXTransAlert() is
  working as expected.

nxagent-1.5.0-52

- Changed the code to call NXTransDialog() and NXTransExit().

nxagent-1.5.0-51

- Solved a bug that prevented the clients that had been restarted
  to be immediately selected for input.

- Removed some code that was added for debugging.

nxagent-1.5.0-50

- Fixed a memory leak in nxagentHandleExposeEvent().

- Fixed a memory leak in nxagentDestroyWindow().

- Now rootless dialog is launched only when last mapped window is
  deleted, since we have pulldown window to control the session.

- Added pulldown dialog to handle NX windows in rootless sessions.
  This dialog is activated from a "magic" slice of window under the
  top border.

- Solved a problem with sessions that might fail at reconnection.

- Now the message text of the dialog launched in case of failed re-
  connection explains the reason why the agent cannot be resumed.

- Implemented function nxagentUnmapAllWindows() to unmap all windows
  if nxagent has failed to migrate the session to the new display.

nxagent-1.5.0-49

- Fixed the problems with propagation of the drawable status.

- Modified nxagentPutSplitImage in order to set the correct height
  of the last split image.

- Code cleaning and optimization in Dialog.c.

- Solved bug that switched on the full screen state in rootless se-
  ssion.

- Changed the way dialog caption are set in rootless mode. It is set
  upon the session name or session id value.

- Corrected the function nxagentFailedReconnectinDialog().

nxagent-1.5.0-48

- Solved bug that switched on the full screen state in rootless se-
  ssion.

- Changed the way dialog caption are set in rootless mode. It is set
  upon the session name or session id value.

- Corrected the function nxagentFailedReconnectinDialog().

nxagent-1.5.0-47

- Now we call NXContinueOnDisplayError() with value 1 just after
  having opened the display. This will cause the NX Xlib to return
  in the case of an I/O error, instead of quitting the application.

- Removed the references to Context.h and the related elements.

- Reflected the changes occurred in NXlib.c regarding NXDisplayErr-
  ror() and inverted the logic compared to NXDisplayIsValid().

- Added a dialog box to notify the user when nxagent has failed to
  migrate the session to the new display. Because the main X agent
  connection is unavailable, this dialog uses the auxiliary nxcomp
  keyboard channel.

- Disabled the special keystroke Ctrl+Alt+S if any dialog is already
  running.

- Started implementing lazy synchronization of pixmaps. At the pre-
  sent moment the implementation doesn't try to perform any optimi-
  zation on the windows' regions that have to be redrawn and neither
  it checks the congestion state. After having synchronized a reaso-
  nable number of pixmaps, it simply sends to all the affected win-
  dows an expose event, mandating the repaint of the whole area.

- Removed a warning in Atoms.c.

nxagent-1.5.0-46

- Removed the longjmp() at the time an I/O error was encountered on
  the display.

nxagent-1.5.0-45

- Removed UNDEFINED status for drawables.

- Now lazy encoding affects only windows.

- Changed the block handler to call NXTransFlush() with 'if needed'.

nxagent-1.5.0-44

- After reconnection, stored exposed regions are reset and the manag-
  ing of duplicate expose events is restarted.

- Detection of window manager has been moved to the start of screen
  initialization. Screen dimensions and fullscreen option are over-
  ridden if no window manager is detected.

- Added a call to XSync() in switching fullscreen function in order
  to synchronize it with the network behaviour.

- Started adding provision for deferred writes in the NX transport.
  When the flush policy will be set accordingly, X data accumulated
  by the proxy will be written to the network under the control of
  the block and wakeup handlers.

- Fixed a bug in nxagentCopyArea(). In some cases, pixmap drawables
  was erroneusly supposed to be windows. This produced invalid reads
  when trying to access to fields of WindowRec structure.

nxagent-1.5.0-43

- In the code managing the property notify events, NXCollectProperty
  is not called if the window is not found in the tree mantained by
  the agent.

- Changed managing of screen resize in order to avoid repeated resize
  of desktop. The agent sleeps one second, then all configure event
  are read from the queue and the server connection. The desktop re-
  size is performed after the last read configure event.

- Changed nxagentImportProperty() in order to use NXCollectProperty
  instead of XGetWindowProperty. This avoids many round-trips in root-
  less mode.

- Fixed Invalid write problem in nxagentRRSetScreenConfig().

nxagent-1.5.0-42

- Modyfied test of NXSetUnpackGeometry for visuals, so now the compa-
  rison between visuals is based on their IDs and not on the memory
  area allocated for their visual structure.

- Modified exposure managing in order to avoid duplicated refreshes.
  Now only exposed regions not formerly managed yet are sent to the
  clients.

nxagent-1.5.0-41

- Modified nxagentCloseScreen() in order to free the frame buffer.

- Added information of the integrity of the windows. Now the integrity
  has became a drawable property that will expand in every drawable to
  drawable operation.

nxagent-1.5.0-40

- Splitting of images now happens only if the display is a valid con-
  nection.

- The isItTimeToYield flag is now set in the dispatcher only when the
  client has been actually suspended because of a karma, a sync, or
  a split operation.

nxagent-1.5.0-39

- Improved the handling of the PutImage request to offer provision
  for splitting images coming from orders generated by extensions.

- Fixed a problem with clients being unexpectedly restarted instead
  of waiting for the end of split.

nxagent-1.5.0-38

- Added a persistent dialog when agent is running in rootless mode.

- Modified the policy of management of nxclient dialogs.

- Fixed memory leak problem in nxagentPutSplitImage().

- Modified printing of some debug messages to avoid passing a null
  pointer to fprintf().

nxagent-1.5.0-37

- Implemented initial support for streaming the packed images in the
  handling of the MIT-SHM extension.

nxagent-1.5.0-36

- Updated the pixmap status when a placeholder is copied on the pix-
  map and when the pixmap is the target of a RENDER composite opera-
  tion.

- Solved the TR05C00900. The NX transport was forced to be set when-
  ever the display name contained the nx prefix.

- Implemented the FRSA052393. Removed the compression filters applied
  by nxagent to cursor pixmaps.

- Modified RANDR implementation to make the user able to resize the
  desktop by simply dragging the agent window's border. Screen resize
  is made after a small timeout, to give time to the last configure
  event to come from the server and avoid multiple re-configurations
  of the screen.

nxagent-1.5.0-35

- Added the current screen size to the set of sizes returned by the
  RANDR extension.

nxagent-1.5.0-34

- Corrected the placeholder xpm image.

- Added a client dialog to notify the user that nxagent is running in
  fast or in slow mode after pressing Ctrl + Alt + S.

- Modified RANDR implementation to give a set of screen sizes. Im-
  plemented functions actually performing screen resize on a RANDR
  request. Now toggling to fullscreen make the desktop cover the en-
  tire screen area.

nxagent-1.5.0-33

- Added an auto-disconnect feature similar to the one present in the
  Windows Terminal Server. The feature is modeled on the built-in X
  server's screen-saver. If the agent doesn't receive any input from
  the user in a given timeout, it will either terminate the session,
  if no client is connected to the display, or will suspend it, so
  that applications will be left running.

- The default is to disable the auto-disconnect option. The feature
  is activated by specifying a "-timeout s" parameter on the command
  line, with s being the timeout in seconds. The minimum allowed ti-
  meout is 60 seconds.

- The waitpid() call now only checks the agent's own children.

- Moved the longjmp() context declaration to a new Context.h file to
  avoid clash with redefinitions by the PNG headers.

- Few other cosmetic changes.

nxagent-1.5.0-32

- Added a check on the type of the connection to avoid cleaning the
  images when not needed.

nxagent-1.5.0-31

- Modified the placeholder frames, now it has a left top black border
  and a bottom right grey one.

- Modified fbShmPutImage() in order to set the correct size for the
  temporary pixmap.

- Modified nxagentForceExposure() and nxagentHandleExposeEvent() in
  order to clip exposed regions to the window size region of the root
  window.

- Added a new placeholder xpm image.

- Corrected few typos.

- Added function to synchronize GC tiles and stipples whenever those
  pixmaps have been realized.

nxagent-1.5.0-30

- Hidden viewport windows to clients in QueryTree request in order
  to make work XDMCP properly.

nxagent-1.5.0-29

- Removed some warnings with gcc 3.4.

- Added desktop -D switch to usage.

- Paint window background draw on framebuffer only with OpenOffice
  client.

- Now fast copy are and fast getimage are no more set according to
  the link type, their default value has been set to true.

nxagent-1.5.0-28

- Modified nxagentUpdateViewportFrame() in order to solve a refresh
  problem. Windows composing the external frame must be always on top
  to be sure that agent sends expose events for every window.

- In rootless mode agent doesn't export anymore the properties when
  disconnected from the X server.

- Changed the way agent check if the connection with the X server
  is available. Instead of using a state machine it uses the display
  flag.

- Removed the SIGTERM handling function in persistent code. We don't
  need anymore those function since agent is no more sleeping when
  disconnected.

- Implemented nxagentFreePropertyList() function in order to empty the
  list of exported properties when the rootless agent is disconnected.

- Added special keystroke Ctrl + Alt + S toggling between fast and
  slow mode for GetImage and CopyArea.

- Added missing handling of down arrow key in Keystroke.c.

- Modified nxagentForceExposure() in order to intersect exposed re-
  gions with the clip region of the root window. This prevents window
  functions from painting outside the frame buffer.

- Added the field usesFrameBuffer in struct nxagentPrivClient. Modifi-
  ed GC funtion and DoGetImage() in order to write in the frame buffer
  only if usesFrameBuffer is True.

- Removed code performing PutImage in the frame buffer, as it is use-
  less at the moment.

- Modified ProcChangeProperty() to check WM_NAME property.

- Added a piece of code in nxagentOpenScreen() checking for and remo-
  ving duplicated visuals.

- Added the Dialog.c Dialog.h files. Unified all calls to NXDialog,
  and blocked SIGCHLD before calling in order not to get the signal
  before the child pid has been stored.

- Modified the algorithm that disconnect the running session in
  order to avoid the opening of a new dialog box for closing or
  suspending the nxagent.

nxagent-1.5.0-27

- Changed the disconnect/reconnect procedure in order to have a pro-
  per default colormap vector when session is suspended, solving a
  segmentation fault in create window function.

- Corrected few errors in slow copy area mechanism.

- Modified screen initialization in order to allocate memory for the
  internal frame buffer.

- Modified some GC functions for writing to and reading from the frame
  buffer.

- Modified nxagentCreateWindow() for initializing the window in the
  frame buffer.

- Modified nxagentCreateColormap() in order to use the default visual
  if a matching one is not found.

- Modified function DoGetImage() in order to call nxagentGetImage() in
  place of nxagentGetDefaultImage() if fast option is on.

- Added nxagentCheckWindowIntegrity() function verifying the matching
  between the internal frame buffer and the X server for a window.

nxagent-1.5.0-26

- Added the property "_KDE_NET_WM_SYSTEM_TRAY_WINDOW_FOR" to the list
  of exported property in rootless mode, in order to let clients use
  the system tray.

- Modified import of WM_STATE properties in rootless mode in order
  to better handle null resources.

- Enhanced the slow CopyArea mechanism in case of one part of the
  image is out of the X server screen or out of nxagent screen.

- Changed type for variables width and height of default window
  from 'unsigned int' to 'int'.

nxagent-1.5.0-25

- Added a new signal handler for SIGCHLD. The transport is set to
  forward the signal (by means of a new NX_SIGNAL_FORWARD action).
  This allows the agent to wait for its own children.

nxagent-1.5.0-24

- Set up the RANDR extension. When querying the configuration, the
  clients get 3 sizes, the first being the current size, the second
  being the maximum size of the remote display, the third being the
  minimum size (arbitrarily set to 100x100 pixels). Screen sizes in
  millimeters are calculated based on the size reported for the real
  display.

  An example of xrandr -q output is below:

   SZ:    Pixels          Physical       Refresh
  *0    800 x 600    ( 270mm x 203mm )
   1    100 x 100    (  33mm x  33mm )
   2   1400 x 1050   ( 474mm x 356mm )
  Current rotation - normal
  Current reflection - none
  Rotations possible - normal
  Reflections possible - none

  As you can note, reflections and rotation is not possible.

- Set up the GLX extension. This provides basic support with GLX op-
  erations being translated into core X protocol primitives.

- Moved initialization of GLX and RANDR to the Extensions.c file.

- Removed the references to the unused mfb library. Modified Screen.c
  to allocate the right privates for the fb code.

- Modified the Xserver Imakefile to link nxagent with FbPostFbLibs
  and avoid including mfb/libmfb.a.

nxagent-1.5.0-23

- Fixed an incorrect buffer length calculation when retrieving a re-
  mote property.

- Added a check to avoid the use of a NULL pointer when changing the
  window cursor.

- Implemented a function to lookup the remote pixmaps.

- Changed the RENDER initialization messages.

- Corrected a few typos in symbol names.

nxagent-1.5.0-22

- Added the nxagentNeedConnectionChange() macro.

- Small optimizations in the block and wakeup handlers.

nxagent-1.5.0-21

- NXCollectGrabPointer() is called by passing nxagentDefaultClient().
  This is a macro that checks the validity of requestingClient and,
  if the pointer is NULL, defaults to NXNumberOfConnections - 1.

nxagent-1.5.0-20

- Replaced all calls to XGrabPointer with the asynchronous version
  provided by nxcompext.

- In DeactivatePointerGrab() function, mouse button state is set to
  up if the window entered by the pointer is the root window and the
  agent is in rootless mode. This change is needed because the sub-
  sequent KeyRelease event could be not received by the agent (for
  example if the focus had left the window), so that agent could be
  unable to update the mouse button state.

- In rootless mode, grabs exported to X in ActivatePointerGrab() are
  always made asynchronous. The synchronous behaviour is implemented
  by the agent, so that requiring a further synchronous grab down to
  the real X server is of little use and potentially harmful.

- Modified function XYToWindow() in order to manage the case that
  mouse pointer is located on the title bar of a top level window in
  rootless mode.

- Reflected name changes to NXImageCache variables.

nxagent-1.5.0-19

- Changed the implementation of the SIGHUP handler to forward the sig-
  nal to the proxy only when appropriate. This allows nxagent to close
  the NX connection without having to go through an I/O error on the
  display.

- Modified nxagentBreakXConnection() to check if the NX transport is
  running and thus use NXTransDestroy(). Using a simple shutdown() may
  not work, for example if NX is using the memory to memory transport.

- Added the -D option, to let users specify that agent must be run in
  desktop mode. This is presently the default.

nxagent-1.5.0-18

- Set the PropertyChange mask on input/output window in rootless mode
  in order to get the PropertyNotify events.

nxagent-1.5.0-17

- Cleaned of the reconnection routines, removed the NXAGENT_RECONNECT
  macro.

- Now the SIGHUP handler forwards the signal also to the NX transport.

- Moved the NXTransDestroy() call in the closure of the display, so
  we can avoid going through the I/O error handler.

- Removed an invalid free in the function that closes the display.

- Commented out more code in Display.c to avoid the segfault on exit.

- In rootless mode, now function XYToWindow() starts search from the
  last window originated an EnterNotify event. In this way, we can
  prevent shaded windows from getting mouse events.

- The variable to disable the smart scheduler is set at its definition
  instead of setting it in the Dispatch function. This avoids the call
  to SmartScheduleInit.

- Changed implementation of cursor visualization in rootless mode. We
  made the cursor attributes changes go transparently to the X server
  while in desktop mode we ignore any client request to change the cu-
  rsor on the X side, and we just set the cursor on the default window
  any time the pointer cross a window border.

- Expanded the range of properties exported on the remote Xserver,
  this way we export properties whose atom name starts with "WM_" and
  "_NET_".

- In Rootless mode PropertyChangeMask is added to top level window in
  order to get PropertyNotify Events.

- First implementation in rootless mode of nxagentImportProperty fun-
  ction with which after reception of PropertyNotify Events, all chan-
  ging properties coming from external clients such as Window Manager
  will be imported in agent windows.

- Changed the GetEventMask function in order to handle the InputOnly
  windows that need to be notified of property changes in rootless
  mode.

nxagent-1.5.0-16

- Implemented the -B command line switch, to let nxagent impersonate
  a "pure" proxy on the NX server side (that is without X connections
  having to be managed by the nxagent's dispatcher). Such a "nxagent
   -B" is going to replace the corresponding nxproxy process that in
  previous version of NX server was run with the same options.

- When running nxagent in 'bind' mode the X port where the the proxy
  has to listen for connection must be specified after the -B option.
  The other NX options must be passed in the DISPLAY environment.

  Example:

  nxagent -B :9

- The initialization procedure will check that the display included
  on the command line matches the one specified in the NX display
  options.

  For example, given the command:

  nxagent -B :9

  The NX options must be something like:

  DISPLAY=nx/nx,link=modem:9

  This allows users to find out which display the agent is impersona-
  ting by running a 'ps' and inspecting the command line.

- Fixed a bug preventing the proxy's ClientMessage to reach the right
  function when activating rootless mode.

- Removed unused function nomachineLogo.

- Code cleaning and soem optimizations in Rootless.c.

- We want to import all properties changed by external clients to our
  internal windows. But we must ignore property notify generated by
  our own requests. For this purpose we implement a list to record
  every change property that we dispatch. This way when processing
  a property notify we can distinguish between the notify generated
  by our request and those generated by an 'outside client'.

- In rootless mode, optimized window configurations mantaining inter-
  nal stacking order.

- Fixed focus troubles in rootless mode. Now focus window is set fol-
  lowing FocusIn events.

- In rootless mode, now fake KeyRelease events on FocusOut are sent
  only if keys having down state are modifiers. This prevents from
  sending key events to a wrong client.

- Removed unused function nxagentRootlessNextSibling in Rootless.c.

- Removed unused function nxagentRootlessStackingOrder in Rootless.c.

- Fixed compilation error if TEST log is enabled in Events.c.

- Changed Options variables to comply with NX naming rules.

- Some additional cosmetic changes.

nxagent-1.5.0-15

- Modified functions nxagentPutImage and DoGetImage for XYPixmap fo-
  rmat.

- Completed implementation of shared memory extension.

- Implemented a mechanism that prevents monitoring of SubStructure-
  Redirect ResizeRedirect and ButtonPress events by any clients simu-
  lating the presence of a window manager running inside the agent.

- Added debug functions in order to check the status of syncroniza-
  tion between the pixmaps residing on the X server and the local
  framebuffer ones.

- Changed the policy used when realizing all the pixmaps in 'lazy en-
  coding' mode so that the agent now switches to 'eager' policy.

- Fixed the routine handling the pixmaps realization: pixmaps with
  an invalid id are not processed anymore.

- Solved a bug in the routine taking care of clearing the NoMachine
  logo: the state of the background was set to 'pixel' without de-
  stroying an eventual backround pixmap.

- Solved a bug in the 'MakeRootTile' function: the value returned by
  'AddResource' was not interpreted in the correct way causing the
  function to bail out without drawing the NoMachine logo and set-
  ting the background state to Pixmap.

- Renamed PlaceHolder.c to Lazy.c and PlaceHolder.h to Lazy.h.

- Inserted a test feature that cleans the framebuffer pixmaps when
  they are created.

nxagent-1.5.0-14

- Changed some reconnection messages.

- Now the disconnect procedure is called also after an IO Error is
  received.

- The rootless agent now doesn't filter anymore keystrokes combina-
  tion related to desktop feature, like viewport navigation the full-
  screen state and minimization.

- In rootless mode, internal stacking order is updated by comparing
  the stack of top level windows mantained by the X server with the
  one mantained by the agent. A global configuration of windows is
  performed from top to bottom through the stack.

- In rootless mode, map state of  top level windows is kept up to date
  by managing map and unmap events.

- In rootless mode, enter events are managed to keep track of top
  level window position. It is very useful for managing differences
  among window manager behaviours. It should be reimplemented follo-
  wing the advice given in ICCCM 4.1.5.

- In rootless mode, requests of configure top level windows are di-
  rectly forwarded to the real X server. Internal configuration is up-
  dated when configure events are managed by the agent. In order to
  mantain internal stacking order up to date, a query tree request is
  performed on the real root window.

- Added viewport navigation by Ctrl + Alt + keypad arrows.

- Fixed wrong internal configuration of agent top level windows, while
  agent runs in rootless mode with metacity window manager.

- Fixed segmentation fault in nxagent running in rootless mode with
  OpenOffice.

- Fixed wrong internal stacking order of drop down menus of firefox
  with nxagent in rootless mode.

nxagent-1.5.0-13

- Fixed compilation problem on solaris.

- Modified the modify pixmap header function. Previously this function
  has been modified in order to solve a glyph problem, enlarging both
  the pixmaps dimensions by four. Corrected the misbehaviour that
  modify the pixmaps dimension even if the caller doesn't want to
  change it.

nxagent-1.5.0-12

- Fixed erroneous behaviour of Root Window in fullscreen mode caused by
  wrong value of XSpan and YSpan.

- Fixed wrong clients' position at Reconnection in Rootless mode,
  setting offset and WinGravity fields in XsizeHints structure.

- Fixed segmentation fault on closing windows that stay always on top.

- Moved the handling of configure notify events in the appropriate
  functions, and cleaned it.

- In rootless mode, internal stacking order of top level windows is
  mantained up to date by monitoring events from window manager top
  level windows.

- Modify the creation of screen at reconnection for detecting an
  eventual failure.

- Removed export of window properties on the X server in desktop mode.

- Changed the events mask for client's window set on the X server.
  We don't use anymore the window mask choosen by clients. In rootless
  mode for a top level window we use the default event mask and for a
  child only the exposure mask.

nxagent-1.5.0-11

- Restored default event mask at reconnection.

- Fixed abnormal behaviour in rootless mode if application windows are
  close to the lower and right bounds of the screen. This trouble was
  due to the wrong size of the agent root window.

- Fixed abnormal behaviour in rootless mode for mouse button events if
  the application window is not fully contained in the screen.

- In rootless mode, exposed region are extended a few to take in ac-
  count border width offsets caused by window managers.

- In rootless mode, grab pointer requests from clients are forwarded
  to X server. This makes application able to close their pop up win-
  dows on a pointer event.

- Fixed wrong position of the agent root window after resize of main
  window.

- Changed the size of viewport frame windows in order to avoid re-
  freshing problems.

nxagent-1.5.0-10

- Handled the Client messages on rootless mode.

- Initializations of event masks have been moved in a unique group of
  functions.

- Disabled the SmartScheduler in dispatcher as it seems to affect the
  responsiveness of nxagent.

- Modified the block and wakeup handlers. We could have left data to
  write to our display connection when entering in WaitForSomething()
  so we now flush everything before entering the select() and let the
  proxy do all the buffering.

- Fixed the wakeup handler to match the correct prototype.

- Few cosmetic changes.

- Inserted a test feature that cleans the framebuffer pixmaps when
  they are created.

- Adjusted pixmap status information in almost every gc operations.

- Removed a warning for usleep not defined on Suse 9.0.

- Adjusted pixmap status information in copy plane operations.

- Throwed fatal error if on lazy encoding the place holder pixmap
  couldn't be loaded.

- Removed the static path to xpm file in place holder initialization.

- Removed useless signal handler initialization multiple times.

- Refined validation of atoms in the atom cache code.

- Corrected few errors in atom cache initialization.

- Added a primitive atom cache that mantain the map between internal
  and external atoms.

- Window properties export began on the X server side in rootless
  mode, this way nxagent open the communication between local clients
  and the window manager on the X server.

nxagent-1.5.0-9

- Fixed wrong position of the main window in case of maximizing in
  window mode.

- Set the correct scan line lenght for XYPixmap created in PutImage
  and GetImage.

- Removed a segmentation fault in GetDefaultImage. The problem arose
  because the XYPixmap created with a data storage taking in account
  of only some planes instead of all the depths planes. Despite XPut-
  Pixel was treating the image as a complete XYPixmap of that depth.

- Removed MapWindow Error at reconnection caused by wrong value of
  IconWindow.

- Now nxagent_WM_START is intialized as soon as the Atoms are
  queried.

- Removed Geometry restrictions.

- Changed the configuration of the agent window in window mode.

- The agent window is correctly reconnected even if is resized.

nxagent-1.5.0-8

- Updated copyright notices.

- Removed a segmentation fault in font cache cleaning routine. The
  problem arise when the session is disconnected and the font struct
  are not allocated.

- Used the return mask of XParseGeometry to correctly set only the
  parameters that are involved.

- Unified the initialization of all the geometry related parameters.

- Updated the offset of the four viewport frames windows at recon-
  nection.

- Changed the way the geometry parameter is used. Now the first time a
  session is started it set the internal dimension of the agent root
  window, afterwards it only affects the dimension of the external
  window on the X server.

- Corrected splash screen offset at reconnection in fullscreen mode.

- Agent can be launched in fullscreen mode and his geometry can differ
  from the X server geometry.

- Now Width and Height options are used to store geometry of the
  default window even on fullscreen mode, and to restore the correct
  dimension when switching back to window mode from fullscreen
  we added two more options.

- Removed an error in the move viewport procedure that didn't upgrade
  the offset of the internal root window when the external root win-
  dow was maximized.

- Unified the initialization of all the geometry related parameters.

- The window manager detection procedure is now started whenever there
  is an attempt to minimize the fullscreen window or to pass to window
  mode.

- Function's optimization for detecting if WM is running.

- Switching to window mode has been disabled when the window manager
  is not running.

nxagent-1.5.0-7

- Now background pixel is not reset at reconnection.

- Now geometry is parsed also as a command line parameter.

- Fixed wrong offset of the root window after a reconnection in case
  of window mode.

- Fixed wrong geometry of the nxagent window after a reconnection
  in case of window mode.

- Fixed wrong position of the main window after a reconnection in
  case of fullscreen mode.

- Fixed refreshing windows problems in viewport navigation. Four in-
  visible windows are created around the agent window to automatica-
  lly generate exposure when the viewport frame is moved or a windows
  come out from the non visibile part of the agent window.

- We need to store the GC records in a list that will be freed in case
  the reconnection succed and will be restored in case of failure. We
  have to do this because we cannot destroy the GC records in the
  disconnect or reconnect procedure, because this way we couldn't
  recover from a disconnection or a reconnection failure.

- Rewritten the reconnection procedure. Since we cannot be sure
  that the reconnection will succed we cannot destroy the display
  structure, so we postpone the closing of the previous display
  with the creation of the new connection.

nxagent-1.5.0-6

- Adjusted usage list in order to show the R parameter for rootless
  mode.

- Added handling of display parameter to option file.
  Corrected few typos error, in option file parsing.

nxagent-1.5.0-5

- Removed error that prevented the realization of cursor in eager
  mode.

nxagent-1.5.0-4

- Fixed abnormal behaviour of termination dialog, after the keystroke
  Ctrl + Alt + T.

- Fixed segmentation fault in function parsing option file.

- Fixed various errors on eager encodings.

- Added lazy command line switch in order to switch lazy encoding
  on.

- Code cleaning.

- Implemented a signal to switch between two pixmap
  realization policies.

- Corrected an error while defining pixmaps status.

- Implemented a debug feature, consisting in a method that pushes
  the synchronized realization of all the pixmaps.

- Began implementation of place holders in replacing of images while
  they are being loaded.

- Performed some changes on spreading of pixmaps status information
  on copy area.

- Began implementation of lazy encoding.

- Changed version to 1.5.0.

nxagent-1.5.0-3

- Removed the option -nogetimage (FRSA052305).

- Code cleaning in Font.c.

- Removed NXAGENT_FONTMATCH macro.

- Removed NXAGENT_FONTCACHE macro.

- Handled the ReparentNotify event we get when in rootless mode
  ours window are reparented from the window manager. Inserted
  fake windows to take account of this new parents.

- Removed the redirection of client message in rootless mode, and
  the configuration of the WM_PROTOCOLS properties on all the top
  level windows.

- Removed parent ID from the windows private structure.

- Implemented screen operation ReparentWindow.

- Redirect all client message of type WM_PROTOCOLS and value WM_DELETE-
  _WINDOW to internal clients in rootless mode.

- Set the WM_PROTOCOLS property on all the top level window.

nxagent-1.5.0-2

- Changed viewport navigation, in order to make it works in fullscreen
  mode.

- Changed special keystrokes used for closing session and minimizing
  fullscreen window.

- Removed the message 'NX was unable to negotiate a cache
  for this session' (FRSA052296).

- Fixed a minor bug. It made metacity produced a warning when the agent
  started up.

- Code cleaning.

- Implemented dynamic handling of the main window's size in the X11
  agent (FRSA052264).

- Implemented dynamic navigation of the main window's viewport in the
  X11 agent (FRSA052265). Users can navigate the viewport while keys
  Ctrl + Alt are pressed, either by arrows keys or dragging it by the
  pointer.

- Implemented dynamic handling of the full-screen attribute in the
  X11 agent.

- First implementation of dynamic handling of the full-screen
  attribute (FRSA052263).

- Now the X connection descriptor is not closed when disconnected,
  because the transport layer still has reference to it. So we want
  it busy till we don't close the display, so we shutdown it instead
  of closing it.

- Removed replys when disconnected.

- Added the X connection number to the set of enabled input devices, at
  reconnection.

- Rewritten the disconnect/reconnect layout.

- Now in the suspend status nxagent doesn't sleep.

- Implementing toggle fullscreen special keys.

nxagent-1.5.0-1

- Opened the 1.5.0 branch.

nxagent-1.4.1-7

- Imported changes from nxagent-1.4.0-64 version.

nxagent-1.4.1-6

- Implemented a GC cache for reconnecting pixmap.

nxagent-1.4.1-5

- Handled the situation of disconnect when the pointer has been grabbed.
  We disconnect and reconnect the "grabbing" cursor and after reconnection
  we fake a button release in order to let client know that the pointer
  button has in effect been released.

- Code cleanup.

nxagent-1.4.1-4

- Imported changes from nxagent-1.4.0-63 version.

nxagent-1.4.1-3

- Imported changes from nxagent-1.4.0-62 version.

nxagent-1.4.1-2

- Cleaned code in the GC reconnection area.
  Scratchs GC are now reconnected before of the pixmaps.

nxagent-1.4.1-1

- Opened the 1.4.1 branch.

nxagent-1.4.0-65

- Cosmetic changes to the diagnostic output.

nxagent-1.4.0-64

- Changed the RENDER version advertised to X clients to be the lowest
  value between the version of RENDER of nxagent and of the remote X
  server.

- Disabled fast copy area and fast get image flags, if RENDER extension
  is not available.

- At the screen initialization, if we don't have window manager we
  grab keyboard to let nxagent get keyboard events.

- Completely rewritted the handling of KeyPress events, now we moved
  all the test for 'special' keybindings in file keystroke.c. Added the
  combination MOD1/2-CTRL-SHIFT-<TAB> for terminate/suspend the session,
  we used the combination MOD1/2 in order to let it work even on MacOS
  where Alt(MOD1) doesn't seem to be set.

- Ignored visibility notify events on the icon windows, that were
  messing up the agent visibility state.

- Changed nxagent reaction on VisibilityNotify event. It fixed the
  problem with refresh session under Mac OS X with NXDarwin.

nxagent-1.4.0-63

- Reset the congestion state at transport initialization.

nxagent-1.4.0-62

- Fixed the disconnection and reconnection of window that have attached
  an animated cursor.

nxagent-1.4.0-61

- Removed the XInputExtension initialization in order to use the more
  general mi extension initialization enabled on new mi version.

- Removed some useless test and logging info on copy area function.

nxagent-1.4.0-60

- Changed the implementation of CopyArea and CopyPlane.
  If both drawables are on framebuffer we send NoExpose to clients,
  otherwise we use the mi function HandleExposure to calculate the
  region to be exposed instead of let mi redo all the copy operation.

nxagent-1.4.0-59

- Disabled use of caching and cleaning of images, if NX transport is
  not used.

nxagent-1.4.0-58

- Added timeout on convert selection operation. If timeout has not
  expired and is there a pending operation any new request is dropped
  and the client notified, until timeout expiration.

- Corrected a bug that prevented to correctly store last convert se-
  lection request time.

nxagent-1.4.0-57

- The Xinput extension is now initialized at startup. This is of
  little use because nxagent only needs to support the core pointer
  and keyboard. Anyway this allows nxagent to get rid of the warn-
  ings printed by some X clients on recent Linux versions when the
  extension is not found.

nxagent-1.4.0-56

- Fixed value returned by ConvertSelection. It was the cause of
  possible slowndowns during KDE sessions.

nxagent-1.4.0-55

- Agent icon now is loaded from a binary-
  embedded Xpm image, if any attempt to
  load the default Xpm file from the image
  directory or from the path fails.
  Removed code used in the old logo drawing
  function.

nxagent-1.4.0-54

- Enabled code for sending to client graphics
  exposures. Redirecting the ones coming from
  remote X server, only if agent window is not
  fully visible, and calculating ourselves failure
  in CopyArea/Plane and notifying clients.
  The only drawback is that we can have double
  refresh effect if agent window is covered.

NOTE: Partially enabled MIT-SHM extension has
      been developed but has not been included
      in stable release. Included in version
      nxagent-1.4.0-53-DAR1.

nxagent-1.4.0-53

- Implemented a reliable technic to detect
  if is there any window manager running on
  the X server.

nxagent-1.4.0-52

- Fixed a bug that prevented to correctly
  notify the client of a successfull convert
  selection.

nxagent-1.4.0-51

- Removed a logging error in render initialization.

nxagent-1.4.0-50

- Now we take the ownership of the selection
  on "NX_CUT_BUFFER_SERVER" twice, in order
  to solve bug in communication with nxclient
  to let him see our main window and know that
  agent established connection with X server.

nxagent-1.4.0-49

- Fixed the colormask layout of the visual
  used to put images on the real X server when
  the drawable has an alpha channel, according
  to the endianess of the X server.

nxagent-1.4.0-48

- Moved up the render compatibility limit,
  due to the inclusion of the support for render
  cursor missing on the 0.2 version.

nxagent-1.4.0-47

- Changing artsd forwarding port from display
  + 8000 to display + 7000

- Stoping key release event if key press was
  catched before. For Alt-F2/F4 combination.

- Preserved the alpha data on drawables that
  are not used by picture but have a depth of 32.

nxagent-1.4.0-46

- Rewritten all the code regarding to the
  acceleration for the Render creation of the
  cursor, and removed the acceleration for
  the animated cursor.

nxagent-1.4.0-45

- The two RENDER operations creating cursors and
  animated cursors have been accelerated by for-
  warding the original operation to the X server.

nxagent-1.4.0-44

- Fixed a problem in the clipboard procedure.
  Now when we get a request of the selection
  from an internal client we have to, if the
  owner is on the X server, forward the request
  to X, otherwise we have to pass the request
  to our internal client.
  But for a problem in this procedure we passed,
  in some situation, the request to the internal
  client even if the owner was on the other side.

- Fixed a segmentation problem in the render
  extension by removing composite trapezoid
  operation on window.

nxagent-1.4.0-43

- Added some pointer sanity check in the discon-
  nect procedure. The problem was arising because
  we were executing the code twice when after
  began a voluntar disconnection the X connect-
  ion was broken for a network failure.

- Changed directory where nxagent gets the icon.

- Fixed missing implementation of rendering
  trapezoids.

- Fixed bug in render extension when the nxagent
  create cursor diffrent then 32 bits format.

nxagent-1.4.0-42

- Solved segmentation fault, caused by a longjmp
  on a stack context not previously saved.

nxagent-1.4.0-41

- Added an exposures of the window in a resize
  operation.

nxagent-1.4.0-40

- Implemented a timeout on the opening of the X
  display, if we get it we reject all well known
  sockets.

nxagent-1.4.0-39

- Corrected minor error on events handling.

nxagent-1.4.0-38

- Removed in the resize window code some exposure
  that generated useless traffic.

- Option geometry is no more parsed in the option
  file.

nxagent-1.4.0-37

- When session is suspended and we get TERM signal
  nxagent just exit instead of just breaking out of
  dispatch loop because we get a terminate exception.
  Cleared display variable after having closed the
  connection with the X server.

nxagent-1.4.0-36

- Refined some details in the ICC with nxclient.

nxagent-1.4.0-35

- Implemented a new method to comunicate to nxclient,
  the raise of the agent root window, taking the ownership
  of the selection "A-{MD5 of session}".
  Used the same selection to let nxclient comunicate to agent
  by changing the property on the same string, when the user
  choose by the administrator to terminate or suspend the
  session.

nxagent-1.4.0-34

- Key sequence to Suspend/Terminate session (Alt-F4).

- Key sequence to Minimize session in fullscreen mode (Alt-F2).

- Check if WM is started, for Alt-F2 sequence.

- Corrected calculation geometry of exposed region
  sent to client after reconnection.
  This solve a serious memory leak of nxagent.

- Fixed a bug in validate GC code that passed
  a wrong pointer of tile to framebuffer.

nxagent-1.4.0-33

- Changed the reconnection state machine in order
  to let agent exit if has got the TERM signal.

nxagent-1.4.0-32

- Fixed memory leak in option parser that wasted
  memory if more than one occurence of 'option'
  argument would have been parsed.

- Removed a invalid read in Keyboard initialization.
  Now kbtype option value is copyed instead that
  referenced.

- The X connection number is recorded only after
  having cheched for display being successfully opened.

nxagent-1.4.0-31

- Fixed memory leak problem caused by region not
  beeing destroyed previously.

- Fixed a memory leak in keyboard initialization.

- Fixed a bug in the function that parse the option file,
  we were reading the options in the format NAME=VALUE and
  were passing it to the argument parser in the format
  {NAME, VALUE}, without the prepending '-' in front of NAME.

nxagent-1.4.0-30

- Readded option persistent in order to let nxagent
  works with older nxserver that are still launching
  nxagent with the persistent option.

nxagent-1.4.0-29

- Corrected the message of the client dialog
  asking if user want to suspend or terminate the
  session.

- Chenged the default value for persistence of session
  in nxagent to true. Change the persistent option to
  nopersistent in order to disable it.

nxagent-1.4.0-28

- Added check on screen initialization of possible
  memory allocation failure.

- Changed the parsing policies of the option file.
  Now we are just considering kbtype and geometry
  options.

- Removed testing code that forced rootless mode
  when geometry is 100X100.

- Correctly initialized and mapped the icon window
  on fullscreen mode.

nxagent-1.4.0-27

- Fixed lost memory problem caused by second
  initialization of screen privates. Screen
  privates is already initialized by miScreenInit
  function.

nxagent-1.4.0-26

- Added option command line option. This parameter
  is used to show complete path to option file.

- Added parser of the option file.

- Now default value for fast copy area and fast
  getimage is true.

nxagent-1.4.0-25

- Done some cleanup to the initialization of the
  defaults drawables at reconnection, and removed
  a memory leak in the reopening of the Display.

nxagent-1.4.0-24

- Changed the version number, printed at startup.

- Removed a memory leak in the font reconnection stage.

nxagent-1.4.0-23

- Removed a bug that messed up the render status info
  if reconnected to a display with no render support.
  Anyway nxserver should prevent agent to trying reconn-
  ecting to such display.

nxagent-1.4.0-22

- Enhanced the reconnection error reporting function.

nxagent-1.4.0-21

- Get the ownership of selection NX_CUT_BUFFER_SERVER at reconnection
  in order to let client knows that agent windows has started
  successfully.

nxagent-1.4.0-20

- Now we draw splash logo at reconnection. And destroy it and show
  all other windows when reconnection has done all in once. We draw
  it on default window instead that on root window, and we map root
  window when reconnection has finished.

nxagent-1.4.0-19

- Removed the old Xconnection descriptor and added the new one
  to the device set, instead of resetting the entire enabled
  device set, at reconnection.

nxagent-1.4.0-18

- Reset the enabled devices set of descriptors, and properly
  add to this set the the Xconnection descriptor.

NOTE: This solves all the known solaris reconnection problems.
      (The problem appear only on solaris because on this machine
       the Xconnection descriptor is changing at reconnection.)

nxagent-1.4.0-17

- Restored the previously owned primary selection, at reconnection.
  Removed the handling of the return value of XSetSelectionOwner,
  man page doesn't specify any return value.

nxagent-1.4.0-16

- Added compatibility with older windows clients(Xserver)
  that send a WM_DELETE_WINDOW client message WM_DELETE_WINDOW
  to all top level window and so agent show more than one
  NXDialog asking for confirmation, instead of sending just the
  message to top level window that are visible and haven't set
  the override redirect option.

nxagent-1.4.0-15

- Ignored unmatched DirectColor visuals at reconnection
  on a different display not providing it.

nxagent-1.4.0-14

- Moved the render query extension in display
  initialization from screen initialization.

- Changed reconnection policy to disallow reconnect a
  session that is using render to a server not providing it.

nxagent-1.4.0-13

- Unified the screen opening function.

- Changed the reconnection requirements
  policy about geometry of X server.
  Now agent doesn't accept changes of X server
  root window size only if in fullscreen mode.

nxagent-1.4.0-12

- Improved failure notification messagges in Display and
  font code.

nxagent-1.4.0-11

- Now visuals are properly recreated, in order to reconnect
  to another X server.

- Updated render formats at reconnection.

nxagent-1.4.0-10

- Removed a serious memory leak at reconnection.

nxagent-1.4.0-9

- Added after window reconnection the redisplay of the current
  cursor. Done some general cleanup at cursor reconnection code.

nxagent-1.4.0-8

- Unified tha atom creation at reconnect.

nxagent-1.4.0-7

- Dix layer when creating a GC use a default real pixmap as
  stipple but agent need a virtual one. This can cause
  segmentation fault to agent if is there any apps that use the
  default GC stipple created by dix, without changing it.

nxagent-1.4.0-6

- Imported 1.4.0-1-DAR6 from the 1.4.0 development branch.

- Handled reconnection of window's cursor still not
  reconnected at window reconnection. (This because that cursor
  is no more a server[nxagent] resource).

- Set the last image client variable at reconnection in order
  to use the visual cache indexed for client number.
  Without this we could get a segmentation fault.

- Handled properly the reconnection of animated cursor.
  Modified the procedure of animated cursor creation
  in order to empty some unused fields.

- Removed a 4 bytes memory leak at reconnection.

- Synced new tree with nxagent-1.3.2-23.

- Finished the unify of PutImage at reconnection.
  Added a Reconnection Trap in order to let screen functions
  (like PutImage) knows that are working at reconnection time
  and can behave differently.

- Unified the code for the normal PutImage and the one's used at
  reconnection. But the code that calculate the split is still
  doubled.

nxagent-1.4.0-5

- Imported 1.3.2-23 from the 1.3.2 development branch, and dropped
  the previous 1.4.0 versions.

nxagent-1.3.2-23

- Pixel hints are set according to the display's depth. Added the
  defaults to be used on 16 bits.

nxagent-1.3.2-22

- The pixel hint on Solaris is by default 0xffffff. The value can be
  overridden by using the -hint option followed by the hex represen-
  tation of the color, as in -hint 0xaabbcc.

nxagent-1.3.2-21

- Asynchronous GetImages are now disabled. If fast GetImage mode is
  enabled, agent will always try to guess the pixel to be used for
  the solid pattern, based, at its best, on the geometry of the pro-
  vided area. This behaviour can be overridden by passing the -slow
  parameter on the command line. Slow mode is also the default when
  selecting WAN or LAN link settings.

- Code cleanup in preparation of the final release.

nxagent-1.3.2-20

- New code uses sigaction to set the SIGHUP handler in persistent
  mode. Contrarily to signal(), the sigaction call doesn't seem to
  reset the handler to SIG_DFL after the signal has been caught.
  This problem seems to be specific of Solaris.

- Client messages of type WM_PROTOCOLS are now handled even when
  a window manager is not detected at agent startup.

- Removed handling of GraphicsExposure coming fron the real server.
  Agent will still generate events in the MI. Code dealing with the
  remote events needs to be better tuned as it seems to cause some
  troubles with double refreshes.

nxagent-1.3.2-19

- Starting from this version agent doens't use NXSync and NXKarma
  messages to manage bandwidth arbitration among clients but makes
  efficient use of the congestion notification messages introduced
  in 1.3.1. A new handler has been added to manage the congestion
  state. The handler will block, if needed, waiting for the decon-
  gestion notification coming from proxy.

nxagent-1.3.2-18

- Rewritten the block handlers to check the event queue more often.
  The new code seems to greatly enhance responsiveness, especially
  on fast links.

- Now agent will handle the expose events coming from the remote
  display inside the event dispatcher.

- Created a new function collecting the expose events. Function is
  optimized to add all the expose events for the same window to a
  single region. Region is passed to the mi when the last event
  has been processed.

- Still dealing with GetImage from OpenOffice. Now we try to match
  the geometry of the incoming requests with known geometry of most
  of its graphic elements. It seem to work on Fedora.

nxagent-1.3.2-17

- Added swapping of image data in nxagentGetImage() when connecting
  to a display having a different image byte order than the agent
  server.

- Added a new nxagentImageReformat() function in GCOps.c.

- Now agent will not try to pack images having a data size smaller
  than 768 bytes. The previous threshold was set to 64. The Mandrake
  vesion of KDE seems to send lot of such small images. Compressed
  through JPEG, these images obtain a very poor ratio of nearly 1:1.

- Added a function translating and sending the GraphicsExposures
  events received from the remote server to the agent's clients.

- Renamed the functions providing the ad-hoc handling of remote X
  events.

nxagent-1.3.2-16

- Implemented a cache for the alpha channel data. With clients
  making heavy use of the alpha blending, the new cache is able to
  cut by nearly 30% the traffic incoming to proxy, offering compara-
  ble savings in CPU performance. While proxy is usually able to
  cache almost all the alpha traffic, when caching is not enabled
  (f.e. when link setting is WAN or LAN) this data is sent uncomp-
  ressed by the agent. Tests running common desktop environments
  showed that alpha channel could weight up to 2 times the corres-
  ponding data generated by the packed images.

- Fixed the compilation warnings in NXrender.c.

nxagent-1.3.2-15

- Rewritten handling of GetImage from dispatcher down to GCOps. If
  the fast GetImage mode is enabled agent will use the asynchronous
  calls provided by nxcompext to get data from the real server. Data
  collected from the last get image performed is preserved and the
  upper left pixel is used to guess a solid background.

- Added a nxagentGetBackgroundImage() function to apply a similar
  mechanism when the nxagent window isn't fully visible. Previously
  a solid white background was returned. The new handling seems to
  correctly match the window background in most cases.

- Fixed a problem passing the bytes per line value when creating a
  XYPixmap image. The previously calculated value didn't take into
  account the depth of the image.

- Now image's bytes per line, length and visual are calculated by
  using a few utility functions added to GCOps.c.

- Added declaration of the nxagentVisibility related variables to
  Window.h.

nxagent-1.3.2-14

- On Fedora xbcomp configuration fails when agent is run nested.
  This causes keyboard to ignore most AltGr keys. Strangely enough
  this behaviour has been observed only with KDE while GNOME does
  not seem to be affected. Reason is to be investigated.

- Auto-repeat mode of the agent's keyboard device is now always
  disabled. Agent will leverage auto-repeated keystrokes genera-
  ted on the real server even when propagating device configura-
  tion changes.

- The info output telling if agent will propagate the changes to
  devices' setting is now printed after having initialized the
  screen. The purpose would be to verify if agent is running in
  fullscreen mode and there is no WM on the real display. In this
  case we should forcibly propagate device configuration changes.
  Unfortunately, due to the way intern atoms are collected, this
  is not going to work on platforms where sessions are likely to
  run on an existing X server.

nxagent-1.3.2-13

- Fixed a problem with XYPixmaps being used in PutImage with the
  wrong left pad. This is a step forward in the solution of the
  corrupted masks displayed by Mozilla when showing some animated
  GIFs.

- By selecting 'fast' mode nxagent will now skip real XGetImage
  operations on windows. This becomes the default in the case of
  MODEM, ISDN and ADSL links. In theory X clients should never do
  that. In practice a few naive programs and libraries (like, sur-
  prisingly enough, a famous Linux office automation suite) do,
  mainly to compose images with the window's backgound. Why don't
  they compose content into a Pixmap?

- Improved the implementation of CompositeGlyphs. It now uses a
  single call to XRenderCompositeText instead of splitting the
  output in multiple RENDER requests.

- In previous versions file NXmiwindow.o was not linked into the
  resulting nxagent. This solves the problem of missing repaints
  in CDE and other Xt applications. Be sure you upgrade nx-X11
  to version nx-X11-1.3.2-2.

- Added a warning when the change keyboard control or the change
  pointer control functions are called.

nxagent-1.3.2-12

- Added bit-swapping of glyphs having depth 1 when agent has a
  different bitmap-bit-order than the X server.

- The KeyRelease event's timestamp calculation, accounting for
  differences in time between the local and the remote machine,
  will now use the timestamp taken from the last KeyPress. Using
  the timestamp of the last event was sometimes causing time to
  go backward with the result that server could remain grabbed.
  This solves the long-standing "mouse stop responding" problem.

- Fixed a problem handling the alpha channeled visual introduced
  while experimenting with the new server endianess layout.

nxagent-1.3.2-11

- Added the Reset option to options repository. By default agent
  will skip server reset when the last client disconnects. This is
  equivalent to passing the -noreset option to a standard XFree86
  server. To restore the original behaviour the new -reset option
  can be used on the command line.

- Moved the SharedMemory and DeviceControl options to the options
  repository.

- A basic session, still leveraging all the default facilities, can
  now be run as: nxagent -name NX -geometry 800x600+10+100 :1. The
  -fp unix/:7100 option can be added to enable access to the X font
  server.

- Fixed a "unused variable" warning in Cursor.c.

nxagent-1.3.2-10

- Rootless mode. Some cleanup in initialization.

- Rootless mode. Working at the configure-window errors.

nxagent-1.3.2-9

- Removed limitations when running nxagent nested inside another
  nxagent server. Now both render extension and packing of images
  are enabled.

- The nxagent X server now inherits its endianess from the host
  architecture, instead of assuming the same endianess of the con-
  necting client. This fixes the remaining problems running ses-
  sions nested inside another nxagent server.

- Removed any reference to ReformatImage().

nxagent-1.3.2-8

- Changed the way the agent server handles images internally.
  The inherited Xnest code used to set the server's image order
  to the same order of the remote X display. This caused agent
  to create images in the internal frame-buffer with a different
  endianess in respect to images got from X clients.

- The new image handling code seems to solve all the known image
  endianess problems, for example cursors created on big-endian
  displays with a wrong shape or glyphs being showed flipped when
  retrieving the image data from the virtual frame-buffer.

- As an added bonus the new code seems to double the performance
  of the SPARC Solaris server when accessing i386 clients.

- Commented out all the existing calls to ReformatImage(). Code
  needs now extensive testing to see if any of the calls must be
  actually restored.

- Replaced calls to index() with strchr().

nxagent-1.3.2-7

- Solved a potential memory error when accessing a client or a
  window pointer in clipboard management code after the resources
  had been destroyed. Added a nxagentClearClipboard() function to
  be called before a client or a window is destroyed to get rid
  of any reference to the disposed resources.

- Auto-repeated keystrokes generated by agent from inside the
  virtual keyboard device are now ignored. Agent will correctly
  honor auto-repeated keystrokes generated by the real X server.
  This is actually the expected behaviour. The former implemen-
  tation triggered an annoying bug, with keystrokes being inad-
  vertedly auto-repeated in the case of high latency on the
  network link.

- Agent will now ignore the pointer settings changes generated
  inside the remote session. The original behaviour was to reset
  the pointer values (for example acceleration) to the X factory
  settings at session startup. Agent will now inherit whatever
  values are set on the real X display.

- Added a -noignore parameter. When passed, agent will propagate
  to the real X server any change to keyboard and pointer control
  settings operated by its own X clients.

nxagent-1.3.2-6

- Fixed problem with glyphs being drawn clipped in the virtual
  frame buffer. This is not yet the final solution but it seems
  to work in all the circumstances where problem was observed
  in the past. Problem seems to be caused by scratch pixmaps
  being requested with a width and height smaller than actually
  required. Note anyway that pixmap's buffer seems to be never
  accessed beyond its boundary. This probably means that memory
  for the pixmap is originally allocated using the right size.

- Moved backing-store selection to options repository. Now by
  default the backing-store mode is set to WhenRequested. This
  means that, in most cases, there is no need to pass the -bs
  option on the command line.

- Code cleanup in Render.c, NXrender.c, NXglyph.c.

nxagent-1.3.2-5

- Fixed initialization of all the supported depths. Previous
  versions correctly initialized the various depths but still
  failed to advertise the support of any other depth than the
  default depth supported by the remote X server.

- Persistent mode. We now correctly propagate the pixmap ID of
  the parent to the virtual pixmap at reconnection. This fixes
  the reconnection errors when render extension is enabled.

- Persistent mode. Solved the refresh problems at reconnection.
  Problems were generated by the lack of window parent's ID at
  the time session was reconnected.

- Changed the agent's behaviour at the time the close button is
  pressed. If agent is running in persistent mode a new dialog
  is showed with the option to suspend the session.

nxagent-1.3.2-4

- Persistent mode. At the time the proxy connection is reset the
  per-client unpack geometry information is cleared. This makes
  agent find out that a new unpack geometry is needed as soon as
  the display is reconnected.

- Persistent mode. Lot of logging added in order to trace use of
  resources as long as they are recreated. The current version
  fails to correctly restore the picture information when render
  is enabled.

nxagent-1.3.2-3

- Finally fixed all the problems with missing initialization of
  pixmap formats. The screen info is now correctly set up even
  when the remote display doesn't support all the target depths.
  Many thanks to Michael L Torrie who helped me to reproduce the
  problem and come to a solution.

- Moved initialization of depths, default drawables and pixmap
  formats to their own functions in Display.c.

nxagent-1.3.2-2

- Fixed the nxagentDestroyPixmap() function to correctly take into
  account the reference counter of the virtual pixmaps. This solves
  the crashes observed when running some GTK clients like xchat.

- Added a function Pixmap.c to forcibly destroy the pixmaps created
  in the virtual framebuffer when the parent pixmap is destroyed.

- This version contains some verbose output intended to better test
  the new behaviour. The output will be removed in future versions.

nxagent-1.3.2-1

- More cleanup in Pixmap.c.

- Rewritten nxagentCreatePixmap(). Corrected an error where the
  bitsPerPixel field was set to the pixmap's depth instead of the
  result of BitsPerPixel(depth). This finally solves the problem
  of text being incorrectly rendered in the virtual framebuffer.

- Corrected the X error returned at the end of session when trying
  to free a pixmap with an invalid id.

- Opened the 1.3.2 branch.

nxagent-1.3.1-32

- Cleanup of Pixmap.h/Pixmap.c. Renamed macros according to the
  nxagent naming conventions.

nxagent-1.3.1-31

- When running in fullscreen mode, grab and ungrab of pointer and
  keyboard is performed in new functions, placed in Events.c.

- The event loop now checks if the enter/leave notify carries a
  NotifyInferior detail and, in this case, doesn't perform the grab.
  This saves half the amount of grabs (and the related roundtrips)
  performed by the previous version.

- Ungrab of pointer is now performed whenever the cursor leaves the
  fullscreen window. In previous version only the keyboard was
  explicitly ungrabbed.

- Added a warning in the event loop when receiving a MappingNotify.
  This event is presently unhandled and seems to be reported, as a
  consequence of the selected event mask, only by some X servers.

nxagent-1.3.1-30

- Reverted the patch introduced in Pixmap.c. The whole issue is
  being investigated in its ramifications up to the virtual frame
  buffer.

nxagent-1.3.1-29

- Fixed a problem in the nxagentDestroyPixmap function where the
  reference counter of pixmaps could be decremented twice. This
  could lead to agent trying to free the pixmaps more than once.

- On Solaris there is no description for pc105 keyboard model. As
  a workaround we consider pc104 to be the closest approximation.

nxagent-1.3.1-28

- Fixed a bug in the create window procedure. With some clients,
  like Maelstrom and xmame, the creation of the main window was
  failing due to the wrong colormap and visual attributes used
  by agent on the real X server.

- In fullscreen mode the keyboard is now grabbed at the time we
  receive an EnterNotify event. This fixes a problem at startup
  observed on some Debian based distributions where agent didn't
  receive the keyboard focus until user had minimized and then
  brought to front the agent's window. The grab is now correctly
  performed by using the timestamp of the remote X server ins-
  tead of our local timestamp.

- In NXdixfonts.c strings corresponding to names of fonts and
  font aliases cached by nxagent were missing the terminating
  zero.

- In function InitClientPrivates fixed the missing initializa-
  tion of the is_ignored member of the ClientPriv structure.

- Added the Persistent option to Options repository. The flag is
  intended to replace the old nxagentEnableReconnect variable.

nxagent-1.3.1-27

- Fixed a memory allocation problem in Keyboard.c. A string was
  allocated in the heap without making enough room for the trail-
  ing zero.

nxagent-1.3.1-26

- Added further run-time checks to verify that pixmaps are not
  created with bad bit-per-plane settings. This problem seems to
  be caused by lack of support by nxagent of some combinations
  of depth and visual when the render extension is enabled. If
  this is the case, hide the render extension to new clients and
  force any subsequent render operation to return a BadRequest
  error. This required including extension.c from dix. A new
  NXextension.c file is added to the distribution.

- A problem was reported by Valgrind about reading the first 4
  bytes just after the block allocated in fbCreatePixmap from
  nxagentCreatePixmap. A quick fix was added to pixmap.c from
  dix so that AllocatePixmap adds 4 additinal bytes to each
  buffer.

nxagent-1.3.1-25

- Fixed a memory corruption error. The original AllocateGlyphSet
  from render/glyph.c could be called instead of the NX counter-
  part defined in NXglyph.c. This could lead to the missing
  allocation of the trailing remote glyphset id field.

- Added initialization of an otherwise usused string in function
  nxagentPropagateArtsdProperties(). The whole string is probably
  to be removed in future versions.

- Moved the flag used to avoid reentrancy in GCOps to a separate
  Trap header and source.

- Further cleanup. Removed the zombie file NXglyphcurs.h.

- Added missing initialization of the picture pointer in private
  window's data in nxagentCreateWindow.

nxagent-1.3.1-24

- Added the missing timeout when calling WaitForSomething() at
  startup. The bug caused the splash to remain on screen until
  a further event was received.

- Fixed a BadAtom error on Windows during initialization. Error
  was caused by a bad attempt to change the NX_AGENT_SIGNATURE.

- Hunting the 0 bits-per-plane drawable bug in nxagentValidateGC.
  Added tracing output and additional checks. GC validation is
  skipped if it is not possible to recover an appropriate value.

- Ensured that nxagentDisplayName is set before calling the post
  initialization procedure.

nxagent-1.3.1-23

- When session is run nested inside another NX X agent, all the
  optimizations regarding remote expose events on fully visible
  windows are disabled. This solves the refresh problems encoun-
  tered when covering the nested session with a window from the
  local X server.

- Reusing NX_AGENT_SIGNATURE atom to detect nested operation.
  Atom is created internally to the agent server at startup,
  before any atom on the real display.

- Fixed construction of caption used for dialog boxes spawn by
  agent. The previous algorithm failed to identify the correct
  string in parameter -name passed on the command line.

nxagent-1.3.1-22

- Ensured that state of keyboard modifiers is initialized with
  values from the real X server when the first key stroke is
  pressed by the user.

- Fixed the X_SetInputFocus errors generated at session startup.

- Rootless mode. Ensured that remote expose events are always
  reported by the remote proxy. This is a temporary fix looking
  forward for better handling of visibility events.

nxagent-1.3.1-21

- Saved a GetWindowAttributes and a GetGeometry in the function
  drawing the splash screen.

- Better handling of splash at startup. Removed the flickering on
  Windows without recurring to another atom. This is achieved by
  optimizing drawing and delaying mapping of the main windows.

- Modified the magic values activating rootless mode to 100x100.

- Removed modifications introduced in 1.3.1-20.

nxagent-1.3.1-20

- Working on eliminating the splash screen flickering on Windows
  and Darwin. Checked if the NX_SPLASH atom has been created by
  the NX X server. If this is the case, we let the NX X server
  show the splash screen on our behalf.

nxagent-1.3.1-19

- Improved the initialization phase by removing a GetProperty, an
  InternAtom and two GetInputFocus round-trips.

- Added appropriate masking of the state bits reported by the
  XkbStateNotifyMask event.

- Added a simple mechanism during the itialization phase to trace
  the use of X server replies.

nxagent-1.3.1-18

- Made some order in functions loading the NX icon.

- Removed some more zombie files from agent distribution. Now only
  the files imported from DIX and MI have name prepended with NX.

nxagent-1.3.1-17

- Moved names and values of intern atoms created by agent in their
  specific header and source.

- We temporarily force rootless mode if user provides a geometry
  of 801x601. This is intended to simplify testing. Note that if
  rootless is selected, we'll anyway disregard any geometry set
  by the user, assuming the geometry of the real display.

nxagent-1.3.1-16

- We are checking now whether NX_IDENTITY intern atom is created
  before NX_SPLASH. We want NX X servers to show the splash on our
  behalf, so if NX_SPLASH is already interned, than we just skip
  the splash procedure.

nxagent-1.3.1-15

- Rootless mode. Fixed a segfault handling ConfigureNotify events
  on top-level windows.

- Moved handling of ClientMessages coming from proxy in a separate
  function.

nxagent-1.3.1-14

- Rewritten the code dealing with key modifier changes. Now we
  use XKB events instead of synchronous XkbGetIndicatorState()
  calls.

- Moved activation of keyboard and pointer events to Events.c.

- Removed pointer motion optimizations as a better logic, taking
  in account the selected link speed, is already implemented in
  proxy.

nxagent-1.3.1-13

- Renamed the -reconnect option as -persistent.

- Rootless mode. Agent's root windows are not mapped at startup.

- Removed the zombie file glyphcurs.c from agent distribution.

nxagent-1.3.1-12

- Corrected a typo in the new CopyArea code in GCOps.c where:

  if (srcx > nxagentWidth)  srcx = nxagentWidth;
  if (srcy > nxagentHeight) srcx = nxagentHeight;

  had to be:

  if (srcx > nxagentWidth)  srcx = nxagentWidth;
  if (srcy > nxagentHeight) srcy = nxagentHeight;

- Added handling of the fullscreen command line parameter to the
  options repository.

- Added agent geometry parameters to the options repository.

nxagent-1.3.1-11

- Rootless mode. Added handling of configuration events reported
  for the top-level windows.

- Rootless mode. Children of the root window get the event mask
  selected when the window is created. This makes the keyboard
  work at least with xterm and other simple clients. There are
  still problems with the pointer events.

- Created new Splash.h and Splash.c sources file to contain the
  few splash screen procedures that were previously sparsed in
  multiple files.

- Added traces in all the window creation procedures and in the
  initialization routines called at startup.

- Renamed some source files to make simpler to identify what is
  imported from DIX and what actually pertains to agent.

nxagent-1.3.1-10

- Added the missing RestackWindow screen operation. This solves
  problems of incorrect stacking order observed in menus when
  using the drop shadow feature in the latest KDE versions.

nxagent-1.3.1-9

- The new standard for checking previous inclusion of headers is
  by verifying definition of _Filename_H_ where Filename is the
  base name of the file, for example __Options_H__ in the case
  of "Options.h". This is intended to be a step in reducing the
  number of defines in code prefixed with NXAGENT.

- Updated NX copyright to year 2004. Placed copyright statement
  regarding NXAGENT and NX modifications to the Xnest software
  at the beginning of the file. Checked again if credit is given
  to all the existing copyright owners.

nxagent-1.3.1-8

- Added a new Options repository to store the values currently
  dispersed all over around. The new macros nxagentOption(option)
  and nxagentChangeOption(option, value) should be used from now
  on to access the important values affecting agent's operations.

- General cleanup of code. Removed the remaining references to
  the Xnest legacy code.

nxagent-1.3.1-7

- Some steps forward toward rootless agent. Now all the top level
  windows are correctly created. Drawing to the real screen seems
  to work without problems. It is still not possible to get events
  in the event loop and the remote WM is interfering with the WM
  on the local display.

- More cleanup of code. Some changes to parts added since 1.3.1-5.

nxagent-1.3.1-6

- A drawable with 0 bpp can somehow arrive to the fb layer. The
  problem needs to be better investigated. In the meanwhile a
  quick check is added to correctly identify the ill condition.

- Small fix to allow Num/Caps lock synchronization also on the
  windows platform. This is still to be considered beta quality.

- New options -slow and -fast added to agent. When "fast mode" is
  not set, agent will query the remote X server to get real content
  of drawables. When fast mode is enabled, agent will save the
  round-trip by just clearing the drawable to its background. The
  default mode is "slow", thus agent will always query the remote
  server. When "fast mode" is explicitly set or when NX transport
  is detected and the link is one of MODEM, ISDN and ADSL, agent
  will default to "fast mode". This behaviour can be overridden by
  system administrators by setting the key AGENT_EXTRA_OPTIONS_X
  to "-slow" in node configuration.

nxagent-1.3.1-5

- Created framework for rootless agent. Added a -rootless option.

- Slowly going toward a better organization of nxagent internals.
  Renamed some files and moved things around. Changed some comments
  in Screen.c to be more explainatory.

nxagent-1.3.1-4

- Changed default keyboard model to "pc102" (was "pc101") to correct
  problems with "<" and ">" keys on the German keyboards and, poten-
  tially on other layouts.

- Added new parameter -kbtype to handle both geometry and layout in
  a single form, for example pc102/pl. Parameter -keyboard is still
  supported for backward compatibility.

- Synchronization of Num and Caps lock status is now done comparing
  the real keyboard and the internal state at the time nxagent gets
  the focus. If state doesn't match, a fake keyboard event is sent.

nxagent-1.3.1-3

- Fixed a further problem on CopyArea between windows and pixmaps.

nxagent-1.3.1-2

- Implemented CopyArea on framebuffer when copying from windows to
  pixmaps. Added the -slow command line switch to let nxagent get
  the real content of the window from the X server. This requires
  an expensive round-trip so it is disabled by default.

nxagent-1.3.1-1

- Opened the 1.3.1 branch.

nxagent-1.3.0-32

- Fixed a bug on 16 bpp displays using render extension. Now only
  images which are used by render pictures and which have depth 32
  are created with a different visual color mask. This saves a big
  amount of SetUnpackColormap requests.

nxagent-1.3.0-31

- Fixed a bug in nxagentComposite routine. The macro nxgentPicturePriv
  was used without checking for a null pointer argument.

nxagent-1.3.0-30

- Limitations on bandwidth introduced whenever the agent's window
  is covered are now disabled by default. They can be enabled by
  specifying the -limit option on the command line. The -nolimit
  option is left for compatibility with the previous versions.
  This handy feature caused complaints in the past from users who
  instruct window managers to not move the window having focus on
  top of the stacking order.

nxagent-1.3.0-29

- Removed the warnings issued at compile time.

nxagent-1.3.0-28

- Replaced the corrupted file nxagent.xpm with the original version.

nxagent-1.3.0-27

- Hopefully fixed all the remained memory leaks. Most problems were
  due to agent's render extension not freeing resources on X server.

- Added support for big-endian X server display on render extension.
  Glyphs are reformatted according with the destination order.

- Added per client information for SetUnpackGeometry, now the unpack
  routines should have the correct information for the color mask at
  the end of the split process.


nxagent-1.3.0-26

- Changed the message printed in the log when leaving the dispatch
  loop from 'Error' to 'Info'.

- Moved initialization of _NXFlushSize to nxcompext in order to set
  value at the time NXGetControlParameters() is called.

nxagent-1.3.0-25

- Content of selection is now acquired using a single round-trip.
  If content exceeds 262144 bytes, it is truncated at that size.
  This works in most situations, at least with text, that, by the
  way, is the only target supported at the moment. An improvement
  would be to modify the state machine in a way that the remaining
  data part is got using a second round-trip. This is not difficult
  to do and can be considered for future releases.

- In handling of clipborad we had to disable check on multiple
  convert selection requests from the same client. There is a bug
  in the algorithm that prevents the counter to be reset at the
  appropriate time. This is to be investigated.

nxagent-1.3.0-24

- Added asynchronous handling of GetProperty requests and replies
  using the NXCollectProperty and NXGetCollectedProperty requests
  and the NXCollectPropertyNotify event in NXclipboard.c and in
  Event.c. Implementation is not complete yet and can sometimes
  cause X clients to misbehave.

- Function xnestBitBlitHelper() now always returns NullRegion.
  Handling of graphical expose events should be rewritten so that
  regions are always generated internally to nxagent. Returning a
  null region without checking our event queue, anyway, saves a
  flush of the display buffer and doesn't seem to affect the
  functionalities.

- This version comprises modifications to Events.c, GCOps.c,
  NXClipboard.c, NXwindow.c and Window.c where I found XSync()
  messages (or code used to just send XSync() messages) outside
  any #ifdef ..._DEBUG.

nxagent-1.3.0-16

- A dialog is showed at startup if proxy was not able to load a
  persistent cache.

- Reflected changes introduced in NXGetControlParameters() to add
  more detailed information about the compression settings.

- Fixed a potential bug with the name of the agent's display at the
  time a dialog had to be showed. String was allocated with only 6
  characters. This could lead to dialogs not being showed using
  display ports greater than 9999.

- NX.h is now included by NXControl.h. Removed #include directives
  from other files.
