[X2Go-Commits] nx-libs.git - build-baikal (branch) updated: nxagent/3.2.0-5

X2Go dev team git-admin at x2go.org
Fri Aug 30 16:23:43 CEST 2013


The branch, build-baikal has been updated
       via  b79164001d1eb06f4591c59b7a7c2c0fb29e992b (commit)
      from  1c25e92b9ea5811d8ab9c2bfdc0dcb2e4d21bd0a (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
-----------------------------------------------------------------------

Summary of changes:
 nx-X11/programs/Xserver/hw/nxagent/Args.c          |   12 +-
 nx-X11/programs/Xserver/hw/nxagent/CHANGELOG       |   34 -
 nx-X11/programs/Xserver/hw/nxagent/CHANGELOG.orig  | 5959 --------------------
 nx-X11/programs/Xserver/hw/nxagent/Drawable.c      |   22 +-
 nx-X11/programs/Xserver/hw/nxagent/Events.c        |   56 +-
 nx-X11/programs/Xserver/hw/nxagent/Font.c          |  145 +-
 nx-X11/programs/Xserver/hw/nxagent/Image.c         |    2 +-
 nx-X11/programs/Xserver/hw/nxagent/Keyboard.c      |    2 +-
 nx-X11/programs/Xserver/hw/nxagent/X/NXglyph.c     |   19 +-
 .../Xserver/hw/nxagent/X/NXglyph.c.NX.original     |   19 +-
 .../Xserver/hw/nxagent/X/NXglyph.c.X.original      |   14 +-
 nx-X11/programs/Xserver/hw/nxagent/X/NXrender.c    |   18 +-
 .../Xserver/hw/nxagent/X/NXrender.c.NX.original    |   18 +-
 .../Xserver/hw/nxagent/X/NXrender.c.X.original     |   18 +-
 .../Xserver/hw/nxagent/X/NXresource.c.NX.original  |    8 +-
 .../X/{NXresource.c.NX.original => NXresource.c~}  |    8 +-
 nx-X11/programs/Xserver/hw/nxagent/X/NXshm.c       |   13 +-
 .../Xserver/hw/nxagent/X/NXshm.c.NX.original       |   13 +-
 .../Xserver/hw/nxagent/X/NXshm.c.X.original        |   13 +-
 19 files changed, 100 insertions(+), 6293 deletions(-)
 delete mode 100644 nx-X11/programs/Xserver/hw/nxagent/CHANGELOG.orig
 copy nx-X11/programs/Xserver/hw/nxagent/X/{NXresource.c.NX.original => NXresource.c~} (100%)

The diff of changes is:
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Args.c b/nx-X11/programs/Xserver/hw/nxagent/Args.c
index c74bc3f..5b33627 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Args.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Args.c
@@ -2080,8 +2080,8 @@ void nxagentSetDeferLevel()
 
       deferTimeout = 200;
 
-      tileWidth  = 4096;
-      tileHeight = 4096;
+      tileWidth  = 65536;
+      tileHeight = 65536;
 
       break;
     }
@@ -2091,8 +2091,8 @@ void nxagentSetDeferLevel()
 
       deferTimeout = 200;
 
-      tileWidth  = 4096;
-      tileHeight = 4096;
+      tileWidth  = 65536;
+      tileHeight = 65536;
 
       break;
     }
@@ -2103,8 +2103,8 @@ void nxagentSetDeferLevel()
 
       deferTimeout = 200;
 
-      tileWidth  = 4096;
-      tileHeight = 4096;
+      tileWidth  = 65536;
+      tileHeight = 65536;
 
       break;
     }
diff --git a/nx-X11/programs/Xserver/hw/nxagent/CHANGELOG b/nx-X11/programs/Xserver/hw/nxagent/CHANGELOG
index 1c10208..4d930b9 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/CHANGELOG
+++ b/nx-X11/programs/Xserver/hw/nxagent/CHANGELOG
@@ -1,39 +1,5 @@
 ChangeLog:
 
-nxagent-3.2.0-10
-
-- Extended fix for TR07F02091 to include font names having zero in
-  fields RESOLUTION_X and RESOLUTION_Y.
-
-nxagent-3.2.0-9
-
-- Fixed TR07F02091. Scalable fonts were not correctly listed among
-  available fonts.
-
-- Fixed TR06F02080. Use the corrupted area extents as maximum size of
-  the image data.
-
-nxagent-3.2.0-8
-
-- Fixed TR07F02082. The agent server could be unable to init core
-  keyboard on 64 bit systems.
-
-nxagent-3.2.0-7
-
-- Imported patch fixing issues from  X.Org security advisory, June
-  11th, 2008: Multiple vulnerabilities in X server extensions. CVE
-  IDs: CVE-2008-1377, CVE-2008-1379, CVE-2008-2360, CVE-2008-2361,
-  CVE-2008-2362.
-
-nxagent-3.2.0-6
-
-- Fixed TR05F02063. Ignore ReparentNotify events for non-rootless
-  sessions.
-
-- Fixed TR06F02068. Try to pack images only if format is ZPixmap.
-
-- Don't require reparent on close of NX window.
-
 nxagent-3.2.0-5
 
 - Fixed TR04F02044. Restored the original MakeRootTile() function in
diff --git a/nx-X11/programs/Xserver/hw/nxagent/CHANGELOG.orig b/nx-X11/programs/Xserver/hw/nxagent/CHANGELOG.orig
deleted file mode 100644
index 539a7b8..0000000
--- a/nx-X11/programs/Xserver/hw/nxagent/CHANGELOG.orig
+++ /dev/null
@@ -1,5959 +0,0 @@
-ChangeLog:
-
-nxagent-3.2.0-8-MAR1
-
-- Fixed TR07F02091. Scalable fonts were not correctly listed among
-  available fonts.
-
-nxagent-3.2.0-8
-
-- Fixed TR07F02082. The agent server could be unable to init core
-  keyboard on 64 bit systems.
-
-nxagent-3.2.0-7
-
-- Imported patch fixing issues from  X.Org security advisory, June
-  11th, 2008: Multiple vulnerabilities in X server extensions. CVE
-  IDs: CVE-2008-1377, CVE-2008-1379, CVE-2008-2360, CVE-2008-2361,
-  CVE-2008-2362.
-
-nxagent-3.2.0-6
-
-- Fixed TR05F02063. Ignore ReparentNotify events for non-rootless
-  sessions.
-
-- Fixed TR06F02068. Try to pack images only if format is ZPixmap.
-
-- Don't require reparent on close of NX window.
-
-nxagent-3.2.0-5
-
-- Fixed TR04F02044. Restored the original MakeRootTile() function in
-  order to create the root window background pixmap.
-
-- Fixed TR04F02041. Gnome panels stayed on top of the NX session win-
-  dow with desktops running Compiz. This fix provides a solution for
-  the Fullscreen mode.
-
-- Improved for the shadow session the handling of master session win-
-  dow resize.
-
-nxagent-3.2.0-4
-
-- Fixed TR10D01535. The agent window is not minimized anymore when
-  pointer leaves.
-
-- Changes aimed to avoid possible type mismatch in XDisplay struct
-  on 64 bit architectures.
-
-nxagent-3.2.0-3
-
-- Fixed a build issue on Solaris.
-
-nxagent-3.2.0-2
-
-- Code clean up. Moved a variable definition to the beginnning of a
-  block.
-
-nxagent-3.2.0-1
-
-- Opened the 3.2.0 branch based on nxagent-3.1.0-9.
-
-nxagent-3.1.0-9
-
-- Fixed TR03F02025. German umlauts couldn't be pasted into a remote
-  Windows application. Now also the UTF8_STRING target is available
-  for ConvertSelection requests.
-
-- Fixed TR03F02031. Moved SetScreenSaverTimer() call in order to avoid
-  undesired reset of the auto-disconnect timeout when a screen saver
-  turns on.
-
-nxagent-3.1.0-8
-
-- Added reference to fixed TR02F02007 and TR07E01762 in the CHANGELOG.
-
-- Set the GC trap before calling fbPolySegment.
-
-- Fixed TR09E01863. A flag is set if a resource has been added or fre-
-  ed and it is checked in FindClientResourcesByType().
-
-- Added void entries to nxagentRequestLiteral vector in order to avoid
-  a wrong string is printed to the output for NoOperation request.
-
-- Fixed TR11E01948. Now keyboard status is initialized again after
-  the NX session is reconnected. This avoids CAPS LOCK and NUM LOCK
-  synchronization problems.
-
-- Added nxagentXkbCapsTrap and nxagentXkbNumTrap to avoid CAPS LOCK
-  and NUM LOCK synchronization problems when CAPS LOCK or NUM LOCK is
-  the first key to be pressed in the NX session.
-
-- Corrected subSize variable initialization in nxagentRealizeImage().
-
-- Fixed various memory leaks.
-
-- Fixed TR11E01950. Copy and paste via edit menu didn't work for some
-  applications.
-
-- Corrected property type in nxagentRequestSelection(). Some external
-  applications didn't enable their paste button when nxagent was the
-  owner of the CLIPBOARD selection.
-
-- Added struct to save values queried by XQueryExtension for XFixes
-  extension.
-
-nxagent-3.1.0-7
-
-- Imported patch fixing issues from  X.Org security advisory, January
-  17th, 2008: Multiple vulnerabilities in the X server.  CVE IDs:
-  CVE-2007-5760    CVE-2007-5958    CVE-2007-6427   CVE-2007-6428
-  CVE-2007-6429    CVE-2008-0006.
-
-- Fixed TR02F02007. Handled the case if nxagentCreateDrawableBitmap()
-  fails to create the pixmap intended to store the bitmap data.
-
-nxagent-3.1.0-6
-
-- Fixed a compile warning in Args.c.
-
-- The synchronization loop breaks if the drawable is clean when it's
-  not supposed to be.
-
-- Fixed TR12E01966. Emacs tooltips were not displayed properly. Added
-  a check on the event mask before calling miWindowExposures().
-
-- Fixed TR01F01982. ConfigureNotify warning is printed in verbose mode
-  only.
-
-nxagent-3.1.0-5
-
-- Moved some variable definitions placed in ProcGetProperty().
-
-nxagent-3.1.0-4
-
-- Fixed TR06D01397. The problem was: drag & drop operations between
-  windows of Java applications didn't work in NX Client for Windows.
-
-- Implemented FR12E01957. Added a limit to the amount of data that can
-  be pasted from an NX session into an external application. The new
-  option - named 'copysize' - can be read from the 'options' file.
-
-nxagent-3.1.0-3
-
-- Fixed TR12E01963. The window tree is revalidated explicitly after
-  recomputing the root window clip regions.
-
-nxagent-3.1.0-2
-
-- Fixed TR11E01946. Forcing exposures on regions saved in the backing
-  store could bring to unexpected results.
-
-- Fixed TR11E01928. Animated cursors were not properly disconnected
-  and reconnected.
-
-nxagent-3.1.0-1
-
-- Opened the 3.1.0 branch based on nxagent-3.0.0-93.
-
-nxagent-3.0.0-93
-
-- Fixed TR10E01913. Now bell settings are restored after the agent
-  reconnects.
-
-nxagent-3.0.0-92
-
-- Fixed a compilation error on 64 bit platforms.
-
-nxagent-3.0.0-91
-
-- Checked the window synchronization status before subtracting an ex-
-  posed area from the corrupted region.
-
-nxagent-3.0.0-90
-
-- Fixed TR11E01932. In case of rootless session displayed by NXWin X
-  server, synthetic ConfigureNotify events are generated by the X11
-  agent. This helps to correct menu navigation in Java 1.6.0.
-
-- Fixed the handling of 'client' parameter.
-
-- Fixed bad refreshes in viewport navigation in the case of Windows
-  client.
-
-- Fixed TR11E01930. If the defer level is set by means of the command
-  line, the DeferLevel option is not reset while resuming the session.
-
-- Fixed TR07E01762. Problem in comparison of font names.
-
-- Printed the new geometry in the session log when the agent screen is
-  resized.
-
-nxagent-3.0.0-89
-
-- Fixed TR10E01919. The agent could crash in the routine in charge of
-  find a replacement for a missing font.
-
-- Removed an unuseful log message.
-
-nxagent-3.0.0-88
-
-- Fixed TR10D01539. Some XKEYBOARD requests are disabled if the option
-  'keyboard' has value 'query'. This locks the initial keyboard map.
-  Enabling/disabling of XKEYBOARD requests is done at run time.
-
-- Added -noxkblock command line option enabling the XKEYBOARD requests
-  even if the option 'keyboard' value is 'query'.
-
-nxagent-3.0.0-87
-
-- Reworked the handling of CT_PIXMAP client clips. Clips are always
-  converted in regions for internal use, while bitmap are saved for
-  operations involving the remote X.
-
-nxagent-3.0.0-86
-
-- Fixed TR07E01749. Now using different resolution between shadow
-  and master session with shadow display option 'As on the server'
-  doesn't display black borders.
-
-- Fixed TR09E01852. The GC clips of type CT_PIXMAP are not converted
-  in regions. This avoids generating regions made up by thousands of
-  rectangles. Backing store function SetClipmaskRgn is implemented by
-  a stub doing nothing.
-
-nxagent-3.0.0-85
-
-- Fixed TR08E01841. Exposed are forced to new areas exposed by the
-  viewport.
-
-- Fixed TR02E01645. Remote exposures was blocked if the NX client was
-  running on Linux without window manager.
-
-- Even if the agent window is fully obscured, synchronization is not
-  skipped if the Composite extension of the remote display is in use.
-
-- Fixed TR08E01851. Exposures events have to be internally generated
-  for regions that can't be restored because the backing pixmap is
-  corrupted.
-
-- Fixed TR08E01847. The initial values of store used to save XChangeGC
-  calls are set to the default GC values.
-
-- When a drawable becomes synchronized, its outdated bitmap is destro-
-  yed.
-
-- If a pixmap is not fully synchronized after a synchronization loop
-  it is cleared, just like windows.
-
-- Solved a problem causing some pixmaps to remain among the corrup-
-  ted resources even if they were synchronized.
-
-nxagent-3.0.0-84
-
-- Renamed Misc.h as Utils.h to solve name clashes on Windows platform.
-
-nxagent-3.0.0-83
-
-- Changes to include correctly declaration of _XDisplay structure on
-  64 bit platforms. Further tests are needed to confirm that it fixes
-  TR08E01824.
-
-nxagent-3.0.0-82
-
-- Fixed TR08E01821. Changed nxagentAddItemBSPixmapList() to check if
-  the pixmap item has already an entry in the list before adding it.
-
-- Fixed TR07E01795. Sun Studio main window showed only its grey back-
-  ground. Changed clipboard events handling to let the agent notify
-  a failure in converting selection.
-
-nxagent-3.0.0-81
-
-- Based on nxagent-3.0.0-78.
-
-- The agent options are saved before reopening the display in the
-  reconnection procedure. If the new initialization fails the backup
-  values of options are restored.
-
-- Keyboard device info are saved before the keyboard reset occuring
-  in the reconnection procedure. If the new initialization of the
-  keyboard fails, the old values are restored.
-
-- The initialization procedure of keyboard device returns with error
-  if it fails to retrieve the keyboard mapping information from the
-  remote display.
-
-- The reconnection fails if the default depth of the new display is
-  different from the previous one.
-
-- The session can be migrated if the visuals don't match for color
-  masks swapping. At the moment there are no conversions to line up
-  the RGB masks, so even if the session can be migrated, incorrect
-  colors may be shown.
-
-nxagent-3.0.0-80
-
-- The agent options are saved before reopening the display in the
-  reconnection procedure. If the new initialization fails the backup
-  values of options are restored.
-
-- The flag storing that a SIGHUP has been received is reset if the
-  function reconnecting the session fails.
-
-nxagent-3.0.0-79
-
-- Changed the SIGHUP handler not to ignore the signal if the state
-  is SESSION_GOING_UP or SESSION_GOING_DOWN.
-
-- Keyboard device info are saved before the keybord reset occuring
-  in the reconnection procedure. If the new initialization of the
-  keyboard fails, the old values are restored.
-
-- The initialization procedure of keyboard device returns with error
-  if it fails to retrieve the keyboard mapping information from the
-  remote display.
-
-- The reconnection fails if the default depth of the new display is
-  different from the previous one.
-
-- The session can be migrated if the visuals don't match for color
-  masks swapping. At the moment there are no conversions to line up
-  the RGB masks, so even if the session can be migrated, incorrect
-  colors may be shown.
-
-nxagent-3.0.0-78
-
-- Fixed TR07E01747. Fixed warnings occuring when compiling for AMD64.
-
-- Fixed TR07E01753. NoMachine WM icon in the title bar is displayed
-  correctly.
-
-- Fixed TR03E01656. If client and server endianess didn't match, glyph
-  images bits have to be only temporarily swapped.
-
-- Fixed TR07E01746. Terminate the shadow agent if the option 'shadow'
-  is empty.
-
-- Added option '-verbose'. It enables the printing of errors received
-  by the agent from the remote X server.
-
-- Warnings related to missing fonts are printed only if verbose mode
-  is enabled.
-
-- Disabled a log message related to the use of Composite extension.
-
-nxagent-3.0.0-77
-
-- The pixmap formats are initialized without taking care of which are
-  supported on the remote display.
-
-- Removed the check for pixmap format compatibility when migrating the
-  session to a new display.
-
-- Fixed TR06E01725. A minimum set of available picture formats is
-  used to ensure a wide migration from/to different displays.
-
-- The PictFormat structures used by nxagent are no longer filtered
-  with the ones available on the real display.
-
-- The background pixmaps are cleared while reconnecting in order to
-  make them usable.
-
-- Fixed TR01E01619. Changed the RandR implementation to return a re-
-  fresh rate other than zero.
-
-nxagent-3.0.0-76
-
-- Changed the keystroke to force the drawable's synchronization to
-  CTRL-ALT-J.
-
-nxagent-3.0.0-75
-
-- If the backing store tries to restore areas from a corrupted pixmap,
-  such areas are subtracted from the saved region, so that exposures
-  will be sent for them.
-
-nxagent-3.0.0-74
-
-- Don't skip the synchronization when there are more clients ready.
-  This temporarily solves the synchronization problems observed in
-  the previous versions if one or more clients kept the agent busy.
-
-nxagent-3.0.0-73
-
-- If the PolyFillRect() uses a FillStippled or a FillOpaqueStippled
-  fill style and the destination is corrupted, the area affected by
-  the operation is first synchronized.
-
-nxagent-3.0.0-72
-
-- Fixed the bug affecting the position of the input window when a
-  session was migrated to a linux X server with no window manager
-  running.
-
-- The color used to fill the corrupted backgrounds is converted de-
-  pending on the depth of remote X server.
-
-- The PolyFillRect() does not clean the corrupted destination region
-  if a stipple pixmap is used as mask. This solution is adopted to
-  reduce the region fragmentation and to solve the text drawing pro-
-  blems affecting rdesktop.
-
-nxagent-3.0.0-71
-
-- Force a flush of the display buffer if the coalescence timeout is
-  expired. Set the timeout according to the link type, from 0 to 50
-  ms for link MODEM.
-
-- In nxagentRealizeImage() the width in byte is computed newly if
-  the image has been scaled.
-
-- The shadow agent clips the screen updates in tile only if the link
-  type is MODEM or ISDN.
-
-- Split the abort conditions in the synchronization loop to check
-  separately the congestion and the blocking status.
-
-- Implemented a workaround in order to avoid graphical problems with
-  render composite operations on Xfree86 remote server.
-
-nxagent-3.0.0-70
-
-- Various adjustments aimed at using the best defer rules depending
-  on the congestion state.
-
-- Fixed a problem with icons of message boxes in shadow sessions.
-
-- Changed the log message printed when the shadow agent can't connect
-  to the master session.
-
-- If Composite is in use, don't skip the PutImage and CopyArea opera-
-  tions even if the agent window is fully obscured.
-
-nxagent-3.0.0-69
-
-- The option -nodamage prevents the shadow agent from using the damage
-  extension.
-
-- Changed the scaling feature to set the byte order of the source
-  image according to the local endianess.
-
-- Changed the scaling feature in order to handle different ratios for
-  horizontal and vertical sizes.
-
-- Force the shadow sessions to be non-persistent.
-
-- When a pixmap background is synchronized, an expose is sent to its
-  owners.
-
-nxagent-3.0.0-68
-
-- Changed the type of parameters passed to nxagentRootlessRestack in
-  order to be compliant with Xlib types on 64 bit platfors.
-
-- The nxagentCompositeRects() checks for the render operation type to
-  determine if the corrupted destination region must be cleared.
-
-nxagent-3.0.0-67
-
-- Fixed a condition discarding the expose events received from the X
-  server.
-
-nxagent-3.0.0-66
-
-- The corrupted resources are removed when a session suspends, and are
-  reallocated only at reconnection. This is aimed at avoiding synchro-
-  nization loops when the link is down.
-
-nxagent-3.0.0-65
-
-- Initialize for now the tile size at 64x64 in shadow mode.
-
-- The height and width of the tiles used for synchronizing drawables
-  are set without overriding command line option 'tile'.
-
-- Avoid calling miWindowExposures() for empty regions.
-
-- Fixed a bug while clearing corrupted regions with window exposures.
-
-- The corrupted drawable counters are not reset if there are bitmaps
-  to synchronize.
-
-nxagent-3.0.0-64
-
-- The synchronization bitmap is used only when requesting a full
-  drawable synchronization, otherwise the frame-buffer is used as
-  source.
-
-- Fixed some bugs in the synchronization loop.
-
-- Removed the remaining debug output.
-
-nxagent-3.0.0-63
-
-- Don't start the synchronization loop if the wakeup handler found
-  some clients ready.
-
-- Don't flush the display buffers if the synchronization was inter-
-  rupted and there are more drawables to synchronize.
-
-- Changed the backing store functions to not save the obscured areas
-  which are inside the corrupted region of a window.
-
-- Added the code to send the XClearArea() commands in shadow mode at
-  the end of the synchronization loop. In this way large images are
-  still split in tiles but, on fast links, the final result can made
-  visible all at once.
-
-- Modified the corrupted drawable counters to only report the number
-  of resources needing synchronization. This allows the block hand-
-  ler to avoid spinning through the synchronization loop if there is
-  nothing to do.
-
-- On a window exposure remove the corrupted region of the destinat-
-  ion window.
-
-- For testing purposes, the pixmap synchronization loop starts only
-  if there are corrupted backgrounds.
-
-nxagent-3.0.0-62
-
-- The image scaling is applied only if the destination drawable is the
-  pixmap shadowing the frame buffer of the master session.
-
-- The shadow agent exits with a fatal error if it can't connect to the
-  master session.
-
-nxagent-3.0.0-61
-
-- Forward the SIGCHLD to the NX transport instead of letting the NX
-  transport forward the signal to us. This allows the agent to set
-  and replace the signal handler at any time, without having to ta-
-  ke care of the state of the NX transport.
-
-- Improved the synchronization loop by implementing a simple round-
-  robin mechanism between the resources needing synchronization.
-
-nxagent-3.0.0-60
-
-- Use a new set of functions to install, post-install and reset the
-  signal handlers.
-
-- Reset the signal handlers to their initial state after a display
-  failure, as part of the disconnection procedure.
-
-- Don't set SA_RESTART in the sigaction flags. Make the signal int-
-  errupt the system call.
-
-- Terminate all the running dialogs before exiting.
-
-nxagent-3.0.0-59
-
-- Use the value of nxagentCongestion in nxagentUserInput() instead
-  of calling NXDisplayCongestion().
-
-nxagent-3.0.0-58
-
-- The clip mask of the scratch GC used by nxagentDeferCopyArea() is
-  reset before releasing the GC.
-
-- The MotionNotify event can now break the synchronization loop.
-
-- In the case of shadow sessions, if synchronization aborts then the
-  remaining data to synchronize are not stored in a bitmap.
-
-- If a table rebuild occurs in a loop searching for resources, the
-  loop restarts from beginning not to use the out of date table.
-
-nxagent-3.0.0-57
-
-- The synchronization bitmap is created only if the corrupted area
-  of the source drawable is visible.
-
-- The synchronization loop skips the last synchronizing drawable to
-  give a chance to the next resources to be synchronized.
-
-- Removed the session starting infos concerning the mismatching ver-
-  sions of render and the window manager detection.
-
-- Split the gliph lists in Render.c only if the symbol SPLIT_GLYPH_-
-  LISTS is defined.
-
-- Read again the events in the block handler after the flush.
-
-- The nxagentCongestion variable is now a value ranging from 0 to 9,
-  not a boolean flag.
-
-- Added some experimental code dynamically reducing the size of the
-  display output buffer when the agent is blocking for write.
-
-nxagent-3.0.0-56
-
-- The synchronization loop is now aborted when a short timeout exp-
-  ires. If the drawable synchronization cannot be completed, the
-  remaining data is stored in a bitmap. The synchronization loop is
-  then restarted using the data from the bitmap, instead of pulling
-  the latest image from the framebuffer. This allows the agent to
-  show a complete frame when displaying videos and animations, while
-  at the same time giving a chance to the clients to update the
-  screen in background. When an image from the saved bitmap is put
-  on the remote display, the image is compared with the actual data
-  in the framebuffer. If the two bitmaps match, the corresponding
-  region of the drawable is marked as synchronized, otherwise the
-  drawable remains dirty and will be synchronized at the next loop
-  using the new data taken from the framebuffer.
-
-- If the smart schedules is enabled, let the dispatcher decide when
-  it is time to yield and process the next client.
-
-nxagent-3.0.0-55
-
-- Disable the smart scheduler in the case of shadow sessions.
-
-- If the smart scheduler is enabled, stop the timer before returning
-  from the block handler. WaitForSomething() sets a zero timeout if
-  there are clients with input but doesn't stop the timer. The select
-  is then interrupted to update the schedule time even if, what the
-  dispatcher cares, is only the ticks count at the time the client
-  is scheduled in.
-
-- Fixed a compilation warning in NXresource.c.
-
-- The main window of the shadow agent is mapped in nxagentMapDefault-
-  Windows, like for non shadow agents, if the remote display has no
-  window manager running. This avoids a flickering effect on the !M
-  logo having place if the shadow session was displayed from a Wind-
-  ows client.
-
-- Some code related to the use of the Composite extension is not built
-  in the agent being not necessary anymore.
-
-nxagent-3.0.0-54
-
-- Get SmartScheduleStopTimer() from dixstruct.h.
-
-- Updated the NoMachine icon file.
-
-nxagent-3.0.0-53
-
-- Changed the message 'NXAGENT: Fatal IO error on display' into 'Info:
-  Disconnected from display'.
-
-- Fix a problem occurring when the FindClientResourcesByType() needs
-  to reallocate the resource table.
-
-- The popup window synchronization breaks if an user input is caught.
-
-- Implemented FR05E01712. The stderr and stdin are redirected to the
-  'clients' file in the session directory.
-
-- The nxagentRealizeImage function does nothing if the agent is not
-  connected to the display.
-
-- Removed the code implementing the redraws of the viewport frame.
-  Such code is not needed because is't enough for the agent to handle
-  the expose event received from the X server.
-
-nxagent-3.0.0-52
-
-- Where it is necessary to wrap the function PaintWindowBackground,
-  the original function pointer is saved and restored afterwards. This
-  let other code wrapping that function (e.g. the damage extension) to
-  work correctly.
-
-- If the agent works in shadow mode, the defer parameters are ignored.
-
-nxagent-3.0.0-51
-
-- Use the smart scheduler on platforms where it is enabled.
-
-- Check ClientsWithInput in the wakeup handler and update the number
-  of clients ready if any descriptor is set.
-
-nxagent-3.0.0-50
-
-- Fixed TR05E01714. Changed VisibilityNotify event so that it forces
-  a refresh on the root window, but only if on the agent Composite is
-  enabled and its window moves from a VisibilityFullyObscured to ano-
-  ther state.
-
-- Grant the availability of core fonts in master sessions also after
-  the disconnection. This makes possible to start new clients inside
-  a shadow sessions while the master is down.
-
-- Changed nxagentGlyphs() to send a single glyph list per request.
-
-- Major rewrite of the agent dispatch handler.
-
-- Some name changes to the functions handling the session states.
-
-nxagent-3.0.0-49
-
-- Made the dispatch loop yield control to a different client after a
-  fair amount of time even if the current client doesn't produce any
-  output.
-
-nxagent-3.0.0-48
-
-- Modified the message in the suspend dialog to say 'Disconnect' in
-  place of 'Suspend'.
-
-- Added macros in Pixels.h to determine the behavior of the lazy en-
-  coding.
-
-- Changed the copyright attribution from Medialogic to NoMachine.
-
-- Reset all options to their defaults before processing the session
-  arguments. This fixes the problem with the DeferLevel option not
-  being set at reconnection.
-
-nxagent-3.0.0-47
-
-- Initialized the arguments of NXGetControlParameters(), NXGetShmem-
-  Parameters() and NXGetUnpackParameters() to end up with valid data
-  also in the case of a display failure.
-
-- Converted the coordinates in the X_PolyFill requests to relative
-  mode. This makes all the requests independent from the origin and
-  helps the caching by the proxy.
-
-nxagent-3.0.0-46
-
-- Don't print the 'Display failure' message on a SIGTERM.
-
-- Ensure that the NX transport is shut down after the 'Terminating
-  session at...' message if the session is killed by the user.
-
-- Let the agent filter the error output by setting the OsVendorVEr-
-  rorFProc function pointer.
-
-- Give the possibility to the agent to redirect the standard error
-  during a Popen() or a System() by setting the OsVendorStartRedir-
-  ectErrorFProc and OsVendorEndRedirectErrorFProc function pointers.
-
-- Fixed a problem in nxagentPolyFillRect() not properly propagating
-  to the destination.
-
-- Added nxagentPolyFillRect() and nxagentGlyphs() among the funct-
-  ions increasing the pixmaps usage counter.
-
-- Cleaned up some of the FIXME related to the lazy encoding.
-
-nxagent-3.0.0-45
-
-- Use the three distinct functions in nxcompext to query the state
-  of the display connection.
-
-- Terminate gracefully on a fatal server error by printing the fol-
-  lowing in the session log:
-
-  Error: Aborting session with 'Error text...'.
-  Session: Aborting session at '...'.
-  Session: Session aborted at '...'.
-
-- Removed more debug messages from the session log.
-
-nxagent-3.0.0-44
-
-- Guess whether to compress an image with a lossless encoder based
-  also on the width and height, not only on size.
-
-- Corrupted pixmaps used as tiles propagate the dirty area when they
-  are involved in a PolyFillRect() operation.
-
-- On link settings ADSL to LAN, images are not split in tiles to bet-
-  ter fill all the available bandwidth.
-
-- Pixmaps referenced often as source in deferred operations or used
-  as backgrounds, are now synchronized as long as when the network
-  congestion level remains 0.
-
-- Use nxagentPaintWindowBorder() to update the window's border in
-  the framebuffer.
-
-- Fixed a problem with the new handling of the X_RenderChangePicture
-  requests that caused the text to be erroneously clipped.
-
-nxagent-3.0.0-43
-
-- Don't pass the uid of the shared memory segment to the nxcompshad
-  library if it can't be retrieved from the options.
-
-- Fixed the new handling of the RenderChangePicture requests to work
-  on 64 bit platforms.
-
-nxagent-3.0.0-42
-
-- Added support for the 'lossy', 'lossless' and 'adaptive' pack me-
-  thod literals. These values activate the dynamic selection of the
-  pack method by the agent.
-
-- Use the newer constant PACK_NONE instead of NO_PACK.
-
-nxagent-3.0.0-41
-
-- Fixed a bug in the disconnection procedure introduced with the new
-  handling of the display events.
-
-- Realize the XRenderChangePicture() request only if a change of the
-  remote picture's attributes is detected.
-
-nxagent-3.0.0-40
-
-- Dynamically select a lossy or a lossless encoder based on the num-
-  ber of pixels that appear to be different in the image.
-
-- Use the new PACK_BITMAP_16M_COLORS image encoding. Handle the case
-  when the packed image data points at the same data as the original
-  image. This is useful to save a copy.
-
-- The PACK_BITMAP_16M_COLORS method is now the default for lossless
-  encoding.
-
-- Don't use compression for the alpha channel. This is also intended
-  to better leverage the stream compression.
-
-nxagent-3.0.0-39
-
-- The nxagentComposite() function doesn't check the source and mask
-  synchronization status, but defers the XRenderComposite() operation
-  by checking the defer level only.
-
-- If the target of an XCompositeText() function is an hidden window,
-  the operation is prevented.
-
-- Passing the uid of master X server process to nxcompshad library.
-
-- Before the call of XRenderAddGlyphs(), call the new library function
-  XRenderCleanGlyphs() cleaning the padding bytes of data section of
-  request.
-
-nxagent-3.0.0-38
-
-- Don't warp the cursor if the requesting client is a shadow agent.
-
-- Changed a call to NXFlushDisplay in order to align to nxcomp version
-  3.0.0-15.
-
-- Updated the NoMachine icon file.
-
-- Changed Agent.h in order to include NX version of Xlib.h avoiding
-  missing declarations.
-
-- If the NXDisplayCongestion notifies an optimum congestion state,
-  the continuous user input, due to unreleased buttons/keys, doesn't
-  break the drawable's synchronization.
-
-- Renamed the option 'block' as 'tile'.
-
-- Implemented a way to guess if the destination drawable of a copy
-  area is a popup window. In such a case, the source is synchronized
-  before doing the copy to avoid ugly effects like text items floating
-  on an invisible background.
-
-- In order to reduce the number of clip mask changings, if the clean
-  region of a corrupted source drawable is formed by a single rectan-
-  gle, its coordinates are used to change extents and position of the
-  area involved in the copy area operation.
-
-- Fixed a crash caused by a reference to a resource table freed by a
-  table rebuilding. This was happening because during the pixmap re-
-  connection some new GC resources went beyond the resource table li-
-  mit, causing a table relocation. As a general rule, a function loop-
-  ing across a resource table should not add or remove resources.
-
-nxagent-3.0.0-37
-
-- To improve the efficiency of the algorithm deferring the trapezoid
-  operations, the composite does not propagate the glyphs flag to
-  the destination.
-
-- Moved the replacement of XCheckIfEvent() to nx-X11 with the name
-  XCheckIfEventNoFlush().
-
-nxagent-3.0.0-36
-
-- Changed nxagentDisplayFlushHandler() according to the new semantic
-  of the handler. The function is called by nxcomp when new data is
-  sent to the remote proxy.
-
-- After the flush handler is called, use NXQueryDisplay() with query
-  type NXDisplayCongestion to update the congestion flag.
-
-- Modified the boxes list defragmentation to merge only those rectan-
-  gles which fully overlap.
-
-- During the synchronization loop the nxagentDispatchHandler() takes
-  care of reading the enqueued events, while the nxagentUserInput()
-  checks only for state changes due to a processed key/button event.
-
-- Set the display output buffer size according to the link type.
-
-- Removed the congestion and synchronization callbacks.
-
-nxagent-3.0.0-35
-
-- In order to avoid the lossy encoding of text regions, the nxagent-
-  GlyphsExtents is computed even if the mask format is not specified.
-  In this case, the render implementation was not calculating the ex-
-  tents of composite text operation, whose coordinates are useful only
-  to build a mask pixmap.
-
-nxagent-3.0.0-34
-
-- Removed message 'Could not init font path element' from the output.
-
-- Moved initialization of picture support before the call to miDCInit-
-  ialize in the screen opening procedure. This is because miDCInitial-
-  ize calls DamageSetup that wraps the picture screen functions.
-
-- Implemented FR05E01686. Added option 'menu' enabling/disabling the
-  pulldown menu in the rootless agent.
-
-- Added a flag to each drawable to record if they have been the dest-
-  ination of a glyph operation. This is used to skip the deferral of
-  some operations (e.g. render trapezoids) if they can cause the
-  drawable to be synchronized using a lossy encoding.
-
-- The render trapezoids are deferred if the operation falls inside
-  a dirty region or if the destination drawable does not contain
-  glyphs.
-
-- Imported the NXmitrap.c file from render directory.
-
-- Improved the algorithm queuing multiple writes across a proxy
-  flush.
-
-nxagent-3.0.0-33
-
-- Read the event queue after each request processed. Doing this
-  is expensive but it seems to work best.
-
-- Don't split the big trapezoid requests. Splitting the requests
-  doesn't seem to provide any benefit with the clients tested.
-
-- By defining BLOCKS in Handlers.c, Events.c and NXdispatch.c, log
-  the begin and end of the most sensitive routines.
-
-nxagent-3.0.0-32
-
-- Use NXSetDisplayWriteHandler() to register a callback invoked
-  by Xlib after some data is written to the display socket. This
-  callback allows the agent to better determine when it is time
-  to send the sync requests.
-
-nxagent-3.0.0-31
-
-- The operation of adding glyphs to remote glyphset has been defer-
-  red, in order to avoid to add unused glyphs. When a composite text
-  operation looks for a certain glyph, if it has not been added to
-  the selected glyphset, an XRenderAddglyphs is requested.
-
-- The forced synchronization timeout is now dependant on link type.
-
-- Force the mi to process the events just after having processed
-  any input.
-
-- Added an experimental 'hard' sync request intended to wait for
-  the X server to complete an image operation. This also affects
-  the agent only when the NX transport is not running.
-
-- Added a synchronization mechanism intended to let the agent de-
-  tect if the X server is not able to process its input when the
-  NX transport is not activated. The algorithm uses asynchronous
-  X_GetInputFocus replies to minimize the impact of latency on
-  slow connections. A new request is sent at any given amount of
-  bytes read from our clients. When the number of pending replies
-  is exceeded, the agent stops accepting additional requests and
-  waits for the remote until the number of pending replies returns
-  below the limit. Note that when the NX transport is running, the
-  algorithm is disabled to not interfere with the proxy's own
-  token-based flow control.
-
-- Added the nxagentDispatchHandler() function. It is called by the
-  dispatcher after a client's request has been processed.
-
-- Added the nxagentWaitEvents() function. It blocks waiting for
-  more input with an optional timeout. It handles the case when
-  the NX transport is not running and is able to recover gracely
-  from a display failure by returning the error.
-
-- Replaced most of the code that was relying on NXTransContinue()
-  to use the new function.
-
-- Moved the new event-related functions to Events.h and Events.c.
-
-- Disabled the code raising the splash screen at reconnection.
-
-- Reverted change done in 3.0.0-8 version, dealing with expose events
-  not having entries in the queue. They are not collected in a global
-  region but sent immediately.
-
-nxagent-3.0.0-30
-
-- Let the block handler check if there are events queued after the
-  flush before entering the select.
-
-- Changed the dispatch loop to read the incoming events more often.
-
-- Added the nxagentReadEvents() and nxagentCheckEvents() functions.
-  Differently from XCheckIfEvent(), nxagentCheckEvents() doesn't
-  flush the output buffer if no event is available. nxagentReadEv-
-  ents(), instead, it's like XEventsQueued() but forces the use of
-  the QueuedAfterReading mode. These functions should be used when-
-  ever XEventsQueued() and XCheckIfEvent() would be required.
-
-- The nxagentQueuedEvents() macro uses XQLength() to return the
-  number of events that have been read and need to be dispatched.
-
-- The nxagentPendingEvents() function returns true if there is any
-  event queued. If not, it queries the transport to find if more
-  events can be read.
-
-- Ripristinated the code preventing the agent to connect to its own
-  display. The code was disabled while migrating to the new tree.
-
-- Removed the dependencies from the NXAGENT_QUERYBSIZE, NXAGENT_NO-
-  EXPOSEOPTIMIZE and NXAGENT_ONEXIT. Removed the unused code.
-
-- Removed more unused code in Clipboard.c.
-
-- The shadow agent calls NXShadowDestroy before exiting.
-
-- Reverted a change done in 3.0.0-8 dealing with expose events. If the
-  result of the subtraction is not sent immediately, some duplicated
-  refresh is shown.
-
-nxagent-3.0.0-29
-
-- The splash screen is removed as soon as the session is started in
-  the case of shadow session.
-
-- The rules to verify when the synchronization loop can be stopped
-  are specified by means of a bitmask passed as parameter to synch-
-  ronization functions.
-
-- The glyphsets are no longer reconnected during a session resuming,
-  but only when they are used.
-
-- Initialized the timeout parameter in block handlers in case of NULL
-  value.
-
-- Added option 'block' to specify the size of image slices sent during
-  the synchronization.
-
-- Fixed a memory leak in nxagentParseOptions().
-
-nxagent-3.0.0-28
-
-- Improved the nxagentGetOptimizedRegionBoxes() function to optimize
-  the high fragmented rectangle lists.
-
-- When resizing nxagent window the fictitious resize for all top level
-  windows, triggering the window tree validation, is not executed if
-  rootless mode is off.
-
-- The nxagentInputWindows cannot be resized in rootless mode because
-  they are not created.
-
-- Added NXdamage.c to the source files.
-
-- Changed damage's GCOps functions drawing text. This was needed be-
-  cause the original functions didn't call agent GCOps if the drawable
-  was registered for damage events.
-
-nxagent-3.0.0-27
-
-- Fixed TR04E01677. Changed the reconnection procedure to call the
-  function destroying the NoMachine splash window. It rarely happened
-  that the splash window was not removed after resuming a session.
-
-- Ignored the ForceScreenSaver requested by X clients to avoid clashes
-  with our screen saver handling.
-
-- Cleanup of code handling the screen saver timeout to remove referen-
-  ces to the old drawable's synchronization method.
-
-- Fixed TR04E01664. The session is terminated instead of suspended if
-  the auto-disconnect timeout expires and the persistence is not allo-
-  wed.
-
-- Reverted an optimization in nxagentCheckWindowConfiguration() in
-  order to avoid inconsistencies in the stacking order.
-
-- Fixed a segmentation fault in rootless mode.
-
-nxagent-3.0.0-26
-
-- Some fixes to build in the Cygwin environment.
-
-nxagent-3.0.0-25
-
-- Renamed the option 'lazylevel' to 'defer'.
-
-- Added a flag to windows to know if they have transparent children,
-  in order to reduce to minimum the put images on windows covered by
-  their children.
-
-- Created a generic list of graphic contexts, used when synchronizing
-  drawables between the nxagent and the remote X server. All the GCs
-  are created with IncludeInferiors property. This solves problem when
-  trying to synchronize windows covered by children with transparent
-  backgrounds.
-
-- The nxagentUserInput checks if keys are pressed.
-
-- Fixed some memory leaks.
-
-- In shadow mode, removed the handling of events of the source display
-  from the code. They can be handled in the nxcompshad library.
-
-- In shadow mode, allow the synchronization loop to break in case of
-  input event.
-
-- Moved the call to miDCInitialize after the initialization of poin-
-  ters to screen functions. This was needed to make DAMAGE work pro-
-  perly.
-
-- In shadow mode, not breaking the polling if a mouse button is down.
-
-- In shadow mode, allow events to break the loop sending updates.
-
-- At reconnection the input window is raised after the root window is
-  mapped.
-
-- Fixed an invalid read. The call to the function nxagentSetInstalled-
-  ColormapWindows() has been moved from nxagentDestroyWindow to Dele-
-  teWindow.
-
-nxagent-3.0.0-24
-
-- The corrupted drawables are added to dedicated lists of resources
-  to speed up the synchronization process.
-
-- The nxagentUserInput checks if a mouse button is pressed.
-
-- Created the nxagentGetScratchGC which resets the scratch GCs to de-
-  faults values also on the remote X server.
-
-- The synchronization cycle is forced when a timeout expires, albeit
-  the remote display is blocked.
-
-- Added a parameter to synchronization functions to specify if loops
-  can break. It's useful to force the synchronization in some circum-
-  stances.
-
-- Keystroke CTRL-ALT-R is enabled in shadow mode too. It is used to
-  switch scaled and non-scaled modes.
-
-- Some changes to adjust the window position.
-
-- Moved some macros to Misc.h.
-
-- Some changes to adjust the behaviour of scaling feature in case of
-  resize and switch to full screen.
-
-- Freeing the buffer used for scaling if no needed anymore.
-
-nxagent-3.0.0-23
-
-- Fixed TR02E01648 and TR10D01534. Changed pointer motion events han-
-  dling. In desktop mode the nxagent creates a InputOnly window that
-  collects the MotionNotify events. This window is mapped over the
-  root window. In rootless mode the nxagent creates all windows on
-  real X server with PointerMotionMask.
-
-- Not exiting from the block handler with zero timeout if drawables to
-  be synchronized are pixmaps only.
-
-- Reduced the margin around the glyph extent from 5 to 3 pixels.
-
-nxagent-3.0.0-22
-
-- Fixed initialization of XImage used for scaling.
-
-- Changes to fix the position of the shadow main window.
-
-nxagent-3.0.0-21
-
-- Moved the implementation of scaling feature in nxagentRealizeImage.
-
-- Disabled log message 'Font not found' in Font.c.
-
-- The synchronization loop is called inside the BlockHandler. Synch-
-  ronization goes on until the display is not blocked.
-
-- Exiting the BlockHandler with timeout zero if corrupted drawables
-  have not been synchronized because of blocked display connection.
-
-- Changed the synchronization loop to slice the dirty regions.
-
-- The updates by shadowing nxagents are now sent using the lazy me-
-  chanics: the remote buffer pixmap is marked as dirty, then synch-
-  ronized.
-
-- Traversing the tree to synchonize windows.
-
-nxagent-3.0.0-20
-
-- Fixed a bug in the nxagentGetOptimizedRegionBoxes() function which
-  was causing a bad merging of boxes.
-
-- Added a margin of 5 pixels around the glyphs extents before synch-
-  ronizing them.
-
-- The synchronization cycle has been reactivated for the first lazy
-  level, in order to synchronize the window's background.
-
-- The CopyArea between pixmaps doesn't mark the full destination as
-  corrupted, but clips the operation with the synchronized area of the
-  source as happens for the windows.
-
-- Implemented scaling feature for the shadow agent. To do: run-time
-  control of this feature by keystrokes and window resize; adapting
-  the window size to the scaled dimensions.
-
-- Setting the shadow session scaling ratio equal to the size chosen
-  from the user divided by the size of the main session.
-
-- Scaled mouse motion events according with the ratio.
-
-- Implemented the nxagentScaleImage() function.
-
-- Updated version number and copyright in the output log.
-
-- Fixed TR06D01390. When resizing nxagent window, we make a fictitious
-  resize for all top level windows, in order to trigger the window
-  tree validation.
-
-nxagent-3.0.0-19
-
-- Force LazyLevel to 0 in case of shadowing session.
-
-- If shadowing poller returns that nothing is changed and no updates
-  have to be sent, call WaitForSomething select with 50 ms timeout.
-
-- The shadow agent doesn't break the sending of updates in case of
-  mouse motion events.
-
-- The scratch GC's clip mask was not cleared during a drawable synch-
-  ronization. Now the GetScratchGC() function is called after changing
-  the nxagentGCTrap flag.
-
-- Implemented the function nxagentGetOptimizedRegionBoxes(). It gets
-  the list of boxes forming a region and operates on it to merge as
-  much boxes as possible, checking their width and position.
-
-- Implemented the function nxagentClearRegion(). It does an XClearA-
-  rea() for each box belonging to a region, using the color returned
-  by nxagentGetCorruptedRegionColor() as background of target window.
-
-- Implemented the function nxagentGetCorruptedRegionColor(). It gets
-  the color of first outer pixel in the bottom right corner of re-
-  gion.
-
-- Fixed some memory leaks.
-
-- Checked and removed some FIXME concerning the lazy encoding.
-
-- Fixed and added some debug messages in Render.c, GC.c and GCOps.c.
-
-- Added to the Literals.h file the Render and Shared memory requests.
-
-nxagent-3.0.0-18
-
-- Changes to comply with nxcompshad library.
-
-nxagent-3.0.0-17
-
-- The master agent holds the number of shadow nxagents connected to
-  itself. The shadow nxagent notify its presence to master nxagent
-  by setting the _NX_SHADOW property.
-
-nxagent-3.0.0-16
-
-- Rearranged the lazy level rules. All the link types now use the lazy
-  level 1: the pixmaps are always corrupted, and they becomes synchro-
-  nized only when they're sources of an operation (i.e. CopyArea, ren-
-  der).
-
-- The lazy levels greater than 1 don't synchronize automatically. It's
-  possible to synchronize with two keystrokes: CTRL+ALT+Z forces the
-  windows synchronization without take care of the congestion; CTRL+
-  ALT+X synchronizes the windows and the background until there is
-  enough bandwidth.
-
-- Only the tile, stipples and glyphs are always synchronized.
-
-- The height of glyphs region has been doubled to obtain a better vi-
-  sual effect after the synchronization.
-
-- Fixed a problem causing the background pixmaps to be used also if
-  they were not fully synchronized.
-
-- Added a function to convert a PolyPoint in a dirty region. The fun-
-  ction is now disabled because it is not advisable to use the exten-
-  ts.
-
-- The XCopyArea is not requested if the clip region is NIL.
-
-- The nxagentPutImage does not update the framebuffer when it is
-  doing a synchronization.
-
-- Moved all the code handling the drawables synchronization in the
-  Drawable.c file.
-
-- As the shared memory pixmaps are never synchronized with the re-
-  mote X server, now they're marked as dirty when they're created.
-
-- An XFillRectangles request now marks the rectangles of the desti-
-  nation drawable as synchronized.
-
-- Fixed a bug that was causing the CopyArea to propagate wrongly the
-  corrupted region on the destination drawable when the GC uses a
-  clip mask.
-
-- Implemented a test function useful to show on the windows all the
-  dirty regions as colored rectangles. It is used with the CTRL+ALT+A
-  keystroke.
-
-- Before sending the XRenderComposite operations (trapezoids, trian-
-  gles, TriStrip, TriFan), the drawables involved are synchronized if
-  they are dirties.
-
-- Changes to shadow mode.
-
-- Moved the code splitting the screen shadowing updates to a separate
-  function.
-
-- Suspend the sending of updates if input is received from the user.
-
-- Make use of callback mechanism implemented in the nxshadow library
-  to suspend screen polling when input is received from the user.
-
-- Flush the display link when requested by the proxy.
-
-nxagent-3.0.0-15
-
-- Print the following info when the screen is resized: "Info: Resized
-  screen [<screen number>] to [<width>x<height>].
-
-- Changes to comply with nxshadow library.
-
-- Fixed the height of screen updates in shadowing mode.
-
-- Terminate cleanly if shadowing initialization fails.
-
-- Split shadowing screen updates in smaller rectangles for slow links.
-
-nxagent-3.0.0-14
-
-- Fixed a compilation error in NXrender.c.
-
-nxagent-3.0.0-13
-
-- Changed the LICENSE file to state that the software is only made
-  available under the version 2 of the GPL.
-
-- Added file COPYING.
-
-- Updated the files imported from X.org to the 6.9.0 release.
-
-nxagent-3.0.0-12
-
-- Fixed compilation on Sun platform.
-
-nxagent-3.0.0-11
-
-- Implemented an algorithm adapting colors if the target display have
-  different depth than the shadowed display. It requires that visuals
-  are TrueColor and depths are 16 or 24 or 32.
-
-- Added the option shadowmode. If this option is '0' the shadowing
-  session doesn't interact with the attached session.
-
-nxagent-3.0.0-10
-
-- Changes to comply with the nxshadow component.
-
-nxagent-3.0.0-9
-
-- Applied changes to files imported from X.org sources.
-
-- Updated copyright notices to the current year.
-
-nxagent-3.0.0-8
-
-- Imported changes up to nxagent-2.1.0-17.
-
-- Fixed problem with font path on Solaris 10.
-
-- Disabled some log messages.
-
-- If the agent has blocked when trying to write to the display, try to
-  read other events from the connection.
-
-- After synchronizing expose events, the result of subtraction is not
-  sent immediately, but added to a region. Expose events will be for-
-  warded to clients after exiting from the event loop.
-
-- Critical output is set when button mouse events are received.
-
-- Fixed TR12D01584. X11 sessions could not be started on Mandriva Li-
-  nux 2007 because of a different location of fonts. The font path
-  used by this distribution is now added to the alternates font paths.
-
-- Fixed TR11D01550. Modified the collection of visuals when nxagent
-  opens a display. Now we only use the ones with the same depth than
-  the default one set in the screen.
-
-- Modified the reconnection of pict-format structures, to avoid an
-  error that arises when migrating a session by a Linux machine to
-  a Windows one.
-
-- Small changes in handling of expose events.
-
-- GraphicsExpose are no more forwarded to clients immediately. They
-  are merged with remote-only exposures and sent later.
-
-- Invalidated expose queue elements dealing with destroyed windows.
-
-- Cleaned up code in nxagentSynchronizeExpose().
-
-- Fixed TR10D01541. Now when destroing a window if lastClientWindowPtr
-  point to this window then in nxagentClearClipboard() we put nxagent-
-  ClearClipboard to NULL and lastClientStage to SelectionStageNone.
-
-- Fixed a problem with LazyLevel option that wasn't correctly read
-  from command line.
-
-- Fixed an arithmetic exception raised when the viewable corrupted
-  region is empty but not nil.
-
-- Removed the obsolete 'sss' option.
-
-- Fixed a warning related to the expose queue.
-
-- Modified the queue of exposed region to remove some memmov() calls.
-
-- Remote expose events not having entries in the queue are collected
-  in a global region and sent later, instead of being sent immediate-
-  ly.
-
-- Changed nxagentCheckWindowConfiguration() to prevent unuseful calls
-  to XQueryTree().
-
-- Fixed TR10D01530. Fixed an invalid write in doOpenFont().
-
-- Fixed some invalid write/read in nxagentVerifyDefaultFontPath().
-
-- Fixed TR10D01518. If needed, a restack is performed on the top level
-  windows in rootless mode.
-
-- Fixed TR10D01520. Reviewed session termination and log messages in
-  the case of indirect XDMCP.
-
-- In PictureCreateDefaultFormats(), cleaned the PictFormatRec struct
-  when the format is not supported.
-
-- Fixed TR09D01498. As it is possible to use multiple paths where to
-  store the fonts, now the agent concatenates all the existing font
-  paths used in various XFree/Xorg distributions to obtain a unique
-  default font path.
-
-- Fixed TR09D01502. The privates of the real pixmap are initialized
-  before trying to allocate a virtual pixmap, avoiding the possibility
-  to access an inconsistent structure in case the allocation fails.
-
-- Fixed a memory leak due to a missing deallocation of a virtual pix-
-  map's region.
-
-- Fixed TR08D01486. Removed a warning in NXrender.c.
-
-- Implemented FR08D01470. Now in the reconnection phase missing fonts
-  are replaced by the most similar picked among the available ones.
-
-- Fixed TR08D01480. A condition inside the nxagentWindowExposures
-  function was ignoring the possibility that the first region para-
-  meter could be a null region.
-
-- Fixed TR06D01409. Now NXCollectGrabPointer() is called with the
-  owner_events true in ActivatePointerGrab() .
-
-- Fixed TR03D01317. Increased the time after wich the session termina-
-  tes.
-
-- Fixed TR08D01475. In rootless, ConfigureWindow requests are only
-  forwarded to the X server, even if no window manager has been detec-
-  ted.
-
-- Fixed TR04D01367. An XKB event is sent to notify that keyboard map-
-  ping has changed.
-
-- Check the number of regions in the list before running nxagentSynch-
-  ronizeExpose().
-
-- Reduced the number of GCs used during the drawable synchronization.
-
-- Optimized the corrupted region synchronization trying to use the
-  extents is some circumstances instead of split the full region.
-
-- Checked and removed some FIXME.
-
-- Fixed TR05D01384. Xgl server uses less picture formats than nxagent
-  usually does. Now the PictFormat structures used by nxagent are fil-
-  tered with the ones available for the real display.
-
-- Fixed TR06D01410. Function nxagentRestoreAreas have to make use of
-  a GC with subwindow mode ClipByChildren for preventing from repaint
-  also children of restored window. Children are restored in a separ-
-  ate call, if they have backing store on.
-
-- Fixed TR07D01426. The cursor data were swapped in place if the dis-
-  play had different bitmap bit order. Let Xlib do this work on a copy
-  of the image, preventing from messing up the original data.
-
-- Fixed TR07D01450. Some fonts were missing in the list of available
-  fonts because the ListFonts pattern used to build this list was too
-  much generic. To build a full font list two different patterns have
-  been used.
-
-- Fixed TR07D01449. Some X clients might affect the X screen saver
-  functioning modifying the default properties. The SetScreenSaver
-  request now correctly checks the parameters changes to avoid any
-  issue.
-
-- Fixed TR07D01432. X11 sessions could not be started on Debian 'Etch'
-  because of a different location of fonts. The font path provided by
-  the Debian Policy is now added to the alternates font paths.
-
-- Fixed TR07D01437. The auto suspend timer was reset when it should
-  not.
-
-- Fixed a conditional jump on uninitialised value.
-
-- Fixed TR05D01380. Now migrating a session when display have a 16-bit
-  depth does recover all visuals, avoiding reconnection failure.
-
-nxagent-3.0.0-7
-
-- Fixed problems occurring when the main session is terminated and the
-  connection is refused to the shadow agent.
-
-- Fixed include directory order for Solaris.
-
-nxagent-3.0.0-6
-
-- The shadow agent works only in viewport mode.
-
-- Added nxagentShadowCreateMainWindow function. This function creates a
-  pixmap and a window for mirroring the display root window.
-
-- Added NXShadowUpdateBuffer() function in order to create the buffer
-  for the poller with the same sizes of the root window of the master
-  agent.
-
-- Added NXxrandr.c NXxrandr.h and NXxrandrint.h files.
-
-- If the main agent screen is resized, the shadow agent adapts to the
-  new size of the root window.
-
-- Changed option activating mirror to -S.
-
-- Removed usleep() call when the agent is suspended.
-
-- Input events are sent to the main session even if it is in sus-
-  pended state.
-
-- Updates are made from top to bottom.
-
-- Added the option IgnoreVisibility. If this option is set, PutImage
-  is not skipped when the window is fully obscured.
-
-- Added the option 'shadow' saying the display to attach.
-
-nxagent-3.0.0-5
-
-- Added the mirror mode. It is activated by -M option.
-
-- Recovered the state of keys when the agent in access mode loses
-  focus in mirror mode.
-
-- Changes to work with 16-bit depth display in mirror mode.
-
-- Changed the Imakefile in order to include NXaccess.h and NXaccess-
-  Event.h files.
-
-- The layout keyboard is passed to NXShadowCreate() function in order
-  to load the right keymap file in mirror mode.
-
-nxagent-3.0.0-4
-
-- Small changes to build on 64 bit x86 platform.
-
-nxagent-3.0.0-3
-
-- Fixes to build on Cygwin platform.
-
-- Change the order of include directories in Imakefile.
-
-- Renamed GC.h, Window.h and Pixmap.h to avoid name clashes.
-
-- Undefined NXAGENT_UPDRADE in Composite.c and NXcomposite* files.
-
-- Defined ddxBeforeReset() in Init.c.
-
-nxagent-3.0.0-2
-
-- Merged changes to NXdispatch.c, NXdixfonts.c, NXmiwindow.c, NX-
-  picture.c, NXproperty.c, NXrender.c, NXresource.c, NXwindow.c.
-
-nxagent-3.0.0-1
-
-- Opened the 3.0.0 branch based on nxagent-2.0.0-88.
-
-nxagent-2.0.0-88
-
-- Fixed a memory leak in the code handling the remote font list.
-
-- Removed some log message.
-
-nxagent-2.0.0-87
-
-- The box size is checked during the region synchronization to avoid a
-  possible arithmetic exception.
-
-nxagent-2.0.0-86
-
-- Checked the validity of the colormap in nxagentChangeWindowAttri-
-  butes().
-
-nxagent-2.0.0-85
-
-- Fixed the bad destination coordinates of shared memory pixmap synch-
-  ronization in nxagentCopyArea() and nxagentCopyPlane() functions.
-
-nxagent-2.0.0-84
-
-- Discard the Terminate Server key sequence Ctrl-Alt-BackSpace.
-
-nxagent-2.0.0-83
-
-- Added a workaround to prevent the use of an inconsistent client poi-
-  nter in the nxagentNotifyConvertFailure() function.
-
-nxagent-2.0.0-82
-
-- Fixed the parsing of option 'backingstore'.
-
-nxagent-2.0.0-81
-
-- The agent window visibility on the real X server is used together
-  with the internal state to decide if graphics operations can be
-  avoided.
-
-- When restoring areas, if the backing pixmap is corrupted, an expose
-  event is sent to the region that can't be restored.
-
-nxagent-2.0.0-80
-
-- The core protocol requests internally used to accomplish a Render
-  extension request are no longer propagated to the real X server. To
-  be more precise in this way we can save many XCreatePixmap, XChange-
-  GC and XSetClipRectangles.
-
-- Corrected a minimal incoherence in nxagentCopyArea in managing the
-  creation and deallocation of a region.
-
-- Fixed a double synchronization of an aged drawable during a put ima-
-  ge operation, due to a missing check of nxagentSplitTrap value.
-
-- Added the VisibilityChangeMask bit to the event masks.
-
-- Improved the algorithm which prevents the server client's resource
-  duplication.
-
-nxagent-2.0.0-79
-
-- Added the 'lazylevel' option usable in the command line to specify
-  how much the Agent should be lazy. The default level is 2. Each
-  level adds the following rules to the previous ones:
-
-  Level 0  The lazy is off.
-
-  Level 1  The put images are skipped if we were out of bandwidth,
-           unless that the destination drawable has an old corru-
-           pted region.
-
-  Level 2  No data is put or copied on pixmaps, marking them always
-           as corrupted and synchronizing them on demand.
-
-  Level 3  The put images over the windows are skipped marking the
-           destination as corrupted. When a copy area to a window is
-           requested, the source is synchronized before copying it.
-
-  Level 4  The source drawable is no longer synchronized before a
-           copy area, but the operation is clipped to the synchro-
-           nized region.
-
-- Implemented a dynamic synchronization mechanism, based on user ac-
-  tivity: if the input devices are not used for a variable amount of
-  time (depending from the configured link type), the synchronization
-  starts and goes on until there is enough bandwidth.
-
-- Minor fixes to the way the copy area propagates the corrupted re-
-  gion.
-
-- Whenever a put image is done, a full synchronization is forced on
-  the destination drawable if it has an old corrupted region.
-
-- During the overall synchronization a drawable is skipped if its
-  timestamp is lower than the synchronization interval.
-
-- Updated the copy plane to skip the operations from a corrupted pix-
-  map to another pixmap.
-
-- Fixed the pixmaps synchronization which was not checking the avai-
-  lable bandwidth.
-
-- In rootless mode, ConfigureWindow requests are not internally per-
-  formed for top level windows if a window manager is running. Anyway
-  they are forwarded to the X server.
-
-- Enabled the DPMS extension.
-
-- Fixed the -dpi option.
-
-nxagent-2.0.0-78
-
-- When the remote proxy supports the alpha encoding, the alpha data
-  is sent compressed. When connected to an old version, the agent
-  uses the NXSetUnpackAlphaCompat() call.
-
-- Added support for the RLE pack method.
-
-nxagent-2.0.0-77
-
-- Fixed the check for special keystrokes. State mask for Alt and Meta
-  keys are inferred from the X server modifier map.
-
-nxagent-2.0.0-76
-
-- Fixed application icon in rootless mode.
-
-- If SYNC_WHOLE_GLYPH_DRAWABLE is set in Render.c the whole drawables
-  used in the composite glyphs are synchronized. This is useful to
-  evaluate the policy we should use to minimize the put images.
-
-- Code cleanup in Pixmap.c concerning the synchronization functions.
-
-- Added the nxagentSynchronizeBox() function.
-
-- Setting a wide band link (ADSL, WAN, LAN) disables Lazy and Strea-
-  ming options.
-
-- Now the Lazy option can be switched by the Ctrl+Alt+E keystroke.
-
-- Set a timestamp on a drawable to verify how much old its data are.
-  If we didn't update it since two seconds, the put image operations
-  are not skipped.
-
-- The image data split in chunks smaller than a threshold is now mo-
-  ved from the nxagentPutImage() to the nxagentRealizeImage() func-
-  tion. If a chunk is going to be put on an hidden area of a window,
-  the operation is skipped.
-
-- Fixed the value assigned to the id of the alpha visual. Now it is
-  assigned by XAllocID().
-
-- Removed a call to XSetInputFocus() before mapping the default win-
-  dows.
-
-- Restored the backup display pointer when failing to reconnect the
-  display.
-
-- Fixed some return value in the options parser function.
-
-- Fixed the parsing of environment variable.
-
-nxagent-2.0.0-75
-
-- Optionally split the long X_RenderTrapezoid requests in multiple
-  messages to help the compression.
-
-nxagent-2.0.0-74
-
-- Fixed a bug preventing the reconnection of pictures.
-
-- Fixed the way the agent notify its start up to NX Client. Now the
-  ownership of agent atom is set before the reconnection of pixmaps.
-
-nxagent-2.0.0-73
-
-- Added a check on the display pointer in nxagentTerminateDisplay()
-  to ensure that we don't try to force an I/O error if the display
-  is already down.
-
-- The image operations now are clipped to the visible area of the
-  drawable. As this may hamper the caching algorithm, only source
-  images bigger than 32K are clipped.
-
-- Code cleanup in Render.c.
-
-- When setting SKIP_LOUSY_RENDER_OPERATIONS in Render.c the realiza-
-  tion of some operations is skipped. This is useful to determine
-  how clients (mis)use the RENDER extension to achieve even worse
-  performance than they were able to achieve using the core protocol.
-
-nxagent-2.0.0-72
-
-- Ensured that SIGUSR1 and SIGUSR2 are ignored if the NX transport
-  is not running.
-
-nxagent-2.0.0-71
-
-- Modified the following messages used to track the session state:
-
-  From: "Session: Session starting at..."
-  To:   "Session: Starting session at..."
-
-  From: "Session: Session terminating at..."
-  To:   "Session: Terminating session at..."
-
-nxagent-2.0.0-70
-
-- Removed the obsolete 'Info' messages related to the 'fast' versus
-  'slow' copy area and get image modes. The -slow and -fast options
-  are now ignored as ignored are the keystrokes that allowed switch-
-  ing between the two modes.
-
-- Removed more obsolete warnings and commented the logs left around
-  for test purposes.
-
-- Removed the code in NXdispatch.c handling the fake get-image.
-
-- Removed the flags related to the use of the frame-buffer.
-
-- Major code cleanup in GCOps.c, Window.c, GC.c, Pixmap.c, Screen.c.
-
-nxagent-2.0.0-69
-
-- Added a check to avoid parsing an empty DISPLAY variable.
-
-- Added parsing of the 'streaming' option.
-
-- GetTimeInMillis() function is compiled only if DDXTIME is defined,
-  to avoid double definition errors on Solaris platform.
-
-- Messages "Suspending session..." and "Session suspended..." are not
-  printed if the DE_TERMINATE dispatch exception is set.
-
-- When synchronizing the shared memory pixmaps the image is no longer
-  put on the framebuffer.
-
-- Code cleanup in the nxagentSynhronizeRegion() function.
-
-- Added the 'lazy' option to enable or disable the lazy policy. It is
-  activated by default. At the moment this is configured at compile
-  time and can't be changed through a command line or the option file.
-
-- Fixed the counter of the corrupted backgrounds by checking if the
-  pixmap was already marked.
-
-- The option SharedPixmaps is now activated by default.
-
-- Fixed a problem when synchronizing the shared memory pixmaps with
-  the operation being erroneously skipped.
-
-nxagent-2.0.0-68
-
-- If we are doing a copy area to a pixmap and the source drawable is
-  not synchronized, the destination is marked as corrupted and the co-
-  py area request is not propagated to the X server. As a general rule
-  the source drawables are now synchronized only when they are copied
-  to a visible window.
-
-- The nxagentSynchronizeRegion() function synchronizes the region one
-  box at a time. This solves the incorrect pictures synchronization.
-
-- When a new element is added to the list of exposed region, sending
-  the synchronization request to the X server is postponed to the next
-  call of nxagentFlushConfigureWindow().
-
-nxagent-2.0.0-67
-
-- Ensured that NXTransDestroy() is called when getting rid of the NX
-  transport.
-
-nxagent-2.0.0-66
-
-- The various messages used by the NX server to control the state of
-  the session have been changed and the NX server will have to be mo-
-  dified accordingly.
-
-  At the early startup the agent will print the following message:
-
-  "Info: Agent running with pid '...'."
-
-  Followed by:
-
-  "Session: Session starting at '...'."
-
-  The ellipsis here represent the current timestamp, as reported by
-  the POSIX function ctime():
-
-  Example: Mon May 22 15:07:11 2006.
-
-  After the connection to the remote display has been established,
-  the agent will print the following message:
-
-  "Session: Session started at '...'."
-
-  This replaces the old messages:
-
-  "Info: Session started, state is [SESSION_UP]."
-
-  Or:
-
-  "Info: XDMCP session started, state is [SESSION_UP]."
-
-  And:
-
-  "Info: Entering dispatch loop with exception 0x0."
-
-  If the display connection can't be established, due to a network
-  failure, for example, the agent will exit with a fatal error, for
-  example:
-
-  "Fatal server error:
-   Error: Unable to open display 'nx/nx,options=...'."
-
-  This is a special case, as the X server is still initializing and
-  the agent can't intercept all the possible causes of errors.
-
-  When suspending the session, the agent will print one of the fol-
-  lowing messages, depending on the reason of the disconnection:
-
-  "Session: Suspending session at '...'."
-
-  Or:
-
-  "Session: Display failure detected at '...'."
-  "Session: Suspending session at '...'."
-
-  As soon as the disconnection procedure is completed, the agent will
-  notify the server with the message:
-
-  "Session: Session suspended at '...'."
-
-  This message replaces the old message:
-
-  "Session: Session suspended."
-
-  When entering the reconnection procedure, the agent will print:
-
-  "Session: Resuming session at '...'."
-
-  If the session can be successfully resumed, the agent will print:
-
-  "Session: Session resumed at '...'."
-
-  Otherwise, if the display cannot be opened or if the proxy is not
-  able to negotiate the session, the agent will return in suspended
-  mode by printing:
-
-  "Session: Display failure detected at '...'."
-  "Session: Session suspended at '...'."
-
-  At the time the session be terminated, the agent will print:
-
-  "Session: Session terminating at '...'."
-
-  Followed by:
-
-  "Session: Session terminated at '...'."
-
-  This replaces the old message:
-
-  Info: Exiting dispatch loop with exception 0x2.
-
-  The message 'Session terminated at...' should be the last message
-  parsed by the NX server. From that moment on the NX server will
-  wait the agent process to ensure that the cleanup procedures are
-  completed without errors and that the process successfully termi-
-  nates with the exit code 0.
-
-nxagent-2.0.0-65
-
-- Many improvements to the block handler and to the drawable synch-
-  ronization loop.
-
-- Anyway the synchronization loop is skipped, at the moment, to bet-
-  ter test the new copy area implementation. Also all the put-image
-  on pixmaps are skipped, so that the pixmaps are only synchronized
-  on demand.
-
-- Small fix in the put image to always use the region already allo-
-  cated when marking a region as corrupted.
-
-nxagent-2.0.0-64
-
-- The realization of the put image operations now depends on the
-  state of the link, as reported by the proxy through the synchroni-
-  zation handler. If the proxy link is aproaching a congestion, the
-  destination area of the drawable is marked as corrupted and the
-  operation is skipped.
-
-- At the moment the synchronization strategy is quite unsophistica-
-  ted. The drawables are synchronized when a timeout expires in the
-  block handler. The synchronization loop is aborted as soon as the
-  link approaches again the congestion and is restarted at the next
-  timeout.
-
-- Imported miwindow.c from the DIX layer. The code has been changed
-  to prevent miSetShape() from trying to destroy a null region. The
-  bug appears to be related to the backing store but it is unclear
-  if can also affect the sample server. The region is allocated at
-  the beginning of the function only if the backing store is set for
-  the window. Then miSetShape() calls miChangeSaveUnder(), that, in
-  turn, calls miCheckSubSaveUnder(). The latter can change the back-
-  ing store attribute of -some- windows, including, apparently, the
-  window that miSetShape() is processing. miSetShape() then destroys
-  the region if the backing store is set, but it doesn't verify if
-  the region was actually allocated. The problem is fixed by simply
-  adding a check on the pointer.
-
-nxagent-2.0.0-63
-
-- Added the nxagentDisplaySynchronizationHandler() callback. The NX
-  transport uses the callback to report when it is possible synchro-
-  nize the pixmaps and the other X objects that are corrupted or in-
-  complete.
-
-- Fixed nxagentClearSelection() to correctly validate the selection
-  owner before clearing the record.
-
-- Changed the NXGetControlParameters() call to reflect the changes
-  to the reply.
-
-nxagent-2.0.0-62
-
-- At reconnection the pixmap data is sent to the remote X server only
-  in two cases: if the pixmap is associated to a picture (glyphs, for
-  example) or if its depth is 1 (clip masks of GCs). All the other
-  pixmaps are marked as corrupted and synchronized on demand as soon
-  as the drawable is used as a source. This code is not enabled by
-  default and is currently being tested.
-
-- Implemented a new copy area function synchronizing the corrupted
-  region of a drawable before using it as a source.
-
-- Imported resource.c from the DIX. This makes possible to avoid the
-  duplication of the RT_GC, RT_FONT and RT_PIXMAP resource types.
-
-- Added the RT_NX_GC resource type and removed the old code dealing
-  with the reconnection of the GCs used by the GLX extension.
-
-- Fixed a problem in the synchronization of the window background.
-
-- Checked and removed some FIXMEs related to the streaming code.
-
-- Changed nxagentRestoreAreas() to take care of the width of the win-
-  dow's border.
-
-- Changed nxagentSaveAreas() to be independent from the window's pos-
-  ition.
-
-- Called nxagentMapDefaultWindows() before pixmaps' reconnection.
-
-- Changed nxagentMapDefaultWindows() to notify the client about the
-  agent's startup also when running in rootless mode.
-
-- Added the delete and backspace keystrokes to the routine removing
-  duplicated keys.
-
-- Wehn resizing the desktop the clip region of the children windows
-  is clipped to the new size of the root. This fixes a crash occur-
-  ring when resizing the desktop to the minimum height.
-
-nxagent-2.0.0-61
-
-- Changed the extraction of alpha channel from images to be endianess
-  independent.
-
-nxagent-2.0.0-60
-
-- nxagentReleaseSplit() now uses the NXAbortSplit() request to force
-  the proxy to discard the pending splits.
-
-- Added the value of the SharedMemory and SharedPixmaps options in
-  the log, together with the size of the shared memory segment used
-  by the remote proxy.
-
-- Fixed the compilation problem affecting the previous version.
-
-- The location of xkb base directory is checked by calling  _NXGetXkb-
-  BasePath() function.
-
-- Fixed TR05D01371. nxagentVerifyDefaultFontPath() is called only if
-  the default font path is not defined on the command line.
-
-- Removed some log message.
-
-nxagent-2.0.0-59
-
-- Improved the composite text operation to synchronize the regions
-  affected by the operation instead of the whole drawable.
-
-- Updated the copy plane to better propagate the corrupted region
-  to the destination.
-
-- The background pixmaps are synchronized with a deferred strategy.
-  Tiles and stipples are still synchronized as soon as the GC needs
-  to be used.
-
-- Completed the new copy area implementation.
-
-- Shared memory pixmaps are not synchronized after a RenderChange-
-  Picture operation. This needs further testing.
-
-- Added a nxagentNotifyKeyboardChanges() function that sends a Map-
-  pingNotify event to clients when the keyboard is reloaded or re-
-  configured. The SendMappingNotify() function is not used anymore.
-  This hopefully solves the TR01D01284.
-
-- Moved the nxagentResetKeyboard() function in Keyboard.c.
-
-- Checked if the previous sibling of a window is changed before try-
-  ing to restack it. This saves the redundant window configuration
-  requests of the previous version.
-
-nxagent-2.0.0-58
-
-- Before composite glyphs operations, only areas intersecting the
-  glyphs extents are synchronized.
-
-- When a new split resource is allocated, a copy of the GC used by
-  the put image operation is created. Such copy will be safely used
-  by the commit operation even if the original GC is changed or
-  destroyed.
-
-nxagent-2.0.0-57
-
-- Region saved by the backing store and corrupted region of backing
-  store pixmaps are emptied at suspend and resume time. This makes
-  the exposures go to the clients that will redraw their windows.
-
-- Changed the nxagent root window cursor. The cursor of the parent
-  window is used instead of the default 'X' cursor.
-
-nxagent-2.0.0-56
-
-- Rewritten the state machine handling the streaming of the images.
-
-- By calling FatalError(), the normal server shutdown was skipped
-  and left the X server socket in .X11-unix. This happened also if
-  for any reason the agent couldn't complete the session startup.
-  Now the DDX abort routine, if the agent is not exiting because of
-  an exception, calls nxagentAbortDisplay() which closes down the
-  well known sockets.
-
-- Upon a failure of the reconnection procedure, if the alert shown
-  to the user by leveraging the proxy control channel is not set
-  to a valid code, the function in will use a default.
-
-nxagent-2.0.0-55
-
-- Added an explicit link flush in the display block handler. The
-  block handler should now be called by nx-X11 before entering the
-  select, not only the the agent has entered WaitForReadable() or
-  WaitForWritable().
-
-- Removed the checks on the value of the Streaming option. The way
-  a drawable is treated only depends from its previous state.
-
-- Started reimplementing the copy area operation to better propaga-
-  te the corrupted region to the destination.
-
-- Shared pixmaps are now synchronized before a copy plane operation.
-
-- The unpack alpha is discarded before the drawable synchronization.
-  This fixes the problems with the synchronization of the cursor. A
-  better way to deal with the condition is to be considered for the
-  future.
-
-- Added a check in the nxagentPutImage() function to skip the opera-
-  tion if the window is fully obscured.
-
-nxagent-2.0.0-54
-
-- Fixed a bug in nxagentPaintWindowBackground(). A region passed as
-  parameter was modified by this function and this affected subseq-
-  uent operations involving the region.
-
-- In rootless mode, the map state of a top level window is uncondit-
-  ionally reflected in the internal state when receiving a map event
-  from the real display.
-
-nxagent-2.0.0-53
-
-- Regions are marked as synchronized after an image operation if the
-  image didn't generate a split.
-
-- When an image operation takes place on a drawable which is already
-  being streamed, the resource is marked as invalid and the commits
-  are discarded.
-
-- A specific trap is used at the time a drawable is synchronized.
-
-- Fixed Render.c to use the latest streaming code.
-
-nxagent-2.0.0-52
-
-- Fixed a problem in rootless mode where some windows could have mis-
-  sed to update the mapped flag after a MapNotify event.
-
-nxagent-2.0.0-51
-
-- Realization of images is skipped, if the link is down, and a small
-  delay is introduced before returning from the image function.
-
-- Started implementing a new handler to let the agent include arbit-
-  rary data in the transport statistics. For now, only the interfa-
-  ces and the stubs exist, and the handler is not registered to the
-  proxy.
-
-nxagent-2.0.0-50
-
-- Removed the unused code in nxagentCheckPixmapIntegrity().
-
-- Instead of calling nxagentShapeWindow() immediately, windows to be
-  reshaped are added to the list of windows that have to be configur-
-  ed at later time. This allows SaveAreas() to work even when windows
-  change shape, as in the case of the "bouncing cursor" as implement-
-  ed in some versions of the KDE.
-
-- Added a missing call to nxagentFlushConfigureWindow() in the recon-
-  nection procedure.
-
-nxagent-2.0.0-49
-
-- Code cleanup in the lazy encoding. Implemented distinct utilities
-  to allocate the split resources and manage the corrupted areas.
-
-- The Render.c file is taken from the previous version because the
-  updates break the composite code.
-
-- Renamed the option 'Lazy' to 'Streaming'.
-
-nxagent-2.0.0-48
-
-- Made the image cache use the agent data, instead of allocating and
-  copying.
-
-- Fixed a memory leak in the image routines.
-
-- The image cache is freed at exit. This helps investigating other
-  eventual leaks.
-
-nxagent-2.0.0-47
-
-- Solved the problem at reconnection with lazy encoding enabled.
-
-nxagent-2.0.0-46
-
-- Solved a bug in the parsing of the pack method that made the agent
-  select an unavailable id.
-
-nxagent-2.0.0-45
-
-- Ensured that images are explicitly byte swapped before sending to
-  an X server using a different byte order. In the attempt of saving
-  an expensive operation, the previous code let the unpack procedure
-  do the job, but this could fail to work in some special cases.
-
-- Cleaned the bitmaps used for the core cursors before putting the
-  image.
-
-- Left the display error handler installed during all the lifetime
-  of the session so that other parts of the code don't have to inst-
-  all it explicitly before entering a critical Xlib routine.
-
-- Removed more unused code.
-
-nxagent-2.0.0-44
-
-- Fixed the problem with the cursor image being encoded with a lossy
-  method. The fix is a temporary. The final solution requires changes
-  to the lazy encoding.
-
-- Reworked the code dealing with the alpha visual. The color mask is
-  set based on the endianess of the remote display and is recreated
-  after a session resume.
-
-- Removed more unused code.
-
-nxagent-2.0.0-43
-
-- Corrupted regions are now correctly clipped to the visible area of
-  the drawable.
-
-- Fixed a problem with the clip mask when calculating the intersect-
-  ion of the clip region with the destination region.
-
-- Drawables involved in a composite glyph operation are now synchro-
-  nized prior to being used.
-
-- The nxagentRealizeDrawable() function is now called only for draw-
-  ables that are not already synchronized.
-
-- Pixmaps are now skipped in the synchronization loop. Synchronizat-
-  ion of pixmap is to be implemented.
-
-nxagent-2.0.0-42
-
-- Improved the algorithm removing the duplicated keys by trying to
-  read more events.
-
-nxagent-2.0.0-41
-
-- Made use of the NXFinishSplit() request to speed up the completion
-  of a pending split.
-
-- Added an explicit NX transport flush before any operation that may
-  block waiting for data from the X server.
-
-- Set the NX flush policy to deferred after reconnection.
-
-- Solved refresh problems when reconnecting in rootless mode.
-
-- Modified the routine removing duplicated arrow key events. Now the
-  routine deals with page down and page up keys as well.
-
-- Added a check for xkb base directory path, in order to support new
-  Linux distributions.
-
-- Disabled backing store support for rootless sessions, as implement-
-  ation is not very functional, yet.
-
-nxagent-2.0.0-40
-
-- Removed code related to old managing of backing store.
-
-- Added initialization of backing store by calling miInitializeBack-
-  ingStore().
-
-- Implemented nxagentSaveAreas() and nxagentRestoreAreas() functions.
-  These functions are based on fb code. Calls to XCopyArea() have been
-  added in their implementation to make them be effective also on the
-  real X server.
-
-- Instead of calling nxagentConfigureWindow() in ClipNotify() and
-  PositionWindow(), windows to be configured or mapped are added to a
-  list, together with a mask storing operation that have to be done.
-  Windows in the list will be configured or mapped later by calling
-  nxagentFlushConfigureWindow(). This avoids that windows were mapped
-  or configured before saving areas in the backing store pixmaps.
-
-- The function nxagentFlushConfigureWindow() is called before resto-
-  ring areas on the X server in nxagentRestoreAreas() and at the end
-  of ConfigureWindow and MapWindow in the DIX layer.
-
-- Blocked the NoExpose events at the proxy side.
-
-- Fixed an error in nxagentCompareRegions().
-
-nxagent-2.0.0-39
-
-- Ensured that the display errors are detected while waiting for a
-  split operation to complete.
-
-- Removed more unused code.
-
-nxagent-2.0.0-38
-
-- Changed nxagentSetCursorPosition() to avoid warping the cursor if
-  the requesting client is NULL or the serverClient.
-
-- Added a specific trap to avoid compressing an image associated to
-  a RENDER cursor using a lossy encoding.
-
-nxagent-2.0.0-37
-
-- Added a check in nxagentPaintWindowBackground() to avoid calling of
-  XClearArea() if the window is not realized.
-
-- Modified nxagentAtomNames in Atoms.c to include CLIPBOARD and TIME-
-  STAMP atoms, avoiding further calls to XInternAtom in Clipboard.c.
-
-- Solved TR04D01356. Auto repeat mode setting is no more propagated to
-  the X server keyboard.
-
-- Cleaned up the code in the routine removing duplicated arrow key
-  events.
-
-nxagent-2.0.0-36
-
-- Added the Literals.h file. For now it just contains a table used
-  to translate a request opcode to the name of the X request, to be
-  used for test purposes.
-
-nxagent-2.0.0-35
-
-- Major code rewrite in nxagentPutSubImage(). Removed support for the
-  deprecated image encodings. Ensured that padding bytes are cleaned
-  before trying to locate the image in the nxcompext cache. Avoided
-  to store the image in the cache if it is coming from a XVideo or
-  GLX operation.
-
-- Added support for the new RGB image encoder. This allows the agent
-  to use the simplest encoding by still separating the alpha channel
-  from the image data.
-
-- Added the missing check in nxagentRedirectWindow() verifying that
-  use of the composite extension is enabled.
-
-- Updated to use the new NXCleanImage() function.
-
-- Removed more debugging output.
-
-nxagent-2.0.0-34
-
-- Updated to use the 'what' parameter in NXFlushDisplay().
-
-- Removed the duplicated arrow key events from the event queue.
-
-- Solved the TR04D01355. The X11 agent now tries to locate the
-  fonts.dir file in the misc directory, to verify the validity of
-  the font path.
-
-- Added a check in nxagentChangeClip to avoid creating a new clip
-  mask if the old clip mask matches the former.
-
-- Use the 'fixed' font to replace fonts that are not found a the
-  display reconnection. This should overcome one the most common
-  sources of troubles when migrating the session to a different
-  display, and constitute the base for improving the algorithm
-  trying to match a substitute font.
-
-- Implemented the FR04D01360. Now the user can enable/disable the
-  streaming of the images by using the option 'streaming'.
-
-- Implemented the FR04D01358. The backing-store can be enabled or
-  disabled by using the  option 'backingstore'.
-
-- Forced the reconnection routine to call the IOError handler in
-  the case the display cannot be opened.
-
-nxagent-2.0.0-33
-
-- The GetImage requests in 'slow' mode are now served by retrieving
-  the content of the drawable from the frame buffer.
-
-- Replaced a call to XQueryExtension() by one to XRenderQueryExten-
-  sion(). This function caches previous QueryExtension requests. This
-  partially implements FR01D01275.
-
-- At reconnection, the keyboard is reset only if the keyboard option
-  has been changed.
-
-- Fixed the fonts reconnection procedure. Now the remote fonts list
-  is refilled before fonts reconnection and after failed fonts
-  reconnection, so as to store the correct list of available fonts.
-
-- Added a check in nxagentLoadQueryFont to look up selected font in
-  the list of available fonts. This check avoid filling FontStruct
-  with invalid data.
-
-- Added TIMESTAMP to handled selection targets.
-
-nxagent-2.0.0-32
-
-- Implemented FR03D01323. Added the 'clipboard' option to enable or
-  disable copy and paste operations from the user's desktop to the NX
-  session or vice versa. This option can take four values:
-
-  client  The content copied on the client can be pasted inside the
-          NX session.
-
-  server  The content copied inside the NX session can be pasted
-          on the client.
-
-  both    The copy & paste operations are allowed both between the
-          client and the NX session and viceversa.
-
-  none    The copy&paste operations between the client and the NX
-          session are never allowed.
-
-nxagent-2.0.0-31
-
-- Implemented FR03D01337. Now the X11 agent is able to read the op-
-  tions from different places according to the following order: the
-  DISPLAY variable, the options file, the command line.
-
-- Implemented FR03D01347. Added 'composite' to parsed options.
-
-- Always activate shared memory support in the remote X server proxy.
-
-- Modified nxagentCopyArea for the case the source is a shared memory
-  pixmap. The pixmap on the X server is not synchronized, but the con-
-  tent of the shared pixmap mantained by the agent is placed directly
-  on the destination drawable. This allows to skip the following Copy-
-  Area operation.
-
-nxagent-2.0.0-30
-
-- Added the missing flush of the Xlib buffer at the beginning of
-  the block handler.
-
-nxagent-2.0.0-29
-
-- Changes in the block and wakeup handlers to queue multiple reads
-  and flush the link on demand.
-
-- Removed the unused code in Control.h and Control.c. Renamed the
-  files as Client.h and Client.c.
-
-- Added support for the '-nocomposite' command line option.
-
-nxagent-2.0.0-28
-
-- Moved the composite code to Composite.h and Composite.c.
-
-- Redirected the top-level windows when running in rootless mode.
-
-nxagent-2.0.0-27
-
-- When the composite extension is supported by the remote display,
-  the agent window is redirected to the off-screen memory of the
-  X server.
-
-- Imported Xcomposite.c, Xcomposite.h and xcompositeint.h from the
-  3.0.0 branch to be able to activate the off-screen redirection of
-  the top level windows.
-
-- Added Composite to the list of agent options. The default is to
-  use the composite extension, when available.
-
-nxagent-2.0.0-26
-
-- Avoided to suspend the clients on excess of karma or after a get
-  input focus request.
-
-- Images are now split only when the agent is in congestion state.
-
-- Moved all the image related functions from GCOps.h and GCOps.c to
-  Image.h and Image.c.
-
-- Removed the unused includes in GCOps.c and Image.c.
-
-- Added the karma delay field to the NXGetControlParameters() call.
-
-- Renamed placeholder.xpm as nxmissing.xpm. Renamed the Icon.h file
-  as Icons.h. Added there a define to point at nxmissing.xpm in the
-  include.
-
-nxagent-2.0.0-25
-
-- Implemented the FR03D01334. Option keyboard is now a synonym of
-  option kbtype.
-
-nxagent-2.0.0-24
-
-- Ensured that the split procedure is completed before executing a
-  render operation that required a synchronization of a shared mem-
-  ory pixmap.
-
-- Added the appropriate checks to avoid synchronizing the same sha-
-  red memory pixmap multiple times.
-
-nxagent-2.0.0-23
-
-- Imported changes to NXrender.c and NXshm.c in the files for the
-  3.0.0 port.
-
-nxagent-2.0.0-22
-
-- Implemented FR03D01331. Options shpix and shmem enable/disable the
-  use of shared pixmaps and shared memory extension.
-
-- Implented handling of value "query" for nxagentKbtype. This value
-  is passed by the NX client for MacOSX. If value of nxagentKbtype is
-  "query" or NULL we init keyboard by core protocol functions reading
-  the keyvoard mapping of the X server. The property _XKB_RULES_NAMES
-  is always set on the root window with default values of model and
-  layout.
-
-- Fixed TR11C01223. When the XDM connection can't be established the
-  agent creates an alert to notify the user that XDM session failed
-  to start.
-
-- Changed Clipboard.c to fix invalid read errors in nxagentGetClip-
-  boardWindow() function.
-
-- Implemented FR11C01218. Modified Font.c introducing the new function
-  nxagentLoadQueryFont, this function loads the font_struct struct
-  locally instead of sending a QueryFont request.
-
-- Modified nxagentListRemoteFontsfunction to fill nxagentFontList
-  struct with all remote fonts, avoiding further calls to XListFonts.
-
-- Added two functions, nxagentFreeRemoteFontList and nxagentFreeFont,
-  used in disconnect phase to empty the nxagentFontList struct and
-  the cached FontStruct elements, respectively.
-
-nxagent-2.0.0-21
-
-- Updated to include the remote proxy version in the NXGetControl-
-  Parameter reply.
-
-- Updated to use the NXDisplayFlush() and NXSetDisplayPolicy() int-
-  erfaces.
-
-nxagent-2.0.0-20
-
-- NXInitDisplay() and NXResetDisplay() are called at the time we
-  open or close the display, to let nxcompext set up its internal
-  structures.
-
-nxagent-2.0.0-19
-
-- Activated the streaming of the images even in the case of a link
-  type LAN.
-
-- In NXmiexpose.c, if the number of rectangles in an exposed region
-  exceeds 4, we let a predicate function decide if it is better to
-  send the window extents, rather than the rectangles in the region.
-
-- Added the NXAGENT_SERVER define in the Imakefile. It will be used
-  in future to mark all the modifications made to files we imported
-  from other layers.
-
-- Removed the warnings from NXmiexpose.c.
-
-nxagent-2.0.0-18
-
-- Imported NXmiexpose.c in the agent code.
-
-- Removed NXmiwindow.c from the agent code. We now use the original
-  miwindow.c
-
-- Removed the static qualifier from the _NXFontPath definition.
-
-- Started implementing the new lazy encoding mechanism. For each of
-  the drawables, the agent will create a "corrupted" region and will
-  try to synchronize the drawable when there is bandwidth available.
-  This is a work in progress.
-
-- Implemented the function nxagentFbOnShadowDisplay. This is a test
-  facility which opens a window on the display showing the content
-  of the agent's framebuffer.
-
-nxagent-2.0.0-17
-
-- The image streaming procedure is now activated also when using a
-  link of type LAN.
-
-- Removed the call to NXTransDestroy() in nxagentCloseDisplay. The
-  NX transport is now implicitly shut down by either NXForceDisplay-
-  Error() or XCloseDisplay().
-
-- Updated to comply with the new NX function prototypes introduced
-  in nxcomp-2.0.0-31.
-
-nxagent-2.0.0-16
-
-- Fixed a bug in the nxagentModifyPixmapHeader function that was
-  causing some glyphs to be displayed incorrectly.
-
-- Implemented the test function nxagentPixmapOnShadowDisplay, useful
-  to display a pixmap on the real screen to check its consistency.
-
-nxagent-2.0.0-15
-
-- Ensured that, before restarting a client after a no-split, all the
-  pending image commits are executed.
-
-- Installed the display error predicate function before trying to
-  open the display even at session startup. This prevents the agent
-  from disappearing silently if a failure occurs before the display
-  initialization is completed.
-
-- Moved the initialization of the callback functions in Display.c.
-
-- Added some interfaces to manipulate the callbacks and the error
-  handlers and verify the state of the display flags.
-
-nxagent-2.0.0-14
-
-- Implemented stub versions of the nxagentDisplayCongestionHandler()
-  and nxagentDisplayBlockHandler() callbacks. See nx-X11-2.0.0-17.
-
-- Added the nxagentDisplayErrorPredicate() function. In combination
-  with changes implemented in nx-X11-2.0.0-16, this allows the agent
-  to abort a blocking operation and shutdown the display in a timely
-  fashion if a signal or any other error condition is received insi-
-  de Xlib.
-
-- Modified nxagentWaitSplitEvent() to use XIfEvent() as we can trust
-  the proxy to either send the event or give up the proxy connection.
-  The function will also give up when an error condition is raised,
-  like for example a session termination requested by the user.
-
-- Removed any remaining reference to the unused display buffer and
-  image cleanup functions.
-
-- Fixed exposures problems when reconnecting.
-
-- Solved TR05C00896. The problem was due to window manager utilizing
-  zero-thick-lines drawing requests. These drawing operations are now
-  performed by calling fbPolySegment() instead of miPolySegment(),
-   which doesn't handle the zero-thick-lines drawing case.
-
-nxagent-2.0.0-13
-
-- Improved the management of the expose events. We now create the
-  fake window used to keep the agent synchronized with the X server
-  only once, instead of creating and configuring a different window
-  for each generated region.
-
-- A warning is printed if the changes requested for the fake window
-  don't match the changes reported in the subsequent ConfigureNotify
-  event.
-
-- Imported previous changes in NXevents.c into the 3.0.0 port.
-
-nxagent-2.0.0-12
-
-- Activated the image streaming also during the reconnection. This
-  makes possible to leverage the remote disk cache.
-
-- Ensured that all clients are restarted when the session is suspen-
-  ded. This is required because the proxy is gone but we may have
-  some client still waiting for the completion of a split procedure.
-
-- Skipped the reset of the keyboard device if the display breaks at
-  the time it is being reconnected.
-
-- As the reset of the keyboard may have failed before we were able
-  to set a valid DeviceIntPtr, also added a check in ProcessPointer-
-  Event(), in NXevents.c to verify that the state of the display is
-  valid before accessing any of the device members. This is to be
-  better investigated.
-
-nxagent-2.0.0-11
-
-- Solved TR02D01298. The clip region associated to the current glyph
-  was not updated because the serial number of the virtual pixmap
-  pointed by the picture was not incremented.
-
-- Imported the NXmiglyph.c file from render directory.
-
-- Removed the patch added in the release 1.3.2-6 temporary fixing this
-  problem.
-
-nxagent-2.0.0-10
-
-- Various improvements the wakeup procedures.
-
-- Implemented the FR10C01110. Now, the X11 agent manages both the
-  PRIMARY and CLIPBOARD selections. It is possible copy and paste text
-  also by using Ctrl+C and Ctrl-V.
-
-- Modified NXdispatch.c in order to correctly include header files.
-
-- More cosmetic changes and code cleanup.
-
-- Imported changes into the files for the 3.0.0 port.
-
-nxagent-2.0.0-9
-
-- Rewritten the procedures suspending and resuming the clients in
-  Control.c. This solves a problem with clients that were restarted
-  at wrong time and should ensure that multiple events for the same
-  client are correctly handled.
-
-- Removed the calls to NXSetUnpackGeometry() setting the parameters
-  for the client 0. The geometry is now set only at the right time,
-  just before trying to unpack the image.
-
-- Removed the sample code using the NXTransChannel() interface.
-
-nxagent-2.0.0-8
-
-- Added test code showing how to open a new NX channel by using the
-  NXTransChannel() interface.
-
-- Streaming of images is not attempted in the case of link LAN.
-
-- Added preliminary code to the tell the proxy to flush the link if
-  the agent is idle.
-
-- Imported changes from nx-X11-2.0.0-14 in NXdixfonts.c.
-
-nxagent-2.0.0-7
-
-- Modified exposures managing: agent synchronizes both with remote X
-  server and remote window manager for every generated region. Synch-
-  ronization is reached sending a ConfigureWindow request for a fake
-  window created on purpose. This way the exposures for the resulting
-  region coming from calculating the difference between local region
-  and the remote region are sent to clients in order to avoid duplica-
-  ted refreshes.
-
-- Improved new algorithm for managing exposures in order to work pro-
-  perly also in rootless mode: added privates to windows in order to
-  get information about mapping of windows on remote X server and vi-
-  sibility state too. This way local exposures are replaced by remote
-  ones if windows are mapped only for agent or windows are not fully
-  visible. This solves TR08C00971.
-
-- Window attributes values about backing store and save-under are re-
-  spectively set to NotUseful and False when creating a window on re-
-  mote X server and ignored when a client requests to change these
-  attributes.
-
-- Removed a no more needed function call to generate exposures when
-  resizing windows.
-
-nxagent-2.0.0-6
-
-- Updated the NoMachine copyright notices.
-
-nxagent-2.0.0-5
-
-- Added handling of font reconnection failure. In case of failure in
-  reconnecting some font, the agent adds the font server connection
-  forwarded by nxcomp to the font path of the X server.
-
-- Fixed TR09C01022. Moved the handling of the session states into
-  main cycle. The session states are not more handled into SIGHUP and
-  IOError handlers but into nxagentHandleConnectionStates() called in
-  nxagentWakeupHandler().
-
-- In ResizeChildrenWinSize(), privates storing window geometry are
-  updated even if the call to PositionWindow() is skipped. This have
-  to be done because the window is moved by the X server accordingly
-  with window gravity. This prevent some window positioning error on
-  the real display evidenced with OpenOffice and GNOME.
-
-nxagent-2.0.0-4
-
-- Solved TR12C01234. In some conditions Alt-F4 keystroke made the user
-  unable to open the Gnome Menu panel. This was due to the agent dis-
-  carding KeyRelease events for Alt-F4 and Alt-F2.
-
-- Undefined TEST and DEBUG in Dialog.c
-
-- Changed the NXAGENT_VERSION define from 1.5.0 to 2.0.0
-
-- Caching and streaming of images is now disabled when dispatching
-  requests from the GLX and XVideo extensions.
-
-- Added the NXxvdisp.c and NXglxext.c files. These files are needed
-  to intercept calls to the XVideo and GLX extensions. Only files
-  in the main directory are imported. Files in the X directory, used
-  for the 3.0.0 port, for now are empty.
-
-- Added the nxagentXvTrap and nxagentGlxTrap flags. These flags are
-  set when dispatching requests from the XVideo and GLX extensions.
-
-- Added the GL and Xext include directories to the Imakefile to be
-  able to compile the NXxvdisp.c and NXglxext.c sources.
-
-- Modified the NXrender.c and NXshm.c files to set the nxagentGCTrap
-  nxagentRenderTrap and nxagentShmTrap even when dispatching requests
-  from swapped clients. Files for the 3.0.0 port are not updated.
-
-nxagent-2.0.0-3
-
-- Solved a problem in the export of WM_SIZE_HINTS properties in root-
-  less mode on 64 bit machines.
-
-- Modified Render.c in order to correctly process Xrender header fi-
-  les on 64 bit machines.
-
-- Made changes in order to compile the agent in the Cygwin environ-
-  ment.
-
-- Renamed the files Time.* to Millis.*
-
-- Specified the relative path of some included header files.
-
-- In the Imakefile added a new include paths order related to the
-  Cygwin environment to avoid name clashes.
-
-- Disabled the MIT-SHM extension in the Cygwin environment.
-
-- Fixed TR11C01186. Added -timeout item to the usage message.
-
-- Fixed TR08C00945. Scrolling a document in Firefox caused image left-
-  overs with animated banners. Set the right window gravity on windows
-  created in the real X server. Let X move children for us accordingly
-  with window gravity attribute, without dix interferences.
-
-- Removed logs related to parsing of the options file.
-
-- Modified dialogs in order to show the name of the session in the
-  caption.
-
-nxagent-2.0.0-2
-
-- Imported changes up to nxagent-1.5.0-112.
-
-- Fixed TR12C01241. The failure condition returned by the XQueryTree
-  function is managed in order to avoid the subsequent errors.
-
-- Fixed the TR11C01165. X11 sessions could not be started on Ubuntu
-  5.10 because of the different location of fonts. Now we check the
-  existence of the fonts directory pointed by the default XF86 and
-  X.org font path and, if the directory does not exist, we use the
-  alternate font path used on Ubuntu.
-
-- Set the default value of DeviceControl option to False before resu-
-  ming a session.
-
-- Added a warning message printed if reset of keyboard fails at recon-
-  nection.
-
-- Fixed TR11C01185. Solved by checking if there are windows iconized
-  when a window is destroyed.
-
-- Fixed TR11C01164. The xkbcomp process used LD_LIBRARY_PATH as it was
-  a child of the agent. Added a call to NXUnsetLibraryPath() in Init.c
-  in order to remove LD_LIBRARY_PATH before executing a child process.
-
-- Check if there are windows iconized before terminating a rootless
-  session.
-
-- Modified CHANGELOG to include reference to fixed TRs TR08C00967 and
-  TR08C00969. Removed some typo.
-
-- Fixed TR11C01194. The agent crashed if launched with -kb option.
-
-- Fixed TR10C01042. The keyboard didn't work if the session migrated
-  from Apple X server to another platform and viceversa. This has been
-  solved by initializing the keyboard device whenever the session is
-  resumed. This feature can be disabled by the new option -nokbreset.
-
-- Fixed some compilation error arising if TEST was enabled in the file
-  Keyboard.c.
-
-- Fixed TR11C01167. During the disconnection the font structures poin-
-  ted by the font cache were freed leaving inconsistent data in the
-  corresponding privates. Now they are nullified and the GCs are che-
-  cked to guarantee a correct font handling in the suspended state.
-
-nxagent-2.0.0-1
-
-- Opened the 2.0.0 branch based on the 1.6.0-11.
-
-nxagent-1.6.0-11
-
-- Updated the NX.original copies of files in X directory.
-
-- Merged the NX changes:
-
-  - From dix/extension.c to NXextension.c.
-  - From dix/dixfonts.c to NXdixfonts.c.
-  - From dix/glyphcurs.c to NXglyphcurs.c.
-
-- Export of CARDINAL properties are expanded to 64 bit units on 64
-  bit machines.
-
-- Solved a segmentation fault when handling configure notify events
-  in rootless mode on 64 bit machines.
-
-- Merged the NX changes from dix/property in X/NXproperty.c.
-
-- Correctly allocated the local variable used in the call to NXGet-
-  CollectedInputFocus to be of 64 bit on 64 bit machine.
-
-- Defined symbolic constants XlibWindow in order to propertly handle
-  export property on 64 bit machine.
-
-- Moved the XlibAtom define from Atoms.h to Agent.h.
-
-- Modified export properties of type Window and Atom in order to han-
-  dle correctly Window and Atom types on 64 bit machines.
-
-- Removed some invalid read in Atom handling code when compiled for 64
-  bit, due to mismatched size of Atom type between Xlib and Xserver
-  code.
-
-- Modified some header files in order to properly see the correct pro-
-  totypes of some Xlib structures on 64 bit machines.
-
-- The variable currentDispatch is always defined.
-
-- The dispatch current time is updated, this way the initial timeout
-  can elapse and the splash window is removed.
-
-nxagent-1.6.0-10
-
-- Imported changes from nxagent-1.5.0-103.
-
-- Removed some redundant redeclarations.
-
-- Merged the NX changes from randr/randr.c to NXrandr.c.
-
-- Removed some warnings in NXrandr.c.
-
-- Removed NXAGENT_FORCEBACK and NXAGENT_INTERNALBS code.
-
-- Added ddxInitGlobals function in order to compile with the new X.org
-  tree.
-
-- Converted nxagentSynchronizeShmPixmap from macro to function to
-  solve a graphical render problem caused by the variable's scope.
-
-nxagent-1.6.0-9
-
-- Imported changes from nxagent-1.5.0-102
-
-- Fixed TR10C01124. Function nxagentSetPictureFilter() filled the log
-  with  a debug message.
-
-- Removed a debug message in Events.c.
-
-- Run function nxagentSetTopLevelEventMask() only in rootless mode.
-
-- In the Java application IntelliJ the dropdown menus was shown in a
-  wrong position when the main window was moved or minimized. The
-  problem is solved for KDE desktop environment.
-
-- Fixed TR08C00967, TR08C00969, TR08C00941. Our incomplete implementa-
-  tion of the MIT-SHM X11 extension was a problem for some applica-
-  tions using the Shared Memory Pixmaps. Now the extension support has
-  been completed, so the nxagent can handle the Shared Memory Pixmaps
-  requests. Introduced some changes in the render implementation to
-  synchronize the content of the Shared Memory Pixmaps with the X ser-
-  ver before performing the ChangePicture and Composite operations.
-
-nxagent-1.6.0-8
-
-- Fixed TR09C01028. The problem was the GC foreground was not updated
-  on the X server. This was due to the private fields was not copied
-  from a GC to another in the function nxagentCopyGC(). Added macro
-  nxagentCopyGCPriv in GC.h.
-
-- Solved TR11C01162. Removed the dialog shown by nxcomp/nxagent when
-  the resume of a session is happening over a slow link.
-
-nxagent-1.6.0-7
-
-- Imported changes up to nxagent-1.5.0-100.
-
-- Fixed some compilation errors.
-
-- Fixed a typo in nxagentChangeClip() declaration.
-
-- Fixed TR10C01040. After the session resume the applications using
-  OpenGL were not correctly resumed because some GCs were not recon-
-  nected. Now we save these GCs in a safe vector, so we can't lose
-  them.
-
-- Improved font reconnection procedure in order to take advantage of
-  new font channel provided by nxcomp. If resuming session fails be-
-  cause missing fonts, the font channel provided by nxcomp is added
-  to font paths of X server. After reconnection succeded the font
-  channel is removed from font paths.
-
-- In the Java application IntelliJ the dropdown menus remained opened
-  and shown in a wrong position when the main window was moved or
-  minimized. This problem has been solved by sending a sinthetic event
-  to client. This solves partially TR09C01012.
-
-- In the same application the caret was not shown in the text window.
-  Solved the problem by setting nxagentGCTrap before calling a MI
-  function in every GC operations.
-
-- Merged the NX changes:
-
-  - From render/glyph.c to NXglyph.c.
-  - From Xext/shm.c to NXshm.c.
-  - From render/render.c to NXrender.c.
-  - From mi/miwindow.c to NXmiwindow.c
-  - From render/glyphstr.h to NXglyphstr.h.
-  - From render/picturestr.h to NXpicturestr.h.
-  - From render/picture.c to NXpicture.c.
-  - From dix/dispatch.c to NXdispatch.c.
-  - From dix/events.c to NXevents.c.
-
-- Changed picturestr.h glyphstr.h to remove some formatting changes
-  compared to the original files.
-
-- Disabled Xinerama extension in order to fix a type conflict in NX-
-  dispatch.c.
-
-- The current directory has been moved in front of the include dire-
-  ctory list.
-
-- Removed NXAGENT_FORCEBACK code in files imported from DIX.
-
-- Changed NXshm.c NXrandr.c NXproperty.c  NXpicture.c NXglyphcurs.c
-  NXglyph.c NXextension.c NXrender.c NXdixfonts.c NXdispatch.c NXmi-
-  window.c to remove some formatting changes compared to the original
-  files.
-
-- Added copyright notice to file NXrandr.c.
-
-- All files, except those from mi and dix, compile fine in the new
-  tree. Problems remain with different size of Atoms and other XID
-  objects.
-
-- More compilation fixes for the new tree.
-
-- Merged the NX changes from dix/window.c to NXwindow.c.
-
-- Changed NXwindow.c and NXevents.c to remove some formatting chan-
-  ges compared to the original files.
-
-- More compilation fixes aimed at porting the agent to the new tree.
-
-- Started porting the agent to the 6.8.99.16 X.org tree.
-
-- Lot of compilation fixes aimed at building in the new environment.
-
-- Files imported from the X.org tree's dix and mi will have to be
-  recreated in the nxagent/X directory. The new files will be inclu-
-  ded and built from the nxagent/X director if the NXAGENT_UPGRADE
-  symbol is defined (as it is the case when building in the 2.0.0
-  nx-X11 tree), otherwise the usual NX* files in the nxagent's dir-
-  ectory will be compiled.
-
-- Fixed TR09C01021. SIGHUP it was not received from the proxy. The
-  handler of SIGHUP must be installed also in the case of not persi-
-  stent sessions.
-
-- In non persistent case: if session is normally running, SIGHUP sig-
-  nal is dealt like SIGTERM, otherwise it is passed to the proxy.
-
-- Fixed TR09C01027. Changed function nxagentHandleConfigureNotify()
-  in order to get changes of the staking order in a rootless session
-  even if no window manager is running.
-
-- Fixed TR09C01025. The problem was XView application could be unable
-  to respond to user's input. Modified the Event Mask for non top le-
-  vel windows reparented by the root window. Set the input member of
-  XWMHints to communicate the window manager the keyboard focus model
-  used by the application.
-
-- Fixed TR09C01026. Added 'fast' and 'slow' to the set of accepted
-  command line parameters. 'fast', 'slow' and 'geometry' command line
-  parameters have precedence regarding the options file.
-
-- Fixed TR08C00968. There was a problem in the implementation of the
-  render extension.
-
-- Fixed TR09C01016. In rootless mode when the session was resumed,
-  the cursor was shown with a wrong shape.
-
-- Fixed TR09C01011. Allowed clients to monitor the root window for
-  structure redirect, button press and resize redirect events in root-
-  less mode. This is a quick hack to make the java bean shell work
-  flawlessy with the agent.
-
-- Solved TR08C00961. Improved the algorithm updating the sprite win-
-  dow. Now it is updated based upon crossing and motion event. Since
-  on some X server, like Windows and MacOsX X servers, the only cros-
-  sing event is not a reliable method to trace the sprite window chan-
-  ges.
-
-- Fixed TR08C00966. Solved the problem on Windows when a rootless
-  session is suspended and some of the application windows are
-  minimized.
-
-- Fixed TR08C00960. Updated the internal screen dimension in rootless
-  sessions at reconnection.
-
-- Fixed TR09C01005. The problem was that the 'render' option on the
-  command line was overridden by the one provided in the options file.
-
-- Implemented the HandleEmptySplitEvent function that synchronizes all
-  the drawables after the depletion of the split store, when the lazy
-  option is activated.
-
-- Some changes in order to avoid duplicated refreshes when display-
-  ing Mandrake's kde menu.
-
-- Changed level of some logs from WARNING into TEST in Window.c and
-  in Rootless.c.
-
-- Fixed TR08C00958. Changed the log message printed when the user re-
-  quest to resume the session.
-
-nxagent-1.6.0-6
-
-- When reconnecting, try to estimate the shift on the main window due
-  to WM reparenting.
-
-- In the handling of configure events, if a WM is running save the po-
-  sition of the main window only if event is synthetic.
-
-nxagent-1.6.0-5
-
-- Command line option -noshmem disables shared memory extension in the
-  agent.
-
-- Changed level of some logs from WARNING into TEST.
-
-nxagent-1.6.0-4
-
-- Some changes in order to improve handling of expose events in root-
-  less. The GetInputFocus request is not sent after reconfiguring a
-  top level window: window manager intervention could give race condi-
-  tions. The request is placed in WindowsRestructured() in order to be
-  sure it is sent after any event that could generate expose.
-
-- Zero lenght change property are now imported in rootless mode.
-
-- Corrected few typos.
-
-- Replaced the function usleep with NXTransContinue when NX transport
-  is running.
-
-- Changed the session state to GOING_DOWN as soon as the reconnection
-  is failed.
-
-nxagent-1.6.0-3
-
-- Updated rootless toplevel window map when a window is reparented to
-  the root window.
-
-- Renoved duplicated entry in rootless toplevel window map.
-
-nxagent-1.6.0-2
-
-- Removed TEST and DEBUG in Color.c.
-
-- Removed a compilation error in Atoms.c if DEBUG is enabled.
-
-- Removed invalid read at server reset in rootless mode, now the a-
-  toms description are duplicate before that we cache them.
-
-- Now the local atom in the atom cache are reset when exiting from
-  the dispatch loop.
-
-nxagent-1.6.0-1
-
-- Opened the 1.6.0 branch based on nxagent-1.5.0-87.
-
-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.
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Drawable.c b/nx-X11/programs/Xserver/hw/nxagent/Drawable.c
index 2c1b07f..abc228e 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Drawable.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Drawable.c
@@ -371,7 +371,6 @@ int nxagentSynchronizeRegion(DrawablePtr pDrawable, RegionPtr pRegion, unsigned
   int nBox;
   int x, y;
   int w, h;
-  int extentWidth, extentHeight;
   int tileWidth, tileHeight;
   int length, format, leftPad;
   int i;
@@ -591,20 +590,8 @@ int nxagentSynchronizeRegion(DrawablePtr pDrawable, RegionPtr pRegion, unsigned
               pDrawable -> x, pDrawable -> y, pDrawable -> width, pDrawable -> height);
   #endif
 
-  /*
-   * We are going to synchronize the corrupted
-   * area, so we use the corrupted extents as
-   * maximum size of the image data. It's im-
-   * portant to avoid using the drawable size,
-   * because in case of a huge window it had to
-   * result in a failed data memory allocation.
-   */
-
-  extentWidth  = clipRegion -> extents.x2 - clipRegion -> extents.x1;
-  extentHeight = clipRegion -> extents.y2 - clipRegion -> extents.y1;
-
-  w = tileWidth  = (nxagentOption(TileWidth)  > extentWidth  ? extentWidth  : nxagentOption(TileWidth));
-  h = tileHeight = (nxagentOption(TileHeight) > extentHeight ? extentHeight : nxagentOption(TileHeight));
+  w = tileWidth  = (nxagentOption(TileWidth)  > pDrawable -> width  ? pDrawable -> width  : nxagentOption(TileWidth));
+  h = tileHeight = (nxagentOption(TileHeight) > pDrawable -> height ? pDrawable -> height : nxagentOption(TileHeight));
 
   #ifdef DEBUG
   fprintf(stderr, "nxagentSynchronizeRegion: Using tiles of size [%dx%d].\n", tileWidth, tileHeight);
@@ -2626,10 +2613,7 @@ void nxagentCreateDrawableBitmap(DrawablePtr pDrawable)
    * FIXME: A better way it would be create the bitmap
    * with the same extents of the clipRegion. This
    * requires to save the offset with respect to the
-   * drawable origin like in the backing store. This
-   * becomes particularly important when the drawable
-   * is a huge window, because the pixmap creation
-   * would fail.
+   * drawable origin like in the backing store.
    */
 
   pBitmap = nxagentCreatePixmap(pDrawable -> pScreen, pDrawable -> width, pDrawable -> height, pDrawable -> depth);
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Events.c b/nx-X11/programs/Xserver/hw/nxagent/Events.c
index b37d81a..90fb764 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Events.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Events.c
@@ -2261,11 +2261,7 @@ int nxagentHandleClientMessageEvent(XEvent *X, enum HandleEventResult *result)
         {
           pScreen = nxagentScreen(X -> xmap.window);
 
-          XMapRaised(nxagentDisplay, nxagentFullscreenWindow);
-
-          XIconifyWindow(nxagentDisplay, nxagentIconWindow,
-                             DefaultScreen(nxagentDisplay));
-
+          nxagentMaximizeToFullScreen(pScreen);
         }
 
         if (X -> xclient.window == (nxagentOption(Fullscreen) ?
@@ -3062,6 +3058,56 @@ int nxagentHandleReparentNotify(XEvent* X)
 
     return 1;
   }
+  else
+  {
+    /*
+     * This code is supposed to detect if a window manager
+     * is running but in some cases it may be unreliable.
+     * Each window manager behaves differently so the check
+     * can fail for some less common WMs.
+     */
+
+    if (!nxagentWMIsRunning && nxagentOption(Fullscreen) &&
+            X -> xreparent.window == nxagentDefaultWindows[pScreen -> myNum])
+    {
+      #ifdef WARNING
+      fprintf(stderr, "Warning: The agent window was reparented. Is a "
+                  "window manager running?\n");
+      #endif
+
+      /*
+       * If no window manager is running and we are supposed to
+       * be in fullscreen mode then don't wait for the reparent
+       * event. We can assume that there is an undetected window
+       * manager and, as switching to fullscreen could have fail-
+       * ed, we try it again.
+       */
+
+      nxagentSwitchFullscreen(pScreen, True);
+
+      nxagentWMIsRunning = True;
+    }
+    else if (nxagentWMIsRunning && X -> xreparent.window ==
+                 nxagentDefaultWindows[pScreen -> myNum] && X -> xreparent.parent ==
+                     RootWindow(nxagentDisplay, (pScreen -> myNum)))
+    {
+      #ifdef WARNING
+
+      fprintf(stderr, "Warning: The agent window has been reparented to the root.\n");
+
+      fprintf(stderr, "Warning: No window manager seems to be running.\n");
+
+      #endif
+
+      /*
+       * The agent window was unexpectedly reparented
+       * to the root window. We assume that the window
+       * manager was terminated.
+       */
+
+      nxagentWMIsRunning = False;
+    }
+  }
 
   return 1;
 }
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Font.c b/nx-X11/programs/Xserver/hw/nxagent/Font.c
index e552f82..6fb34f2 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Font.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Font.c
@@ -101,8 +101,6 @@ static XFontStruct *nxagentLoadQueryFont(register Display *dpy , char *fontName
 int nxagentFreeFont(XFontStruct *fs);
 static Bool nxagentGetFontServerPath(char * fontServerPath);
 
-static char * nxagentMakeScalableFontName(const char *fontName, int scalableResolution);
-
 RESTYPE RT_NX_FONT;
 
 #ifdef NXAGENT_RECONNECT_FONT_DEBUG
@@ -421,59 +419,13 @@ Bool nxagentFontFind(const char *name, int *pos)
 Bool nxagentFontLookUp(const char *name)
 {
   int i;
-  int result;
-
-  char *scalable;
-
-  if (name != NULL && strlen(name) == 0)
-  {
-    return 0;
-  }
-
-  result = nxagentFontFind(name, &i);
-
-  scalable = NULL;
-
-  /*
-   * Let's try with the scalable font description.
-   */
-
-  if (result == 0)
-  {
-    scalable = nxagentMakeScalableFontName(name, 0); 
-
-    if (scalable != NULL)
-    {
-      result = nxagentFontFind(scalable, &i);
-
-      free(scalable);
-    }
-  }
-
-  /*
-   * Let's try again after replacing zero to xdpi and ydpi in the pattern.
-   */
-
-  if (result == 0)
-  {
-    scalable = nxagentMakeScalableFontName(name, 1); 
-
-    if (scalable != NULL)
-    {
-      result = nxagentFontFind(scalable, &i);
-
-      free(scalable);
-    }
-  }
-
-  if (result == 0)
-  {
-    return 0;
-  }
-  else
-  {
+  if (name)
+    if (!strlen(name))
+       return 0;
+  if (nxagentFontFind(name, &i))
     return (nxagentRemoteFontList.list[i]->status > 0);
-  }
+  else
+    return 0;
 }
 
 Bool nxagentRealizeFont(ScreenPtr pScreen, FontPtr pFont)
@@ -1746,88 +1698,3 @@ int nxagentSplitString(char *string, char *fields[], int nfields, char *sep)
   return i;
 }
 
-char *nxagentMakeScalableFontName(const char *fontName, int scalableResolution)
-{
-  char *scalableFontName;
-  const char *s;
-  int len;
-  int field;
-
-  len = strlen(fontName) + 1;
-
-  scalableFontName = malloc(len);
-
-  if (scalableFontName == NULL)
-  {
-    #ifdef PANIC
-    fprintf(stderr, "nxagentMakeScalableFontName: PANIC! malloc() failed.\n");
-    #endif
-
-    return NULL;
-  }
-
-  scalableFontName[0] = 0;
-
-  if (*fontName != '-')
-  {
-    goto MakeScalableFontNameError;
-  }
-
-  s = fontName;
-
-  field = 0;
-
-  while (s != NULL)
-  {
-    s = strchr(s + 1, '-');
-
-    if (s != NULL)
-    {
-      if (field == 6 || field == 7 || field == 11)
-      {
-        /*
-         * PIXEL_SIZE || POINT_SIZE || AVERAGE_WIDTH
-         */
-
-        strcat(scalableFontName, "-0");
-      }
-      else if (scalableResolution == 1 && (field == 8 || field == 9))
-      {
-        /*
-         * RESOLUTION_X || RESOLUTION_Y
-         */
-
-        strcat(scalableFontName, "-0");
-      }
-      else
-      {
-        strncat(scalableFontName, fontName, s - fontName);
-      }
-
-      fontName = s;
-    }
-    else
-    {
-      strcat(scalableFontName, fontName);
-    }
-
-    field++;
-  }
-
-  if (field != 14)
-  {
-    goto MakeScalableFontNameError;
-  }
-
-  return scalableFontName;
-
-MakeScalableFontNameError:
-
-  free(scalableFontName);
-
-  #ifdef DEBUG
-  fprintf(stderr, "nxagentMakeScalableFontName: Invalid font name.\n");
-  #endif
-
-  return NULL;
-}
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Image.c b/nx-X11/programs/Xserver/hw/nxagent/Image.c
index 4e08f6b..5b40f32 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Image.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Image.c
@@ -1176,7 +1176,7 @@ FIXME: Should use an unpack resource here.
    */
 
   pack = (nxagentOption(LinkType) != LINK_TYPE_NONE &&
-              packMethod != PACK_NONE && depth > 8 && format == ZPixmap);
+              packMethod != PACK_NONE && depth > 8);
 
   lossless = (packMethod == nxagentPackLossless);
 
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c
index 88e99a1..1cc6898 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c
@@ -444,7 +444,7 @@ N/A
                                      max_keycode - min_keycode + 1,
                                      &mapWidth);
 
-        if (keymap64 == NULL)
+        if (keymap == NULL)
         {
           XFreeModifiermap(modifier_keymap);
 
diff --git a/nx-X11/programs/Xserver/hw/nxagent/X/NXglyph.c b/nx-X11/programs/Xserver/hw/nxagent/X/NXglyph.c
index f51a8bc..06dabdd 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/X/NXglyph.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/X/NXglyph.c
@@ -69,17 +69,6 @@
 #undef  DEBUG
 #undef  TEST
 
-#else
-
-#include "picturestr.h"
-#include "glyphstr.h"
-
-#endif
-
-#if HAVE_STDINT_H
-#include <stdint.h>
-#elif !defined(UINT32_MAX)
-#define UINT32_MAX 0xffffffffU
 #endif
 
 /*
@@ -412,12 +401,8 @@ AllocateGlyph (xGlyphInfo *gi, int fdepth)
 {
     int		size;
     GlyphPtr	glyph;
-    size_t	     padded_width;
-    
-    padded_width = PixmapBytePad (gi->width, glyphDepths[fdepth]);
-    if (gi->height && padded_width > (UINT32_MAX - sizeof(GlyphRec))/gi->height)
-	return 0;
-    size = gi->height * padded_width;
+
+    size = gi->height * PixmapBytePad (gi->width, glyphDepths[fdepth]);
     glyph = (GlyphPtr) xalloc (size + sizeof (GlyphRec));
     if (!glyph)
 	return 0;
diff --git a/nx-X11/programs/Xserver/hw/nxagent/X/NXglyph.c.NX.original b/nx-X11/programs/Xserver/hw/nxagent/X/NXglyph.c.NX.original
index f51a8bc..06dabdd 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/X/NXglyph.c.NX.original
+++ b/nx-X11/programs/Xserver/hw/nxagent/X/NXglyph.c.NX.original
@@ -69,17 +69,6 @@
 #undef  DEBUG
 #undef  TEST
 
-#else
-
-#include "picturestr.h"
-#include "glyphstr.h"
-
-#endif
-
-#if HAVE_STDINT_H
-#include <stdint.h>
-#elif !defined(UINT32_MAX)
-#define UINT32_MAX 0xffffffffU
 #endif
 
 /*
@@ -412,12 +401,8 @@ AllocateGlyph (xGlyphInfo *gi, int fdepth)
 {
     int		size;
     GlyphPtr	glyph;
-    size_t	     padded_width;
-    
-    padded_width = PixmapBytePad (gi->width, glyphDepths[fdepth]);
-    if (gi->height && padded_width > (UINT32_MAX - sizeof(GlyphRec))/gi->height)
-	return 0;
-    size = gi->height * padded_width;
+
+    size = gi->height * PixmapBytePad (gi->width, glyphDepths[fdepth]);
     glyph = (GlyphPtr) xalloc (size + sizeof (GlyphRec));
     if (!glyph)
 	return 0;
diff --git a/nx-X11/programs/Xserver/hw/nxagent/X/NXglyph.c.X.original b/nx-X11/programs/Xserver/hw/nxagent/X/NXglyph.c.X.original
index 9f4d1c8..45c5dd9 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/X/NXglyph.c.X.original
+++ b/nx-X11/programs/Xserver/hw/nxagent/X/NXglyph.c.X.original
@@ -43,12 +43,6 @@
 #include "picturestr.h"
 #include "glyphstr.h"
 
-#if HAVE_STDINT_H
-#include <stdint.h>
-#elif !defined(UINT32_MAX)
-#define UINT32_MAX 0xffffffffU
-#endif
-
 /*
  * From Knuth -- a good choice for hash/rehash values is p, p-2 where
  * p and p-2 are both prime.  These tables are sized to have an extra 10%
@@ -340,12 +334,8 @@ AllocateGlyph (xGlyphInfo *gi, int fdepth)
 {
     int		size;
     GlyphPtr	glyph;
-    size_t	     padded_width;
-    
-    padded_width = PixmapBytePad (gi->width, glyphDepths[fdepth]);
-    if (gi->height && padded_width > (UINT32_MAX - sizeof(GlyphRec))/gi->height)
-	return 0;
-    size = gi->height * padded_width;
+
+    size = gi->height * PixmapBytePad (gi->width, glyphDepths[fdepth]);
     glyph = (GlyphPtr) xalloc (size + sizeof (GlyphRec));
     if (!glyph)
 	return 0;
diff --git a/nx-X11/programs/Xserver/hw/nxagent/X/NXrender.c b/nx-X11/programs/Xserver/hw/nxagent/X/NXrender.c
index de2df85..00c55cd 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/X/NXrender.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/X/NXrender.c
@@ -1893,8 +1893,6 @@ ProcRenderCreateCursor (ClientPtr client)
     pScreen = pSrc->pDrawable->pScreen;
     width = pSrc->pDrawable->width;
     height = pSrc->pDrawable->height;
-    if (height && width > UINT32_MAX/(height*sizeof(CARD32)))
-	return BadAlloc;
     if ( stuff->x > width 
       || stuff->y > height )
 	return (BadMatch);
@@ -2355,8 +2353,6 @@ static int ProcRenderCreateLinearGradient (ClientPtr client)
     LEGAL_NEW_RESOURCE(stuff->pid, client);
 
     len = (client->req_len << 2) - sizeof(xRenderCreateLinearGradientReq);
-    if (stuff->nStops > UINT32_MAX/(sizeof(xFixed) + sizeof(xRenderColor)))
-	return BadLength;
     if (len != stuff->nStops*(sizeof(xFixed) + sizeof(xRenderColor)))
         return BadLength;
 
@@ -2959,18 +2955,18 @@ SProcRenderCreateSolidFill(ClientPtr client)
     return (*ProcRenderVector[stuff->renderReqType]) (client);
 }
 
-static void swapStops(void *stuff, int num)
+static void swapStops(void *stuff, int n)
 {
-    int i, n;
+    int i;
     CARD32 *stops;
     CARD16 *colors;
     stops = (CARD32 *)(stuff);
-    for (i = 0; i < num; ++i) {
+    for (i = 0; i < n; ++i) {
         swapl(stops, n);
         ++stops;
     }
     colors = (CARD16 *)(stops);
-    for (i = 0; i < 4*num; ++i) {
+    for (i = 0; i < 4*n; ++i) {
         swaps(stops, n);
         ++stops;
     }
@@ -2993,8 +2989,6 @@ SProcRenderCreateLinearGradient (ClientPtr client)
     swapl(&stuff->nStops, n);
 
     len = (client->req_len << 2) - sizeof(xRenderCreateLinearGradientReq);
-    if (stuff->nStops > UINT32_MAX/(sizeof(xFixed) + sizeof(xRenderColor)))
-	return BadLength;
     if (len != stuff->nStops*(sizeof(xFixed) + sizeof(xRenderColor)))
         return BadLength;
 
@@ -3022,8 +3016,6 @@ SProcRenderCreateRadialGradient (ClientPtr client)
     swapl(&stuff->nStops, n);
 
     len = (client->req_len << 2) - sizeof(xRenderCreateRadialGradientReq);
-    if (stuff->nStops > UINT32_MAX/(sizeof(xFixed) + sizeof(xRenderColor)))
-	return BadLength;
     if (len != stuff->nStops*(sizeof(xFixed) + sizeof(xRenderColor)))
         return BadLength;
 
@@ -3048,8 +3040,6 @@ SProcRenderCreateConicalGradient (ClientPtr client)
     swapl(&stuff->nStops, n);
 
     len = (client->req_len << 2) - sizeof(xRenderCreateConicalGradientReq);
-    if (stuff->nStops > UINT32_MAX/(sizeof(xFixed) + sizeof(xRenderColor)))
-	return BadLength;
     if (len != stuff->nStops*(sizeof(xFixed) + sizeof(xRenderColor)))
         return BadLength;
 
diff --git a/nx-X11/programs/Xserver/hw/nxagent/X/NXrender.c.NX.original b/nx-X11/programs/Xserver/hw/nxagent/X/NXrender.c.NX.original
index de2df85..00c55cd 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/X/NXrender.c.NX.original
+++ b/nx-X11/programs/Xserver/hw/nxagent/X/NXrender.c.NX.original
@@ -1893,8 +1893,6 @@ ProcRenderCreateCursor (ClientPtr client)
     pScreen = pSrc->pDrawable->pScreen;
     width = pSrc->pDrawable->width;
     height = pSrc->pDrawable->height;
-    if (height && width > UINT32_MAX/(height*sizeof(CARD32)))
-	return BadAlloc;
     if ( stuff->x > width 
       || stuff->y > height )
 	return (BadMatch);
@@ -2355,8 +2353,6 @@ static int ProcRenderCreateLinearGradient (ClientPtr client)
     LEGAL_NEW_RESOURCE(stuff->pid, client);
 
     len = (client->req_len << 2) - sizeof(xRenderCreateLinearGradientReq);
-    if (stuff->nStops > UINT32_MAX/(sizeof(xFixed) + sizeof(xRenderColor)))
-	return BadLength;
     if (len != stuff->nStops*(sizeof(xFixed) + sizeof(xRenderColor)))
         return BadLength;
 
@@ -2959,18 +2955,18 @@ SProcRenderCreateSolidFill(ClientPtr client)
     return (*ProcRenderVector[stuff->renderReqType]) (client);
 }
 
-static void swapStops(void *stuff, int num)
+static void swapStops(void *stuff, int n)
 {
-    int i, n;
+    int i;
     CARD32 *stops;
     CARD16 *colors;
     stops = (CARD32 *)(stuff);
-    for (i = 0; i < num; ++i) {
+    for (i = 0; i < n; ++i) {
         swapl(stops, n);
         ++stops;
     }
     colors = (CARD16 *)(stops);
-    for (i = 0; i < 4*num; ++i) {
+    for (i = 0; i < 4*n; ++i) {
         swaps(stops, n);
         ++stops;
     }
@@ -2993,8 +2989,6 @@ SProcRenderCreateLinearGradient (ClientPtr client)
     swapl(&stuff->nStops, n);
 
     len = (client->req_len << 2) - sizeof(xRenderCreateLinearGradientReq);
-    if (stuff->nStops > UINT32_MAX/(sizeof(xFixed) + sizeof(xRenderColor)))
-	return BadLength;
     if (len != stuff->nStops*(sizeof(xFixed) + sizeof(xRenderColor)))
         return BadLength;
 
@@ -3022,8 +3016,6 @@ SProcRenderCreateRadialGradient (ClientPtr client)
     swapl(&stuff->nStops, n);
 
     len = (client->req_len << 2) - sizeof(xRenderCreateRadialGradientReq);
-    if (stuff->nStops > UINT32_MAX/(sizeof(xFixed) + sizeof(xRenderColor)))
-	return BadLength;
     if (len != stuff->nStops*(sizeof(xFixed) + sizeof(xRenderColor)))
         return BadLength;
 
@@ -3048,8 +3040,6 @@ SProcRenderCreateConicalGradient (ClientPtr client)
     swapl(&stuff->nStops, n);
 
     len = (client->req_len << 2) - sizeof(xRenderCreateConicalGradientReq);
-    if (stuff->nStops > UINT32_MAX/(sizeof(xFixed) + sizeof(xRenderColor)))
-	return BadLength;
     if (len != stuff->nStops*(sizeof(xFixed) + sizeof(xRenderColor)))
         return BadLength;
 
diff --git a/nx-X11/programs/Xserver/hw/nxagent/X/NXrender.c.X.original b/nx-X11/programs/Xserver/hw/nxagent/X/NXrender.c.X.original
index d25d497..d2759ab 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/X/NXrender.c.X.original
+++ b/nx-X11/programs/Xserver/hw/nxagent/X/NXrender.c.X.original
@@ -1505,8 +1505,6 @@ ProcRenderCreateCursor (ClientPtr client)
     pScreen = pSrc->pDrawable->pScreen;
     width = pSrc->pDrawable->width;
     height = pSrc->pDrawable->height;
-    if (height && width > UINT32_MAX/(height*sizeof(CARD32)))
-	return BadAlloc;
     if ( stuff->x > width 
       || stuff->y > height )
 	return (BadMatch);
@@ -1920,8 +1918,6 @@ static int ProcRenderCreateLinearGradient (ClientPtr client)
     LEGAL_NEW_RESOURCE(stuff->pid, client);
 
     len = (client->req_len << 2) - sizeof(xRenderCreateLinearGradientReq);
-    if (stuff->nStops > UINT32_MAX/(sizeof(xFixed) + sizeof(xRenderColor)))
-	return BadLength;
     if (len != stuff->nStops*(sizeof(xFixed) + sizeof(xRenderColor)))
         return BadLength;
 
@@ -2493,18 +2489,18 @@ SProcRenderCreateSolidFill(ClientPtr client)
     return (*ProcRenderVector[stuff->renderReqType]) (client);
 }
 
-static void swapStops(void *stuff, int num)
+static void swapStops(void *stuff, int n)
 {
-    int i, n;
+    int i;
     CARD32 *stops;
     CARD16 *colors;
     stops = (CARD32 *)(stuff);
-    for (i = 0; i < num; ++i) {
+    for (i = 0; i < n; ++i) {
         swapl(stops, n);
         ++stops;
     }
     colors = (CARD16 *)(stops);
-    for (i = 0; i < 4*num; ++i) {
+    for (i = 0; i < 4*n; ++i) {
         swaps(stops, n);
         ++stops;
     }
@@ -2527,8 +2523,6 @@ SProcRenderCreateLinearGradient (ClientPtr client)
     swapl(&stuff->nStops, n);
 
     len = (client->req_len << 2) - sizeof(xRenderCreateLinearGradientReq);
-    if (stuff->nStops > UINT32_MAX/(sizeof(xFixed) + sizeof(xRenderColor)))
-	return BadLength;
     if (len != stuff->nStops*(sizeof(xFixed) + sizeof(xRenderColor)))
         return BadLength;
 
@@ -2556,8 +2550,6 @@ SProcRenderCreateRadialGradient (ClientPtr client)
     swapl(&stuff->nStops, n);
 
     len = (client->req_len << 2) - sizeof(xRenderCreateRadialGradientReq);
-    if (stuff->nStops > UINT32_MAX/(sizeof(xFixed) + sizeof(xRenderColor)))
-	return BadLength;
     if (len != stuff->nStops*(sizeof(xFixed) + sizeof(xRenderColor)))
         return BadLength;
 
@@ -2582,8 +2574,6 @@ SProcRenderCreateConicalGradient (ClientPtr client)
     swapl(&stuff->nStops, n);
 
     len = (client->req_len << 2) - sizeof(xRenderCreateConicalGradientReq);
-    if (stuff->nStops > UINT32_MAX/(sizeof(xFixed) + sizeof(xRenderColor)))
-	return BadLength;
     if (len != stuff->nStops*(sizeof(xFixed) + sizeof(xRenderColor)))
         return BadLength;
 
diff --git a/nx-X11/programs/Xserver/hw/nxagent/X/NXresource.c.NX.original b/nx-X11/programs/Xserver/hw/nxagent/X/NXresource.c.NX.original
index 91e03cb..7dd021a 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/X/NXresource.c.NX.original
+++ b/nx-X11/programs/Xserver/hw/nxagent/X/NXresource.c.NX.original
@@ -194,6 +194,10 @@ static DeleteType *DeleteFuncs = (DeleteType *)NULL;
 
 Atom * ResourceNames = NULL;
 
+#ifdef NXAGENT_SERVER
+static int nxagentResChangedFlag = 0;
+#endif
+
 void RegisterResourceName (RESTYPE type, char *name)
 {
     ResourceNames[type & TypeMask] =  MakeAtom(name, strlen(name), TRUE);
@@ -201,10 +205,6 @@ void RegisterResourceName (RESTYPE type, char *name)
 
 #endif
 
-#ifdef NXAGENT_SERVER
-static int nxagentResChangedFlag = 0;
-#endif
-
 RESTYPE
 CreateNewResourceType(DeleteType deleteFunc)
 {
diff --git a/nx-X11/programs/Xserver/hw/nxagent/X/NXresource.c.NX.original b/nx-X11/programs/Xserver/hw/nxagent/X/NXresource.c~
similarity index 100%
copy from nx-X11/programs/Xserver/hw/nxagent/X/NXresource.c.NX.original
copy to nx-X11/programs/Xserver/hw/nxagent/X/NXresource.c~
index 91e03cb..7dd021a 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/X/NXresource.c.NX.original
+++ b/nx-X11/programs/Xserver/hw/nxagent/X/NXresource.c~
@@ -194,6 +194,10 @@ static DeleteType *DeleteFuncs = (DeleteType *)NULL;
 
 Atom * ResourceNames = NULL;
 
+#ifdef NXAGENT_SERVER
+static int nxagentResChangedFlag = 0;
+#endif
+
 void RegisterResourceName (RESTYPE type, char *name)
 {
     ResourceNames[type & TypeMask] =  MakeAtom(name, strlen(name), TRUE);
@@ -201,10 +205,6 @@ void RegisterResourceName (RESTYPE type, char *name)
 
 #endif
 
-#ifdef NXAGENT_SERVER
-static int nxagentResChangedFlag = 0;
-#endif
-
 RESTYPE
 CreateNewResourceType(DeleteType deleteFunc)
 {
diff --git a/nx-X11/programs/Xserver/hw/nxagent/X/NXshm.c b/nx-X11/programs/Xserver/hw/nxagent/X/NXshm.c
index a6d638e..e3e4f4b 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/X/NXshm.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/X/NXshm.c
@@ -967,17 +967,8 @@ ProcShmPutImage(client)
         return BadValue;
     }
 
-    /* 
-     * There's a potential integer overflow in this check:
-     * VERIFY_SHMSIZE(shmdesc, stuff->offset, length * stuff->totalHeight,
-     *                client);
-     * the version below ought to avoid it
-     */
-    if (stuff->totalHeight != 0 && 
-	length > (shmdesc->size - stuff->offset)/stuff->totalHeight) {
-	client->errorValue = stuff->totalWidth;
-	return BadValue;
-    }
+    VERIFY_SHMSIZE(shmdesc, stuff->offset, length * stuff->totalHeight,
+		   client);
     if (stuff->srcX > stuff->totalWidth)
     {
 	client->errorValue = stuff->srcX;
diff --git a/nx-X11/programs/Xserver/hw/nxagent/X/NXshm.c.NX.original b/nx-X11/programs/Xserver/hw/nxagent/X/NXshm.c.NX.original
index a6d638e..e3e4f4b 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/X/NXshm.c.NX.original
+++ b/nx-X11/programs/Xserver/hw/nxagent/X/NXshm.c.NX.original
@@ -967,17 +967,8 @@ ProcShmPutImage(client)
         return BadValue;
     }
 
-    /* 
-     * There's a potential integer overflow in this check:
-     * VERIFY_SHMSIZE(shmdesc, stuff->offset, length * stuff->totalHeight,
-     *                client);
-     * the version below ought to avoid it
-     */
-    if (stuff->totalHeight != 0 && 
-	length > (shmdesc->size - stuff->offset)/stuff->totalHeight) {
-	client->errorValue = stuff->totalWidth;
-	return BadValue;
-    }
+    VERIFY_SHMSIZE(shmdesc, stuff->offset, length * stuff->totalHeight,
+		   client);
     if (stuff->srcX > stuff->totalWidth)
     {
 	client->errorValue = stuff->srcX;
diff --git a/nx-X11/programs/Xserver/hw/nxagent/X/NXshm.c.X.original b/nx-X11/programs/Xserver/hw/nxagent/X/NXshm.c.X.original
index f25bb9b..e2cf8cd 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/X/NXshm.c.X.original
+++ b/nx-X11/programs/Xserver/hw/nxagent/X/NXshm.c.X.original
@@ -863,17 +863,8 @@ ProcShmPutImage(client)
         return BadValue;
     }
 
-    /* 
-     * There's a potential integer overflow in this check:
-     * VERIFY_SHMSIZE(shmdesc, stuff->offset, length * stuff->totalHeight,
-     *                client);
-     * the version below ought to avoid it
-     */
-    if (stuff->totalHeight != 0 && 
-	length > (shmdesc->size - stuff->offset)/stuff->totalHeight) {
-	client->errorValue = stuff->totalWidth;
-	return BadValue;
-    }
+    VERIFY_SHMSIZE(shmdesc, stuff->offset, length * stuff->totalHeight,
+		   client);
     if (stuff->srcX > stuff->totalWidth)
     {
 	client->errorValue = stuff->srcX;


hooks/post-receive
-- 
nx-libs.git (NX (redistributed))

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "nx-libs.git" (NX (redistributed)).




More information about the x2go-commits mailing list