ChangeLog:

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.
