diff options
Diffstat (limited to 'doc')
12 files changed, 12785 insertions, 0 deletions
diff --git a/doc/_attic_/NoMachine_documentation_files/nx-X11_CHANGELOG b/doc/_attic_/NoMachine_documentation_files/nx-X11_CHANGELOG new file mode 100644 index 000000000..ffbbe0a61 --- /dev/null +++ b/doc/_attic_/NoMachine_documentation_files/nx-X11_CHANGELOG @@ -0,0 +1,1085 @@ +ChangeLog: + +nx-X11-3.5.0-2 + +- Fixed TR0202420. XKB utility functions wrote out of bounds. + +- Upgraded RandR server extension to version 1.2. + +nx-X11-3.5.0-1 + +- Opened the 3.5.0 branch based on nx-X11-3.4.0-4. + +- Updated copyright to year 2011. + +nx-X11-3.4.0-4 + +- Fixed TR06H02359. Removed compiler warnings. + +nx-X11-3.4.0-3 + +- Updated copyright to year 2010. + +nx-X11-3.4.0-2 + +- Fixed TR04G02208. Added a path to rgb file. + +nx-X11-3.4.0-1 + +- Opened the 3.4.0 branch based on nx-X11-3.3.0-7. + +- Updated copyright to year 2009. + +nx-X11-3.3.0-7 + +- Fixed TR08G02257. The maximum client condition was reached because + available fd exhausted. This bug was caused by a function in font + library not closing the file before a return on error breaking the + flow of normal execution. + +- Fixed TR06G02225. The implementation of Xvprintf() has been reviewed + to work on more platforms. Previous implementation caused a failure + in the build of keyboard map on some platform like Solaris 8 and 9. + +nx-X11-3.3.0-6 + +- Fixed TR03G02198. Reimplemented Xvprintf() in Xserver/os to handle + the case in which vsnprintf returned -1. + +- Returning from _XSeqSyncFunction() and _XReply() if an I/O error is + detected. + +nx-X11-3.3.0-5 + +- Fixed TR01G02163. Signals need to be blocked before the call to + fork() in the Popen() utility. + +- Fixed TR01G02164. Trapezoid data need to be validated before use. + This issue was the same of CVE-2007-2437. + +nx-X11-3.3.0-4 + +- Enabled the code resetting the Xlib buffer if an IO error occured. + +nx-X11-3.3.0-3 + +- Fixed the search path for the XKB base directory. + +nx-X11-3.3.0-2 + +- Fixed TR10F02116. The X11 agent could enter an indefinite wait state + if connection to X display is broken and libX11 output buffer is not + empty. + +nx-X11-3.3.0-1 + +- Opened the 3.3.0 branch based on nx-X11-3.2.0-2. + +nx-X11-3.2.0-2 + +- 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. + +nx-X11-3.2.0-1 + +- Opened the 3.2.0 branch based on nx-X11-3.1.0-6. + +nx-X11-3.1.0-6 + +- Modified Xserver Imakefile to link the Xfixes library. + +nx-X11-3.1.0-5 + +- Disabled the terminate action, just in case the TerminateServer + symbol is binded to a non default key sequence. + +nx-X11-3.1.0-4 + +- 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. + +nx-X11-3.1.0-3 + +- Moved a variable definition placed in _mesa_make_current(). + +nx-X11-3.1.0-2 + +- Fixed TR10E01924. A crash could occur in _mesa_make_current(). + +- Initialized after_ret variable in _XcmsGetProperty(). + +nx-X11-3.1.0-1 + +- Opened the 3.1.0 branch based on nx-X11-3.0.0-37. + +nx-X11-3.0.0-37 + +- Changed the Xserver Imakefile to link against Xcomposite on the + Cygwin platform too. + +nx-X11-3.0.0-36 + +- Fixed TR07E01806. Modified host.def to build GLX code with symbol + __GLX_ALIGN64 defined on Solaris platform. + +nx-X11-3.0.0-35 + +- Flush explicitly the NX link before entering the select() in the + WaitForReadable() and WaitForWritable() routines. + +nx-X11-3.0.0-34 + +- Changed the agent Imakefile to link to the Xcomposite library. + +nx-X11-3.0.0-33 + +- Fix the NX_TRANS_WAKEUP stuff in WaitForSomething() to not over- + ride a valid timeout. + +- Check if the requesting client is gone in the XFixes functions + sending the cursor events. + +nx-X11-3.0.0-32 + +- Define DDXOSVERRORF and DDXOSFATALERROR symbols on Sun. + +- Changed the copyright attribution from Medialogic to NoMachine. + +nx-X11-3.0.0-31 + +- Make SmartScheduleStopTimer() visible outside Xserver/os/utils.c + so that it can be called by the agent. Export the declaration in + dixstruct.h. + +nx-X11-3.0.0-30 + +- The OsVendorVErrorFFatal flag is set to 1 if the function pointed + by OsVendorVErrorFProc is called due to a fatal error. + +- 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. + +nx-X11-3.0.0-29 + +- Changed the default message printed on a fatal server error. The + new message is: + + Error: Aborting session with 'Error text...'. + +- Hacked LogVWrite() to force all fatal error messages to have an + uppercase initial. Also remove the trailing newline and the full- + stop, if present. + +nx-X11-3.0.0-28 + +- Corrected the typos in the ChangeLog. + +nx-X11-3.0.0-27 + +- Fixed the cleanup of the X_RenderCompositeText16 padding bytes. + +- More code cleanup in the NX changes to the Xrender library. + +- Changed host.def to build the freetype and fontconfig libraries + if the agent server is also built. Freetype is built as a shared + library: this avoids the link error on 64 bit platforms. + +nx-X11-3.0.0-26 + +- Applied the following security patches, from the X.Org security + advisory, April 3rd, 2007 "Multiple vulnerability in X server, + libXfont and libX11": + + xorg-xserver-1.2.0-xcmisc.diff + xorg-libXfont-1.2.7-bdf-fontdir.diff + xorg-libX11-1.1.1-xinitimage.diff + +nx-X11-3.0.0-25 + +- Added the missing *.X.original file for ChkIfEv.c and Xlib.h. + +nx-X11-3.0.0-24 + +- Changed Xrender to clean up the padding bytes in XRenderComposite- + Text functions. + +- Added function XRenderCleanGlyphs() cleaning the padding bytes in + the data section of RenderAddGlyphs requests. + +nx-X11-3.0.0-23 + +- Removed the additional parameter from the call to NXTransFlush() + in _XReply(). + +- Call NXTransExit() on AbortServer() (called by FatalError()) to + give the proxy a chance to shut down the NX transport. + +nx-X11-3.0.0-22 + +- Moved the replacement of XCheckIfEvent() ChkIfEv.c with the name + XCheckIfEventNoFlush(). + +nx-X11-3.0.0-21 + +- Set BUFSIZE to 8192 bytes. While the output buffer size can be + configured by setting the XLIBBUFFERSIZE in the environment (see + OpenDis.c), this constant is still used when reading from the + socket. + +nx-X11-3.0.0-20 + +- If set, the handler pointed by _NXDisplayWriteFunction is called + after that more data is written to the display connection. + +nx-X11-3.0.0-19 + +- Added a RejectWellKnownSockets() stub to make possible to compile + the agent when the NX transport is disabled. + +- Added more useful logs to _XWaitForWritable(). + +nx-X11-3.0.0-18 + +- Changed Imakefile of X11 and Xserver in order to build nxcompshad + just before the NX agent server. + +- Changed Imakefile in Xserver to add NXdamage.o to NXAGENTOBJS. + +nx-X11-3.0.0-17 + +- Changed host.def in order to build Xdamage and Xrandr libraries. + +- Changed host.def in order not to build NXWin. + +nx-X11-3.0.0-16 + +- Changed host.def in order to build Xtst as a shared library. + +nx-X11-3.0.0-15 + +- Changes to comply with nxcompshad library. + +- Changed configuration to statically build Xtst library. + +- Restored parser directory under Xserver/hw/xfree86. + +nx-X11-3.0.0-14 + +- Changed the LICENSE file to state that the software is only made + available under the version 2 of the GPL. + +- Added file COPYING. + +- In nx-X11/programs and nx-X11/programs/Xserver/hw/xfree86, removed + files and directories not needed to build servers. + +nx-X11-3.0.0-13 + +- Changes aimed to link servers with static versions of Xdmcp and Xau + libraries. + +nx-X11-3.0.0-12 + +- Added references to implented FR in the ChangeLog. + +- Removed nx-X11/fonts and nx-X11/doc directories. They are not needed + for building the NX components. + +nx-X11-3.0.0-11 + +- Updated the copyright notices to year 2007. + +nx-X11-3.0.0-10 + +- Applied the following security patches: + + x11r6.9.0-cidfonts.diff + x11r6.9.0-dbe-render.diff + x11r6.9.0-geteuid.diff + x11r6.9.0-mitri.diff + x11r6.9.0-setuid.diff + +nx-X11-3.0.0-9 + +- Merged the NX changes to X11 with the X11R6.9.0 version of X.org. + +nx-X11-3.0.0-8 + +- Changes to build Xshadow library when building X11. + +- Changes to Xserver Imakefile to link Xshadow library. + +- Changes to host.def in order to build on old distributions. + +nx-X11-3.0.0-7 + +- Imported changes up to nx-X11-2.1.0-2 + +- Fixed TR08D01485. Updated rgb file paths validation in order to + support Ubuntu distribution. + +- Added Xtst to libraries to be linked by nxagent. + +- Changed Xpm Imakefile to build a shared library on Solaris. + +- Fixed build error on Solaris in xtrans. + +- Changed host.def not to build Xnest server. + +- Changed Xserver Imakefile to link nxaccess library. + +nx-X11-3.0.0-6 + +- Added the path of nxaccess library to the server link command. + +nx-X11-3.0.0-5 + +- Implemented FR10C01079 and FR10C01080. The merge of NX changes to + the X.org code is complete. + +- Merged changes in config/cf. The NX-*.def files have been dismissed. + Main platform dependent configurations have been moved to host.def. + +- Removed *.reference files from config/cf. + +- Fixed compilation for Cygwin platform. + +nx-X11-3.0.0-4 + +- Imported all changes up to nx-X11-2.0.0-32. + +- Cleaned up lib/zlib directory. + +- Added missing file programs/Xserver/os/utils.c.NX.original. + +- Updated the copyright notice to year 2006. + +- The pointer to the display buffer is reset after an I/O error. + This prevents leaving the buffer in an inconsistent state if the + error occurs inside _XFlush(). + +- Removed the modifications to the Xrender library. The cleanup of + the padding bytes is now performed by the NX transport. + +- NX uses the updated ZLIB from its build tree, so Imake.tmpl will + now assume that the platform as ZLIB unless otherwise stated. + +- The path of the SecurityPolicy file is searched and validated at + runtime. + +- Added the _X11TransSocketProxyConnInfo() function to Xtranssock.c + It returns the pointer to the XtransConnInfo private, if it is a + valid _NXProxyConnInfo structure. + +- The above function is used by OpenDis.c to detect if the NX trans- + port was requested on the display and avoid spurious error messa- + ges in the case of a connection failure. + +- Added NXmiwindow.o to the NXAGENTOBJS in the Xserver's Imakefile + and imported NXmiwindow.c in nxagent. This allows us to check the + pointer to the pOldClip region in miSetShape() before going on + freeing it. + +- The path of the XKB base directory and of the xkbcomp comand is + validated at runtime. + +- Also added a check to verify the validity of the rgb file path. + +- Added NXresource.o to NXAGENTOBJS in the Imakefile of nxagent. We + need this to a assign a resource to the pixmaps and other server + objects which need to be enumerated at reconnection. Some objects, + being created by the X server and not by the clients, don't pass + through the resource assignment process operated by the dix. To + ensure that all objects get a resource, we add a resource at the + time the object is created and temporarily assign the resource to + the server client. If the dix later assigns the resource to a va- + lid client, the resource is removed from the server client's list. + +- The display block handler registered by the client is called in + WaitForReadable() and WaitForWritable() before every select(), + not only upon entering the function. The reason is that more + data can be possibly produced for the NX link by the proxy it- + self and, when setting the flush policy to deferred, the client + may not have the chance of flushing the NX link. + +- Fixed a bug in XkbUseExtension() that caused Xlib to query the + presence of the XKEYBOARD extension multiple times. This partial- + ly implents the FR01D01275. The complete implementation required + modifications to the X11 agent, implemented in nxagent-2.0.0-33. + +- Updated to comply with the new NXTransFlush() interface. + +- Both nxwin and nxagent now read the X authority file by using an + fopen() instead of the system command 'cat'. + +- Removed NXmiwindow.o from the NXAGENTOBJ list. The agent will now + use the original miwindow.c. + +- Added some additional logs in Xtranssock.c to follow the creation + and removal of the X server's Unix listener. + +- Avoided the sleep of 5 seconds forced by Xtransutil.c if the dir- + ectory where the Unix listener is created is not owned by root. + This sleep is not executed on Cygwin (where the X socket can be + hardly owned by root) but may delay the startup of the agent if + the user chose a different NX_TEMP directory. Furthermore, it is + unclear what real benefits such sleeps are intended to bring to + the security of the X server. This can be controlled by defining + the NX_TRANS_SLEEP directive in Xserver/os/Imakefile. + +- Added NXmiexpose.o to the NXAGENTOBJ. + +- Ensured that _X11TransSocketCloseConnInfo() now initiates the NX + shutdown by calling NXTransClose(). + +- Corrected a misplaced #else that made SocketUNIXConnect() skip a + block if the connection was not to the NX transport. + +- Updated to comply with the new NX function prototypes introduced + in nxcomp-2.0.0-31. + +- Moved the most important Xtranssock.c modifications into separate + functions. + +- Ensured that the modifications enabling the internal connections + to the proxy are compiled only when the TRANS_CLIENT directive is + defined. + +- Solved a bug that prevented the X11 socket to be deleted at the X + server shutdown. This needs further tests. + +- Added nxcompext to the link of nxagent, now that the dependency + of libX11 from nxcompext is removed. + +- Improved the Xtranssock routines to never loop through the array + of connection info. + +- Added a congestion flag to the connection info structure and a + function querying the transport and reporting if a change in the + congestion state has occurred. The code is currently not enabled, + because instead of polling the transport, we let the proxy notify + the changes in congestion state by using the callback. The code + can be used in future to extend the library, for example, by add- + ing some counters tracking the bandwidth usage of the socket con- + nection, so that we can make the congestion notifications work + even with a plain X11 connection. + +- Profiled the routines in XlibInt.c to reduce the number of calls + to the error predicate function provided by the client. + +- Fixed the nxcompext build problem that caused make World to fail. + +- Added a 'CONF' target to the X11 and Xext Imakefiles so that the + configure script is not run if the config.status exists. + +- Added the _NXDisplayBlockHandler hook. The function is called by + Xlib before blocking. The parameter says if Xlib is going to wait + for more input or because it needs to write to the display socket. + The client can use the hook to perform any internal operation that + may require some time to complete. The user, though, should not + try to read or write to the display inside the callback routine. + +- Removed the outdated NX_TRANS_PROCESS, NX_TRANS_THREAD and NX_TR- + ANS_INCLUDE defines. + +- Reverted the lib/Xext Imakefile to the original XF86 version and + moved the build of the nxcompext library among the libX11 depend- + encies. + +- Corrected the lib/X11 Imakefile so that a new build of nxcomp and + nxcompext is not attempted if the libraries are up-to-date. + +- Removed the unused display buffer and image cleanup functions. + +- Reverted the PutImage.c file to the original XF86 version. + +- Added the _NXDisplayErrorPredicate function in XlibInt.c. It is + actually a pointer to a function called whenever Xlib is going to + perform a network operation. If the function returns true, the + call will be aborted and Xlib will return the control to the ap- + plication. It is up to the application to set the XlibDisplayIO- + Error flag after the _NXDisplayErrorPredicate returns true. The + function can be used to activate additional checks, besides the + normal failures detected by Xlib on the display socket. For exam- + ple, the application can set the funciton to verify if an inter- + rupt was received or if any other event occurred mandating the + end of the session. + +- Modified XIfEvent(), XMaskEvent() and XPeekIfEvent() to check the + _NXDisplayErrorPredicate function and return immediately if the + function returns true. + +- Modified _XWaitForReadable() to never enter the loop if the dis- + play is broken. + +- Corrected a make problem on Windows that caused the nxcomp and + nxcompext libraries to be referred with the wrong name, with the + result that a new configure and make was attempted at each build + attempt. + +- Merged all the changes to os, Xext, xkb, dix. + +- Changed host.def to build only the agent server. + +- Merged the changes to Xtranssock.c + +nx-X11-3.0.0-3 + +- Merged the changes to lib/X11. Restored original PutImage.c and + ClDisplay.c files. + +nx-X11-3.0.0-2 + +- Created a directory named 'reference' to keep files that are chan- + ged during the development of nx-X11 since the 1.5.0-16 to 2.0.0-32 + version. These files will be removed as long as the differences are + merged to the 3.0.0 version. When all differences are merged, this + directory will be removed. + +nx-X11-3.0.0-1 + +- Opened the 3.0.0 branch based on the nx-X11-2.0.0-9. The 3.0.0 + branch will now support the migration toward the X.org tree. Due + to time concerns, the 2.0.0 branch is going to be based on the + same nx-X11 as the 1.5.0. + +nx-X11-2.0.0-9 + +- Modified the agent link arguments to explicitly include the NX + libraries. + +- Disabled the Xinerama extension to avoid further clashes with + the redefinition of GC in Xlib. + +- Added os/libos.a at the end of the agent link. + +nx-X11-2.0.0-8 + +- Moved the declarations of _NXEnable* and related structures from + Xlibint.h to NXlibint.h. + +- Added provision for building the agent. This can be controlled by + setting NXAgentServer to YES in host.def. + +- Setting the NXUpgradeAgentServer variable to YES in the host.def + file will make the agent assume that it is being built in the new + environment. This variable is normally unset when building in the + 1.5.0 tree. + +nx-X11-2.0.0-7 + +- Fixed a problem on AMD64 due to the size of the area pointed by + the argument of _X11TransBytesReadable(). BytesReadable_t is long, + at least on Linux, while the ioctl() requires a pointer to an int. + The original _X11TransBytesReadable() function simply calls the + ioctl() by passing the pointer that is provided. NXTransReadable(), + instead, was correctly returning the value assuming a pointer to + a long, but this crashes some applications, among them xterm. Now + NXTransReadable() follows the same schema of the ioctl() call and + stores the result assuming a pointer to an int. + +- Removed the outdated NX_TRANS_PROCESS and NX_TRANS_THREAD code. + +nx-X11-2.0.0-6 + +- Made xterm work with the NX transport. This required small changes + to the Xt toolkit's and the xterm's files to let them use the NX + aware select(). This is useful to test the NX transport until the + nxagent server is integrated. + +- When the transport is gone _X11TransSocketBytesReadable() returns + EPIPE. This makes the client become aware of the closure of the + connection. + +- Added a call to NXTransDestroy() in XCloseDisplay(). + +- The exit() function in XlibInt.c causes a call to NXTransExit(). + +- Merged changes to dix/pixmap.c, xkb/xkbDflts.h, mi/Imakefile. + +- Removed unneeded changes and files containing patches already in + the latest X.org distribution: dix/dispatch.c, fb/fbcompose.c, fb/ + fbgc.c, xkb/ddxList.c, font/fontfile/dirfile.c, font/fontfile/ + encparse.c, font/fontfile/fontfile.c, font/FreeType/fttools.c, + Xrender/FillRect.c, Xrender/Picture.c. + +nx-X11-2.0.0-5 + +- Changes to the lib/X11/Imakefile to cleanly build the tree. This + is obtained by creating a link to the Xcomp library in exports/lib + without having to modify the programs' Imakefiles. + +- Finished merging the NX changes in the lib/X11 files. + +- Merged the CHANGELOG with the one from the 1.5.0 tree. + +nx-X11-2.0.0-4 + +- Merged the NX changes in most Xtrans and lib/X11 files. + +nx-X11-2.0.0-3 + +- Temporarily disabled the use of the MMX extensions in the Xserver's + fb code to successfully compile with GCC 4. + +nx-X11-2.0.0-2 + +- Imported the *.NX.reference and *.XF86.reference files that will + be needed for the merge. These files are the *.original from the + 1.5.0 tree. They will be removed as long as the merge advances. + +nx-X11-2.0.0-1 + +- Created the 2.0.0 branch based on X.org the 6.8.99.16 snapshot. + +nx-X11-1.5.0-16 + +- Added the missing *.XF86.original and *.NX.original files. + +nx-X11-1.5.0-15 + +- Made the nxagent server use select() instead of poll() on Solaris + so that it can leverage the new NX transport. + +- Moved the NXTransFlush() call to _XReply(). + +nx-X11-1.5.0-14 + +- Added the 'synchronous' parameter in the _XWaitForReadable() call + to NXTransFlush(). + +nx-X11-1.5.0-13 + +- Removed the log entry in XlibInt.c on calling the NXTransFlush(). + +nx-X11-1.5.0-12 + +- Changed XlibInt.c and utils.c to call NXTransExit(). + +nx-X11-1.5.0-11 + +- Changed XlibInt.c to comply with the new NXTransFlush() interfa- + ce introduced in nxcomp-1.5.0-42. + +- Cosmetic changes to messages printed for debug. + +nx-X11-1.5.0-10 + +- Ensured that all calls to _XIOError() are followed by a return. + +- Put exiting the client program in the case of an I/O error under + the control of the _NXContinueOnDisplayError flag. If set, the + I/O error routine will simply return, leaving to the application + the responsibility of checking the state of the XlibDisplayIOEr- + ror flag. + +- Added some checks whenever a read or write is performed on the X + connection, so that we can exit the I/O loop if the X channel is + gone. It is likely that more work will be needed when trying to + support XTHREADS enabled connections. This should not be a pro- + blem for now, as the default is still to quit the application un- + less the _NXContinueOnDisplayError flag is explicitly set. + +nx-X11-1.5.0-9 + +- Removed the references to the cygipc library in NXWin. Now use the + cygserver daemon to provide the MIT-SHM extension. + +- Fixed an error in the UseCygIPC definition. + +- Changed the cygwin.cf file to avoid redefinition of the BuildGlxExt, + XWinServer and BuildGlxExt symbols. + +nx-X11-1.5.0-8 + +- Added provision for deferred writes in the NX transport. When en- + tering _XWaitForReadable() we must ensure that data is flushed to + the proxy link. + +- Added the UseCygIPC define to NX-Cygwin.def. + +- Updated the NoMachine copyright notice on the modified files. + +nx-X11-1.5.0-7 + +- Added the GLX extension in NX-Sun.def. + +- Added some more logs in WaitFor.c. + +nx-X11-1.5.0-6 + +- Modified Xlibint.h and XlibInt.c to remove the _NXFlushSize para- + meter. New agents run the NX transport in-process, so we don't get + any benefit from increasing the display buffer size. + +- Modified NX-Darwin.def to not build the NXDarwin server. Since the + 1.4.0 version the NXDarwin server is unsupported and the NX client + for the Mac requires that the Apple X server is installed. + +- Changed NX-Linux.def to avoid the warning due to "SharedLibGLw" + being not defined. + +nx-X11-1.5.0-5 + +- Modified the Xserver Imakefile to link nxagent with FbPostFbLibs + and avoid including mfb/libmfb.a. + +- Added the GLX extension in NX-Linux.def. This provides unaccelera- + ted support in nxagent, with GLX operations translated into core X + protocol primitives. + +- Fixed x-X11/programs/Xserver/GL/dri/Imakefile to look in ../../hw/ + /xfree86/os-support/bus for includes. + +nx-X11-1.5.0-4 + +- Avoid calling NXTransSelect() if the transport is gone, so that we + don't have to wait until the timeout. + +- Added the "-fno-strict-aliasing" option to linux.cf when compiling + with a GCC version >= 4. In the words of Stefan Dirsch: "The opt- + ion, which is default since gcc 3.1, can result in wrong code when + the gcc warnings related to it are ignored. And as there are seve- + ral warnings in X11 related to it, it has been disabled for X11 + from the beginning. This didn't change for gcc4, so it still needs + to be used." + +- Added more logs in XlibInt.c and utils.c. A warning is printed if + the SmartScheduler is initialized. + +nx-X11-1.5.0-3 + +- Started integration of nxcomp with the X libraries. The Xtrans + code creates an internal connection to the nxcomp library instead + of a child proxy process. + +- Changed Xpoll.h and XlibInt.c to replace the standard Select + with a version giving NX a chance to check its own descriptors. + +- Implemented the NXTransReadVector() and the NXTransWriteVector() + functions to replace READV() and WRITEV(). + +- Implemented memory-to-memory communication with the NX proxy by + making use of the NXTransAgent() interface. + +nx-X11-1.5.0-2 + +- We think that the way LoadAuthorization() is working is wrong. + It doesn't reset the list of stored authorizations before reading + the new cookies. Our take is that if a new auth file is to be + read, the only cookies that are to be accepted are those that are + in the new file, not those in the file -plus- those that have + been in the file in the past. Furthermore, if the list can't be + read or it is empty, it should assume that it ignores which co- + okies are valid and thus it should disable any access. Your mile- + age can vary. A less draconian approach could be to leave the old + cookies if the file can't be read and remove them only if the + file is empty. + + Adding the cookies without removing the old values for the same + protocol has an important implication. If an user shares the co- + okie with somebody and later wants to revoke the access to the + display, changing the cookie will not work. This is especially + important with NX. For security reasons, after reconnecting the + session to a different display, it is advisable to generate a + new set of cookies, but doing that it is useless with the current + code, as the old cookies are going to be still accepted. On the + same topic, consider that once an user has got access to the X + server, he/she can freely enable host authentication from any + host, so the safe behaviour should be to reset the host based + authenthication at least at reconnection, and keep as valid only + the cookies that are actually in the file. This behaviour would + surely break many applications, among them a SSH connection run + inside a NX session, as ssh -X reads the cookie for the display + only at session startup and does not read the cookies again + when the auth file is changed. + + Another bug (or feature, depending on how you want to consider + it) is that if the authority file contains entries for different + displays (as it is the norm when the authority file is the default + .Xauthority in the user's home), the X server will match -any- of + the cookies, even cookies that are not for its own display. This + means that you have to be careful when passing an authority file + to nxagent and maybe keep separate files for letting nxagent find + the cookie to be used to connect to the remote display and for + letting it find what cookies to accept. If the file is the same, + clients will be able to connect to nxagent with both the cookies. + This bug obviously affects any X server, also the real X server + running on the workstation, so it is common to see nxagent being + able to connect to the X server even if no cookie matches the + real display. + +- Added a check in lib/Xau/AuRead.c to prevent the fread() call to + be interrupted by SIGCHLD while reading the auth file. Due to the + way the old code worked, this could lead to the server enabling + local host access to the display. This problem had been identified + in the past. We just found that all the code dealing with reading + the auth file was affected. The code calls sigprocmask() to block + the signal (though it leaves some other calls unprotected) but the + SIGCHLD was not included in the set. + +- Added SIGCHLD to the set of signals that are blocked when reading + the authorization file. + +- As I was at it, I changed the path to the SecurityPolicy file. A + few Linux ditributors ship the file in $LIBDIR/xserver, a few only + in /etc/X11/xserver, most others in both places. It seems that + those who ship in $LIBDIR/xserver do also in /etc/X11 but the op- + posite is not true, so I switched to /etc/X11. + +nx-X11-1.5.0-1 + +- Opened the 1.5.0 branch. + +nx-X11-1.4.1-2 + +- Set parameter UseCygIPC on cygwin conf file in order to force the + build of MIT-SHM estension. + +- Removed some spurius object file. + +nx-X11-1.4.1-1 + +- Opened the 1.4.1 branch. + +nx-X11-1.4.0-8 + +- Changed DefaultFontPath and DefaultRGBDatabase in + NX-Cygwin.def. + +nx-X11-1.4.0-7 + +- Imported dispatch in nxdarwin package, in order to let + nxdarwin being able to detect new client connection. + +- Changed the Xpm Imakefile to make also .a static library + on Solaris. To link nxviewer and nxdestkop staticaly. + +nx-X11-1.4.0-6 + +- XInput extension enabled on MacOSX. + +- Added some missing backup files of the original XFree86 + package. + +nx-X11-1.4.0-5 + +- Changed the mi Imakefile in order to let xfree86 servers use + the normal mi extension initialization for the XInput exten- + sion. + +- XInput extension enabled on Solaris. + +nx-X11-1.4.0-4 + +- Removed the RejectWellKnownSocket for the cygwin and + MacOSX environments that doesn't use the Xtransport library. + +nx-X11-1.4.0-3 + +- Changed the implementation of the reject method in the + Xtransport library, now close any new incoming connection + immediately without reading or writing to it. + +nx-X11-1.4.0-2 + +- Implemented a reject method in the Xtransport library, + this function accept and close every connection attempt, + on the specified listening socket. + +- Added the new function RejectWellKnownSocket to the os + connection code. + This function use the new transport reject function on + all listening socket. + +nx-X11-1.4.0-1 + +- Opened the 1.4.0 branch. + +- Removed forgotten nxagent-1.3.2-20 directory. + +nx-X11-1.3.2-9 + +- Prevents NX Darwin server going through the reset. On Darwin + we found that the it is not possible to get the correct key- + board layout unless it is set on the local machine, before + the NX session is started, by using xmodmap. As we set the + keyboard locally, we must prevent the X server to reset, or + we would loose any local configuration. + +nx-X11-1.3.2-8 + +- Removed action associated to keysym XK_Terminate_Server. This + could cause agent to be terminated when pressing shift + back- + space if using the default US keyboard mapping. + +- Disabled the remaining debug logs in lib/X11/PutImage.c + +nx-X11-1.3.2-7 + +- Fixed the wrong programs/Xserver/Imakefile in 1.3.2-6 package. + +nx-X11-1.3.2-6 + +- Changed the define from NX_CLEAN_IN_PLACE to NX_CLEAN_INPLACE. + Definition of symbol is now placed in the Imakefile. + +- The new _NXEnableCleanInplace Xlib variable does control which + algorithm is used to clean the images. Setting NX_IMAGEINPLACE + in the environment will activate the in-place cleanup. + +- The default value of _NXEnableCleanInplace is -1. Leaving it to + a value <= 0 disables use of CleanInplace. + +nx-X11-1.3.2-5 + +- Patch in config/cf/sun.cf. Fix for libfontconfig compilation + during gmake Everything on Solaris. + +- Patch in lib/X11/Imakefile. Fix for nxcomp compilation during + gmake World on Solaris. + +nx-X11-1.3.2-4 + +- Image cleanup is now performed by using NXCleanInPlaceImage from + nxcompext. This function saves a buffer copy by cleaning the + padding bytes in the same buffer provided by the caller. Note that + to prevent memory violations in the case the image was allocated + in a static buffer, the function will temporarily redefine the + SIGSEGV handler. The former handler is restored before returning + to the caller. This can potentially affect some multithreaded + clients. Is to be decided if the function is safe enough to be + included in the production release. + +nx-X11-1.3.2-3 + +- More debug logs in programs/Xserver/xkb/ddxLoad.c. + +nx-X11-1.3.2-2 + +- Added NXmiwindow.o to NXAGENTOBJS in programs/Xserver/Imakefile. + File was not linked into the resulting nxagent. This solves the + problem of missing repaints in CDE and other Xt applications. + +nx-X11-1.3.2-1 + +- Added some debug logs in programs/Xserver/xkb/ddxLoad.c. Function + XkbDDXCompileKeymapByNames is called by OpenOffice to read the + keyboard configuration whenever a drop-down menu is accessed. It + seem to always fail with the following error: + + The XKEYBOARD keymap compiler (xkbcomp) reports: + > Error: Can't find file "unknown" for geometry include + > Exiting + > Abandoning geometry file "default" + +- Opened the 1.3.2 development branch. + +nx-X11-1.3.1-12 + +- Fixed a problem in xkb/ddxLoad.c on Solaris where Pclose was + always returning an error code despite the fact that command + was executed properly. + +nx-X11-1.3.1-11 + +- Changed default GCC flags from '-O2 -fno-strength-reduce' to + -O3. No platform where NX is targeted is currently using a + GCC 2.x affected by the -fno-strength-reduce bug. Note also + that nxcomp is already compiled with -O3 since 1.1.1, so it + can be considered safe. + +nx-X11-1.3.1-10 + +- Imported an updated fbcompose.c file from XFree86-4.3.99.902. + This fixes "uninitialized value" problems reported by Valgrind. + +- Fixed further buffer overflows by updating the following file + with recent versions coming from the XFree86-4.3.99.902 tree. + + nx-X11/lib/font/fontfile/dirfile.c + nx-X11/lib/font/fontfile/encparse.c + nx-X11/lib/font/fontfile/fontfile.c + +- Fixed a possible buffer overflow in lib/font/FreeType/fttools.c. + Verified that the change is already in the XFree86 4.4.0 CVS. + +nx-X11-1.3.1-9 + +- Fixed Xserver/Imakefile which was still referencing NXpixmap.o. + +nx-X11-1.3.1-8 + +- Imported an updated fbgc.c from XFree86-4.3.99.902. This fixes + some minor problems reported by Valgrind. + +- A major problem was reported by Valgrind about reading after + the block allocated in fbCreatePixmap from AllocatePixmap. The + file pixmap.c has been modified so that 4 bytes are added to + the pixmap buffer at any new allocation. This quick hack should + solve the problem for both nxagent and the NXWin server. Further + investigation is planned for the next release. + +- Fixed Xtranssock.c to compile on Solaris where struct sigaction + doesn't have the sa_restorer member. + +nx-X11-1.3.1-5 + +- Renamed the NX-sun.def configuration file to NX-Sun.def. + +- Renamed the non-standard NX_iPAQ_XServer and NX_Zaurus_XServer + symbols to NXiPAQXServer and NXZaurusXServer. + +- Added the missing sun.cf.XF86.original file in config/cf. + +- Added the missing empty file host.def.XF86.original in the + same directory. + +- Added initialization of sa.sa_mask when setting sigaction() + for SIGCHLD. The problem was reported by Valgrind running + nxagent. + +- Removed an unused block of code from WaitFor.c. The code had + been commented out in previous versions. + +- Removed the non-standard colon at the end of version in this + CHANGELOG. + +- Removed the spurious spaces in this CHANGELOG. + +nx-X11-1.3.1-4 + +- Added a little workaround to the top Imakefile intended to + hide the makedepend warnings about non portable whitespaces + in sources. + +nx-X11-1.3.1-3 + +- Fixed compilation problem with nxagent-1.3.1-13. + +nx-X11-1.3.1-2 + +- Changes in NX-sun.def configuration file for Solaris to allow + compilation of the XKB extension. + +nx-X11-1.3.1-1 + +- Opened the 1.3.1 development branch. + +nx-X11-1.3.0-6 + +- Original output buffer size in stock XFree86 is 2048. We try + to reduce context switches and help stream compression by + increasing the maximum size of the buffer 8192. _NXFlushSize + determines when the display buffer is actually flushed. It is + set by default to 4096 but agents should set it to 0 if they + want to disable early flush. + +- Added the _NXLostSequenceFunction function pointer to let NX + agents suppress the error message and modify the default Xlib + behaviour when out-of-order sequence numbers are received. diff --git a/doc/_attic_/NoMachine_documentation_files/nx-X11_programs_Xserver_hw_nxagent_CHANGELOG b/doc/_attic_/NoMachine_documentation_files/nx-X11_programs_Xserver_hw_nxagent_CHANGELOG new file mode 100644 index 000000000..0a82773f4 --- /dev/null +++ b/doc/_attic_/NoMachine_documentation_files/nx-X11_programs_Xserver_hw_nxagent_CHANGELOG @@ -0,0 +1,6359 @@ +ChangeLog: + +nxagent-3.5.0-9 + +- Fixed an issue with cursor position set in XTest extension. + +nxagent-3.5.0-8 + +- Fixed TR01J02646. Performance issues with cairo version 1.12. + +- Fixed TR01J02667. Changes to mouse sensitivity couldn't be forwarded + to NX client host although -noignore was among extra options. + +- Fixed TR05J02705. Agent ignore WarpPointer requests. + +- Fixed TR05J02706. Suspended sessions could not be recovered using + a client form a different version. + +- Fixed TR05J02703. Agent failed because of missing checks on source + drawables in the render code. + +nxagent-3.5.0-7 + +- Fixed TR10I02622. Corrected function searching for icon file. + +nxagent-3.5.0-6 + +- Fixed TR10I02621. Avoided explicit call to XMapWindow() at recon- + nection stage. + +- Fixed TR10I02620. Solved error in default visual set up. + +- Fixed TR10H02390. Get the actual remote key code for CapsLock and + NumLock. + +nxagent-3.5.0-5 + +- The NX agent failed to resize its own window to fit the desktop size + in shadow sessions. TR07I02561 is now fixed also in shadow mode. + +nxagent-3.5.0-4 + +- Fixed TR07I02530. Solved a buffer overflow occurring when the '-fp' + option value exceeds 1024 characters. + +- Extended list of the available screen geometries. + +nxagent-3.5.0-3 + +- Fixed TR08I02572. Upgraded RandR extension to version 1.2. + +- Fixed TR07I02561. The NX agent failed to resize its own window to + fit the desktop size. + +nxagent-3.5.0-2 + +- Fixed TR0502449. Initialized font server path even if font server + connection fails. + +nxagent-3.5.0-1 + +- Opened the 3.5.0 branch based on nxagent-3.4.0-16. + +- Updated copyright to year 2009. + +- Fixed TR0302438. Added a check in function exporting property in + order to handle the case looking up an atom name returns a null + pointer. + +nxagent-3.4.0-16 + +- Updated copyright to year 2011. + +nxagent-3.4.0-15 + +- Added reference to fixed TR11H02405. + +nxagent-3.4.0-14 + +- Reverted fix for TR03H02335 implemented in nxagent-3.4.0-6. The + emulation of right click by Control key + left click introduces + issues for some applications changing the reaction to the left click + depending on the state of Control key. Issue reported in TR03H02335 + affects Apple laptop touchpads having a single button acting as + left button: on those devices the right button can be emulated by + a double-fingered tap (using two fingertips simultaneously). + +nxagent-3.4.0-13 + +- Fixed TR12H02414. Exported property must be split if ChangeProperty + request exceeds 262140 bytes. + +- Reset AllScreens option at reconnection time if full screen mode + have to be automatically turned off. + +nxagent-3.4.0-12 + +- If one of the two full screen modes is active ('one screen' or 'all + screens') both keystrokes Ctrl-Alt-F and Ctrl-Alt-Shift-F change the + mode back to 'windowed'. + +- Fixed TR11H02405. XRenderFreePicture is called only for pictures + that were actually created on the X server side. + +- Ctrl+Alt+f switch fullscreen to all monitors, while Ctrl+Alt+Shift+f + does it to one monitor only. + +- If the fullscreen option is enabled at the startup, session starts + in the fullscreen mode on all monitors. + +- Added a call to XReparentWindow in the nxagentSwitchAllScreens(). + +- Corrected focus and grab when switching to fullscreen on + all monitors. + +- Removed a compile warning e deleted some unused variables. + +- Removed nxagentPointerAndKeyboardGrabbed variable. + +- Use the override redirect attribute to switch to fullscreen to all + monitors instead of send _NET_WM_FULLSCREEN_MONITORS hint to the WM. + +- Added nxagentMinimizeFromFullScreen(), nxagentMaximizeToFullScreen() + and nxagentCreateIconWindow(). + +- Removed check on EnterNotify to grab the keyboard in fullscreen + mode not only if mode is 'NotifyNormal'. + +nxagent-3.4.0-11 + +- Corrected switching between viewport mode and resize mode. + +- Fixed TR04H02340. Keycode is correctly translated in shadow sessions + also if the remote X display is using evdev. + +nxagent-3.4.0-10 + +- Handled XGrabKeyboard() return value. + +- Fixed TR10D01512. NumLock and CapsLock keys are now synchronized + between local and remote. + +nxagent-3.4.0-9 + +- Fixed TR06H02362. No icon was swown in the task bar. + +- Fixed keyboard grab in fullscreen mode. + +- Fixed compiler warnings. + +nxagent-3.4.0-8 + +- Grab the keyboard in fullscreen mode on EnterNotify only if mode is + 'NotifyNormal'. + +- Yield control in the dispatch loop in case we stop the smart sche- + duler timer while waiting for a reply from the remote display. + +nxagent-3.4.0-7 + +- Fixed TR08D01478. The communication with the compiz window manager + by means of the _NET_WM_PING property was not handled properly. + +- Fixed a type mismatch in XKB events on 64 bit platforms. + +- Moved grab/ungrab keyboard from focus in/out event to enter/leave + notify event. + +- Removed nxagentIconWindow because it's not longer used. + +nxagent-3.4.0-6 + +- Fixed TR09F02102. Problem was with pointer buttons map. + +- Fixed TR02H02327. Some KeyRelease events was discarded. + +- Fixed up Num and Caps locks. + +- Fixed TR03H02335. Emulated right mouse button for Mac clients. + +- Added utilities to print info about internal and remote windows. + +- Fixed TR01F01995. Solved a picture resource leak by destroying remo- + te pictures only when their reference counter returns to zero. + +- Fixed TR04H02337. Errors occurred because pictures with no drawable + were handled badly. + +- Implemented handling nxagent's private for gradient pictures and so- + lid fill picture. + +- Fixed BadMatch condition check in function ProcRenderComposite. + +- Fixed nxagentComposite() to handle situations with source picture + drawable pointing to NULL. + +- Implemented render acceleration for requests: CreateSolidFill, + CreateLinearGradient, CreateRadialGradient, CreateConicalGradient. + +- Fixed TR03G02196. Dialogs are shown to the fore when the NX session + is in fullscreen mode. + +- Changed mechanism to switch to fullscreen mode. Now the override + redirect attribute is no longer used and _NET_WM_STATE_FULLSCREEN + hint is sent to the WM. + +nxagent-3.4.0-5 + +- Updated copyright to year 2010. + +nxagent-3.4.0-4 + +- Fixed TR07F02090. Now XDMCP sessions start without problems. + +- Fixed TR08G02259. Corrected window border granularity of rootless + session at reconnection on 64 bit platforms. + +- Fixed TR11G02290. Forcing null timeout with queued events only if + display connection is up. This prevents the flood of session log. + +- Fixed TR10G02287. Now QueryTree's loop is aborted in case of failure + and session log isn't filled anymore with repeated warning messages. + +- Fixed TR01G02154. Corrected window placement when switching between + fullscreen and windowed mode. + +- Fixed TR09G02276. Now the agent does not receive unwanted characters + while interacting with the local window manager. + +- Implemented FR02G02174. Added ability to do large screen pans in + viewport mode through key combination Ctrl+Alt+Shift+Arrow. + +- Corrected parsing of the 'client' option when the client OS is Mac. + +nxagent-3.4.0-3 + +- Fixed TR09G02271. The array containing the font name fields was not + correctly initialized for non-standard font names. + +nxagent-3.4.0-2 + +- Updated copyright to year 2009. + +nxagent-3.4.0-1 + +- Opened the 3.4.0 branch based on nxagent-3.3.0-19. + +- Changed the printed version number. + +nxagent-3.3.0-19 + +- Fixed TR09G02266. A proper error message is printed in the session + log if the shadowing initialization fails because of a mismatch in + the visual class. + +- Added a workaround for X servers that doesn't return 1 among the + available depths. + +nxagent-3.3.0-18 + +- The area to restore from the backing store is limited by the screen + size instead of the visible screen. + +nxagent-3.3.0-17 + +- Fixed TR12F02150. The agent could crash when copying text from VNC + viewer. Fixed by aborting the procedure in case the retrieved pro- + perty has not a valid format. + +nxagent-3.3.0-16 + +- Fixed TR07G02247. Don't try to call XSetWindowColormap() if the + window has no colormap, e.g. if its class is InputOnly. + +nxagent-3.3.0-15 + +- Fixed TR04G02210. Region is cut to the visible screen before re- + storing areas from the backing store. + +- Fixed TR07G02246. Box is shrinked if bounds can't stay in a short + signed integer. + +nxagent-3.3.0-14 + +- Fixed TR03G02206. waitpid() call was missing for the "Fonts replace- + ment" dialog type. + +- Fixed TR03G02195. Added a properties structure compatible with 32 + and 64 bit platform types. + +nxagent-3.3.0-13 + +- Handle the window unmap immediately. Don't add it to the configure + queue. + +nxagent-3.3.0-12 + +- Fixed TR03G02200. Timestamps could be in the future in KeyRelease + events sent to the X clients. + +- Added debug logging of input devices state Logging can be enabled + or disabled via the Ctrl+Alt+x shortcut. State info is dumped every + 5 seconds. + +- Added Ctrl+Alt+y shortcut used to deactivate input devices grab for + debug purposes. + +nxagent-3.3.0-11 + +- Changed the message logging the screen size changes, in order to + show the fullscreen state. + +- Handle the window unmapping in the nxagentConfigureWindow queue. + +nxagent-3.3.0-10 + +- Fixed TR12F02146. Compare the drawable and the bitmap data before + realizing the image update, in order to delay the data clean up that + caused the memcmp() failure. + +- Fixed TR01G02156. Reduce the exposing area by subtracting the ex- + posed region. + +- Fixed a compile warning in Drawable.c. + +- Added detailed logs in the nxagentSynchronizeRegion() function if + the data memory allocation fails. + +nxagent-3.3.0-9 + +- Added /usr/NX/share/base to alternate font paths. This would fix + TR11F02130 if fonts fixed and cursor are installed there. + +- Changed Keyboard initialization and reset. This change should fix + TR11F02129, TR11F02131, TR11F02132. + +nxagent-3.3.0-8 + +- Fixed TR12F02144. Image bits of render glyphs are copied before they + are cleaned. This will avoid a memory corruption. + +- Fixed TR12F02145. When dispatching a MotionNotify event, check if a + top-level window has been entered before trying to show the pulldown + dialog. + +nxagent-3.3.0-7 + +- Added debug code for pointer input. + +nxagent-3.3.0-6 + +- Fixed compile warnings. + +nxagent-3.3.0-5 + +- Disabled verbose logging in Rootless.c. + +nxagent-3.3.0-4 + +- Fix the XKB map load in the case of 64 bit server. + +nxagent-3.3.0-3 + +- Fixed TR10F02119. If the remote X display is using evdev keyboard + then copy maps from remote. + +- Upgraded VERSION to 3.3.0. + +nxagent-3.3.0-2 + +- Fixed TR10F02115. Painting errors occurred when screen areas beyond + the current viewport became viewable in the NX Client for Windows. + +- Using a new struct type nxagentWMHints to avoid type mismatch on + 64 bit platforms. + +- Added debug utilities for pointer input. + +nxagent-3.3.0-1 + +- Opened the 3.3.0 branch based on nxagent-3.2.0-12. + +nxagent-3.2.0-12 + +- Ignore 'resize' option at reconnection if viewport mode is on. + +- Fixed TR08E01814. Added shadow keymap initialization in order to + enable nxcompshad to translate keycodes across different layouts. + +nxagent-3.2.0-11 + +- Fixed TR08F02098. Function splitting font names has to be instruct- + ed to handle the right number of fields. + +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 + 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/doc/_attic_/NoMachine_documentation_files/nxcomp_CHANGELOG b/doc/_attic_/NoMachine_documentation_files/nxcomp_CHANGELOG new file mode 100644 index 000000000..b0323d4a7 --- /dev/null +++ b/doc/_attic_/NoMachine_documentation_files/nxcomp_CHANGELOG @@ -0,0 +1,3778 @@ +ChangeLog: + +nxcomp-3.5.0-2 + +- Fixed TR11H02398. Solved a race condition when creating channels. + +nxcomp-3.5.0-1 + +- Opened the 3.5.0 branch based on nxcomp-3.4.0-7. + +- Updated copyright to year 2011. + +nxcomp-3.4.0-7 + +- Fixed TR03H02334. Modified the UNIX domain socket checks on MacOSX + to be compliant with the standard introduced in OSX 10.6.3. + +nxcomp-3.4.0-6 + +- Solved compilation problems on Solaris. + +nxcomp-3.4.0-5 + +- Solved compilation problems on GCC 4.4. + +nxcomp-3.4.0-4 + +- Added reference to fixed TR02H02325. + +nxcomp-3.4.0-3 + +- Updated copyright to year 2010. + +nxcomp-3.4.0-2 + +- Fixed TR03G02204. Changed the parsing of X authority entries in + order to handle the case where the hostname includes white spaces. + +- Fixed TR02H02325. Bug in PNG decompression on 16bpp displays. + +nxcomp-3.4.0-1 + +- Opened the 3.4.0 branch based on nxcomp-3.3.0-4. + +- Changed version number. + +- Updated copyright to year 2009. + +nxcomp-3.3.0-4 + +- Check if the variable storing the ping time exceeded the maximum + integer value. + +- Recover incorrect sequence number when the proxy is not connected + to an agent. + +nxcomp-3.3.0-3 + +- Removed a condition in ClientChannel that caused a loss in event + sequence numbers. + +nxcomp-3.3.0-2 + +- Updated VERSION. + +nxcomp-3.3.0-1 + +- Opened the 3.3.0 branch based on nxcomp-3.2.0-7. + +nxcomp-3.2.0-7 + +- Solved a compilation problem on GCC 4.3. + +nxcomp-3.2.0-6 + +- Changes considering that unsetenv() returns void on Mac OS X. + +nxcomp-3.2.0-5 + +- Fixed TR03F02024. Assume the launchd unix socket as X socket. + +- Changed the authorization cookie retrieval when using the launchd + socket on MacOSX, in order to wait for the X server start. + +nxcomp-3.2.0-4 + +- Fixed TR03F02026. Unset environment variable LD_LIBRARY_PATH before + calling the exec function running nxclient. + +nxcomp-3.2.0-3 + +- Fix addMsTimestamp() and subMsTimestamp(). Remove the check for + a valid input in diffTimestamp() and diffUsTimestamp(). + +nxcomp-3.2.0-2 + +- Fixed TR12E01973. Now the correct number of bits are used for the + number of points in a X_FillPoly request. + +nxcomp-3.2.0-1 + +- Opened the 3.2.0 branch based on nxcomp-3.1.0-6. + +nxcomp-3.1.0-6 + +- Always use a timeout of 50 ms to update the congestion counter. + +nxcomp-3.1.0-5 + +- Solve the possible deadlock caused by both proxies running out of + tokens at the same time. + +- In ServerProxy::handleCheckDrop() copy the list since the function + can delete the elements. + +nxcomp-3.1.0-4 + +- Classes ProxyReadBuffer and ServerReadBuffer returned an invalid + number of characters to read in the case of a readable() failure. + +- Connections to proxy versions newer than 3.0.0 were not accepted. + +- Reading options from file could fail if options contained spaces + or other characters interrupting the fscanf()'s matching of input. + +- The proxy link could not be flushed if a ping request was replied + after the end of the read loop. + +nxcomp-3.1.0-3 + +- Fixed a compilation warning on GCC 2.95. + +nxcomp-3.1.0-2 + +- Solved TR09E01852. Modified the encoding of the number of rects + in the XSetClipRectangles request. + +nxcomp-3.1.0-1 + +- Opened the 3.1.0 branch based on nxcomp-3.0.0-46. + +nxcomp-3.0.0-46 + +- Fixed TR09E01865 and TR08E01831. Assume the old behavior of compr- + essing the CUPS, SMB, HTTP and Font channels when connected to an + old proxy version. + +nxcomp-3.0.0-45 + +- Retry the fork() 30 times, but only on Cygwin (Sob!). + +nxcomp-3.0.0-44 + +- In the case of an error, try again to fork() after a second, for + a maximum of 5 times. This seems to constitute a valid workaround + to the intermittent fork() failures observed on Windows. + +- Fixed NXTransDestroy() to show the 'broken connection' dialog in + the case of a link failure on the client. + +- Handled the 'terminating' and 'terminated' messages as new proxy + stages. + +- Force all the directories and files created by the library to be + readable only by the user. + +- Don't complain if the shared memory segment can't be initialized + on Windows. + +nxcomp-3.0.0-43 + +- Prevent the reallocation of the read buffer in the proxy and the + agent transport if the buffer was borrowed by an upper layer. + +- Let the house-keeping process remove the cache directories that + are empty and have not be used since more than 30 days. + +- Added the missing destruction of the ZLIB stream used for image + decompression at proxy shutdown. + +nxcomp-3.0.0-42 + +- In handleFastWriteReply(), moved the initialization of the 'next' + pointer inside the '#ifndef __sun' block. This should fix the re- + maining encoding problems on SPARCs. + +nxcomp-3.0.0-41 + +- VMWare virtual machines can have the system timer deadly broken. + In the case of timeout, try to send a ping regardless we are the + client or the server proxy to force a write by the remote. + +- Removed the messages 'Info: Using image cache parameters...' and + 'Info: Using image streaming parameters...' from the session log + if the image cache is not enabled. + +nxcomp-3.0.0-40 + +- Removed the messages 'Info: Shutting down the NX transport' and + 'Info: End of NX transport requested by...' at the session tear + down. + +- Removed the remaining log output. + +nxcomp-3.0.0-39 + +- Don't reset the timer on proxy shutdown. + +nxcomp-3.0.0-38 + +- Don't reinstall the signal handler if the signal was enabled and + the NXTransSignal() action is NX_SIGNAL_FORWARD. + +nxcomp-3.0.0-37 + +- Return a congestion level 9 if the agent channel is in congestion + state. + +- Set the idle timeout (used to update the congestion state) based + on the link type. The timeout is 0 ms with link LAN and 50 ms in + the case of MODEM, with the other values in the between. + +nxcomp-3.0.0-36 + +- Changed the encoding of the RenderCompositeGlyphs requests. Use + a separate cache for X and Y. Send a single bit for offset X and + offset Y if they match the source coordinates. + +- Always use the memcpy() in the handleFastWrite*() on Sun, as the + alternative code doesn't work on SPARC if the buffer is not word + aligned. + +nxcomp-3.0.0-35 + +- Ensure a smooth transition between different congestion states. + If the current congestion counter is greater than the previous, + ramp up the value quickly by taking the current counter. If the + new congestion counter is less than the previous, ramp down the + reported value slowly by calculating the average of the last 8 + updates. Reset the congestion counter to 0 if no token reply is + pending and the proxy is idle until a timeout. + +nxcomp-3.0.0-34 + +- Calculate the current congestion as the average of the last 3 + frames sent. + +nxcomp-3.0.0-33 + +- When sending a X_RenderCompositeGlyph update, send a single bit + if the source X and Y match the values in cache. + +- Save the check on the bytes readable from the proxy descriptor + after the select. + +nxcomp-3.0.0-32 + +- Send the X_GetImage replies uncompressed to better leverage the + stream compression. + +- Before entering in congestion state, force a read to see whether + the remote proxy aborted the connection. + +nxcomp-3.0.0-31 + +- Try to avoid using memcpy() in the channels' handleFastWrite*(). + +- Changed the copyright notices at the beginning of the files that + were referring to NXPROXY to refer to NXCOMP. + +nxcomp-3.0.0-30 + +- Set the agent and proxy descriptors as ready, when appropriate, + also in the case of an interrupt. + +nxcomp-3.0.0-29 + +- On the X server side, read more events from the X server just be- + fore and just after having written some data. On the X client si- + de, apply the same to the proxy link. + +- X11 channels originate a congestion control code as soon as the- + re is some data left from the previous write. + +nxcomp-3.0.0-28 + +- Displaced automatically the "channel unresponsive" and "no data + received from remote" dialogs if the error condition is ceased. + +- Rewritten the channel drain procedure. + +- Tried a different approach to the channel congestion handling. + The X11 channels are not drained after a blocking write but only + if a further write is requested and the channel is still in con- + gestion state. Benchmarks show that this is still sub-optimal, + compared to sending the congestion code immediately also for X11 + channels. See the next version. + +nxcomp-3.0.0-27 + +- Ignored the agent option 'defer'. + +- Dropped support for the 1.4.0 versions. + +- More fixes to support the 1.5.0. + +nxcomp-3.0.0-26 + +- The channel read buffer can inherit the data to be encoded from + the caller, instead of taking it from the transport. This is le- + veraged by the agent channel to save the copy. + +- Ignored the agent option 'clients'. + +- Removed the deprecated code checking the CPU limits. + +- Removed the counters that were duplicated in the Statistics and + the Control classes. + +nxcomp-3.0.0-25 + +- Improved the effectiveness of the caching of the RenderComposite- + Glyphs by using a differential encoding for the length, delta x + and delta y of the first string. + +- Better handle the compatibility between different formats of the + cache files. + +nxcomp-3.0.0-24 + +- Fixed the compatibility problem with the 1.5.0 versions. + +- Removed the constants NXDisplayReadable, NXDisplayFlushable and + NXDisplayCongestion. Now nxcompext has three distinct functions. + +nxcomp-3.0.0-23 + +- Removed support for Rdp, Tight and Hextile packed images decod- + ing since they have been made obsolete by the new NX server. + +- Use the value 0 for the action is_hit and 1 for is_added. This + increases the frequency of zeroes in the encode buffer, giving + better compression. + +- Changed the copyright attribution from Medialogic to NoMachine. + +nxcomp-3.0.0-22 + +- Implemented an alternate encoding reducing the size of the int + caches to 16 elements and transmitting the values in blocks of + 4 bits. Although this encoding reduces the effectiveness of + the differential compression, it allows better compression of + the final stream, resulting in a 10% to 20% gain in all condi- + tions. The new encoding is experimental, as it would make the + 3.0.0 incompatible with all the previous NX versions. Use this + package as a reference for future implementations. + +nxcomp-3.0.0-21 + +- Encode the first two coordinates of a FillPoly message by using + a differential encoding, thus the origin of the polygon is not + included in the checksum. This is aimed to work in combination + with the agent converting all the FillPoly requests to the rela- + tive coordinate mode. + +- Add the coordinate mode to the checksum of the PolyPoint and Po- + lyLine messages so that it doesn't need to be encoded separately. + +- Disable the streaming for all messages. This saves the encoding + of a boolean for each message that could potentially be streamed. + +- Don't try to match the block size when encoding a value based on + an IntCache. This saves the additional bool in 90% of the cases. + +- Removed support for the former RDP and RFB session types. + +- Due to the above changes, this version is incompatible with the + previous 3.0.0 releases. + +nxcomp-3.0.0-20 + +- 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. + +- Made the 'adaptive' pack method the default for all link types. + +- The default stream compression level is now 6 for link type ISDN, + 4 for ADSL and 1 for WAN. The default data compression level is + always 1, except for LAN that is 0. + +nxcomp-3.0.0-19 + +- Print in the session log the X11 display that the proxy is imper- + sonating or where it is forwarding the connections. + +nxcomp-3.0.0-18 + +- Implemented decoding of the PACK_BITMAP_16M_COLORS pack method. + This is a very simple encoder removing the 4th byte in 32 bits- + per-plane images. This encoder is intended to better leverage + the stream compression on low bandwidth links. + +- Removed the code cleaning the padding bytes in RenderAddGlyphs + and RenderCompositeGlyphs as the operation is now performed in + Xrender. + +- Removed the "Info: Synchronizing local and remote caches." and + "Info: Using remote server '...'." lines from the session log. + +nxcomp-3.0.0-17 + +- Determine the CPU endianess at compile time only on Linux and + Cygwin. + +nxcomp-3.0.0-16 + +- Optimized the memory allocation of the ReadBuffer classes. The + buffers from the Transport classes are used, when possible, to + avoid the copy. + +nxcomp-3.0.0-15 + +- Reworked the code dealing with the channel congestion control + messages for increased efficiency. + +- Removed the pending_ flag from the proxy and channel class mem- + bers. If needed, the classes will query the transport buffers + to see whether there is data pending. + +- Removed the additional parameter from NXTransFlush(). + +- The proxy doesn't issue anymore a sync control message on a X + reply. Anyway it will respond to the request for compatibility + with older versions. + +- Removed the dynamic selection of the encoding method for the + X_QueryColors request and X_ListFonts, X_QueryColors, X_Query- + Font replies. Now all of them use the differential encoding to + better leverage the stream compression. + +- Fixed to build on SUNs where we don't have endian.h. + +nxcomp-3.0.0-14 + +- When handling partial proxy messages, don't try to determine how + many bytes still need to be read if the ZLIB stream compression + is enabled. + +- If a message can't be located, the ReadBuffer class checks if it + is possible to consume the data already in the transport buffer. + +- Optimize the MD5 routines by determining the CPU endianess at + compile time. + +- Force Drawable and GContext to be CARD32 in NXproto.h. + +nxcomp-3.0.0-13 + +- Changed the semantic of the NXDisplayFlushHandler callback. The + function is called when new data is sent to the remote proxy or, + with a 0 length, upon receiving a new token reply, so that the + agent can update its congestion state. + +- Added the NXTransCongestion() function. It returns a value bet- + ween 0 and 9 indicating the congestion level based on the tokens + remaining. A value of 9 means that the link is congested and no + further data can be sent. + +- Removed the congestion and synchronization callbacks. They are + superseded by the new NXTransCongestion() implementation. + +nxcomp-3.0.0-12 + +- Send the token replies at the end of the encode loop instead of + flushing the buffer immediately. + +- Fixed TR05E01687. Correctly detect CTRL-ALT-SHIFT-ESC keystrokes. + +- Renamed the option 'block' as 'tile'. + +- Ignored the option 'menu', targeting the X11 agent. + +nxcomp-3.0.0-11 + +- Removed the 'interactive' attribute from generic channels. We now + use the 'prioritized' attribute which yields the same result. + +- Simplified the channels' read loop by always reading only once. + +- The channels flush the link as soon as the token is exceeded even + if the flush policy is set to deferred. + +- Reserved more cache memory for the images when running a shadow + session. + +nxcomp-3.0.0-10 + +- Added the NXDisplayWriteHandler callback definition. + +- Removed the code that forced the proxy to retain in the cache the + images referenced at session startup. + +- Disabled the persistent image cache since this is not supported + by the current agent. This will save the overhead caused by the + image house-keeping process. + +nxcomp-3.0.0-9 + +- Fixed a cast problem in GetBytesReadable(). + +nxcomp-3.0.0-8 + +- Added the NXTransTime() utility. It return the time in milliseconds + elapsed since the last call to the same function. Useful for bench- + marking the Xlib layer. + +- Ignored the option 'block' targeting the X11 agent. + +nxcomp-3.0.0-7 + +- Ignored the options 'shadow', 'shadowmode' targeting the X11 agent. + +- Added the session type 'shadow'. + +nxcomp-3.0.0-6 + +- Fixed TR08D01484. Fixed a bug in the cleanup of the RenderAddGlyphs + messages. We clean up only the glyphs with depth 8, width greater + than 1 and pixmap byte pad 4. + +- Added file COPYING. + +nxcomp-3.0.0-5 + +- Updated the copyright notices to the current year. + +nxcomp-3.0.0-4 + +- Imported changes up to nxcomp-2.1.0-6. + +- Fixed TR12D01563. Changed the configure script to always build the + library with the -fPIC option. This is related to the way SELinux + works. + +- Fixed the dependency from local endianess for 16-bit color RDP un- + packing functions. This caused wrong colors to be displayed when the + proxy and the X server were running on two separate machines having + different endianess. + +- Fixed TR10D01523. The Channel::handleDrain() method now accounts + for the fact that agent connections can't be drained. + +- Changed the Tight and Hextile decoding functions to use the X ser- + ver's byte order. + +nxcomp-3.0.0-3 + +- Changed the main loop to handle the 3.0.0 version. + +nxcomp-3.0.0-2 + +- Updated the file VERSION. + +nxcomp-3.0.0-1 + +- Opened the 3.0.0 branch based on nxcomp-2.0.0-81. + +nxcomp-2.0.0-81 + +- Fixed the dependency from local endianess for JPEG and PNG decomp- + ression functions. This caused wrong colors to be displayed when + the proxy and the X server were running on two separate machines + having different endianess. + +- Fixed the number of entries in the handleColormap() function. + +nxcomp-2.0.0-80 + +- Fixed TR06D01404. Removed the warning issued when calling the + AgentTransport::drain() method. + +nxcomp-2.0.0-79 + +- Updated copyright to year 2006. + +nxcomp-2.0.0-78 + +- Fixed a bug in the cleanup of the RenderAddGlyphs messages. + +- Minor improvements to the encoding of the RenderCompositeGlyphs + and RenderComposite requests. + +- Added 'client' to the list of the ignored options. + +nxcomp-2.0.0-77 + +- Added cleanup of the padding bytes in the RenderCompositeGlyphs + and RenderAddGlyphs requests. + +nxcomp-2.0.0-76 + +- Before adding the frame's bytes to the tokens, the frame length + is normalized based on the stream compression ratio of the last + frame sent. This avoids entering the drain loop too early when + the data is highly compressible. + +- Moved the render messages' private data in a union to reduce the + footprint of the render store. + +nxcomp-2.0.0-75 + +- The action performed on the remote message store and the affected + position are encoded as a single value. This saves approximately + 1 bit per each message. + +- Created more Compat classes to handle the backward compatibility + with the 1.4.0 and 1.5.0 versions. + +nxcomp-2.0.0-74 + +- Added support for the RLE pack method and made it the default if + the selected link type is LAN. + +- Removed the legacy support for the 'render' option provided at X + server side. + +- When defining LAME in ClientChannel.h, the channel has the chance + of suppressing more opcodes by the handleTaintLameRequest() call. + This is for test purposes. + +nxcomp-2.0.0-73 + +- The X_NXSetUnpackColormap and X_NXSetUnpackAlpha now carry their + data in compressed form. The alpha data is compressed using the + ZLIB RLE encoding, while the colormap data is compressed using + the default ZLIB deflate. + +- Thanks to the above changes, ZLIB data compression of all messa- + ges which do not have a specific encoding is turned off, so that + we can make better use of the final stream compression. + +- Created new message structures to handle the compatibility with + the old proxy versions. When connected to an old proxy version + the agent should use the NXSetUnpackColormapCompat() and NXSet- + UnpackAlpha() interfaces. + +nxcomp-2.0.0-72 + +- Solved a compatibility problem with the 1.X.X versions due to the + new render encodings. + +nxcomp-2.0.0-71 + +- Improvements to X_RenderSetPictureClipRectangles. + +- Fixed handleUnpack() to pass the correct byte order parameter to + to the unpack alpha function. + +- Added the --parent parameter to the client even in pulldown mode. + +- Fixed a deallocation bug in StaticCompressor. + +nxcomp-2.0.0-70 + +- Added compression of X_RenderSetPictureFilter, X_RenderSetPicture- + Transform, X_RenderTrapezoids and X_RenderTriangles. + +nxcomp-2.0.0-69 + +- Changed the format of the persistent cache to accommodate the new + encoding of the render opcodes. Caches from the 1.4.0 and 1.5.0 + should be still loaded and saved correctly when connected to and + old version of the library. + +- Improved the encoding of the X_CreatePixmap, X_ChangeGC, X_Render- + CompositeGlyphs, X_RenderComposite, X_RenderCreateGlyphSet, X_Rend- + erFreePicture and X_RenderCreatePicture messages. Added new classes + to handle the backward compatibility. + +- Made the static compression and decompression code reside in the + same class. + +nxcomp-2.0.0-68 + +- Improved the encoding of the X_RenderCreateGlyphSet and X_Render- + FreeGlyphSet requests. + +nxcomp-2.0.0-67 + +- Modified the following session messages: + + From: "Session: Session starting at..." + To: "Session: Starting session at..." + + From: "Session: Session terminating at..." + To: "Session: Terminating session at..." + +- Improved the encoding of the requests creating or freeing an XID. + This affects X_CreateGC, X_CreateWindow, X_CreatePixmap, X_Render- + CreatePicture, X_FreeGC, X_DestroyWindow, X_FreePixmap, X_Render- + FreePicture. + +- Added 'streaming' and 'backingstore' to the list of options used + by agents. + +- Modified the info messages to print the ZLIB compression paramet- + ers to be more compact and only use two lines. + +nxcomp-2.0.0-66 + +- When part of an agent, the proxy will wait for the NXTransDestroy() + function to initiate the shutdown. + +nxcomp-2.0.0-65 + +- Starting from this version the NX client can control the behaviour + of the client proxy by monitoring the messages marked as "Session". + + At the early initialization the proxy will print: + + "Session: Session starting at '...'. + + The ellipsis here represent the current timestamp, as reported by + the POSIX function ctime(): + + Once the session is running, the proxy will print: + + "Session: Session started at '...'. + + At the time the session is being shut down, the proxy will print: + + "Session: Session terminating at '...'. + + Followed by: + + Session: Session terminated at '...'. + + The message "Info: Starting X protocol compression." is removed, + replaced by the message 'Session started at...' with the same + meaning. + + Once the message 'Session: Session terminated at..." is read from + the output, the client can optionally wait for the proxy process + to complete and terminate with an exit code 0. + +- The "Session" messages are not printed when the proxy is running + on the NX server side, as part of an agent. + +nxcomp-2.0.0-64 + +- Reduced the default token limit from 32 to 24. The synchronizat- + ion callback is triggered by the tokens going below half the li- + mit. + +nxcomp-2.0.0-63 + +- Added -I/usr/include/c++ to makedepend. + +nxcomp-2.0.0-62 + +- The house-keeping process is now started upon the initialization, + if the memory cache is enabled, and, on the X server side, when + the remote actually requested access to the image cache. + +nxcomp-2.0.0-61 + +- Added a NX_HANDLER_SYNCHRONIZATION callback to NXTransHandler(). + The handler is called when the agent can use the available band- + width to synchronize X objects that are corrupted or incomplete. + + The reason can be: + + NX_SYNCHRONIZATION_BEGIN: The synchronizationis is allowed. + + NX_SYNCHRONIZATION_END: The synchronizationis must stop. + + The reason can be determined by agents by using the NXBeginSynch- + ronization and NXEndSynchronization values defined in NXvars.h. + +- Bytes from 14 to 24 in the X_NXGetControlParameters reply report, + respectively, the frame timeout, the ping timeout, the preferred + image split mode and the split size threshold. + +nxcomp-2.0.0-60 + +- The following messages used by the NX client and server have been + changed. The NX client and server should be modified accordingly. + + From: "Info: Shutting down the link and exiting." + To: "Info: Shutting down the NX transport." + + From: "Info: End of session requested by remote proxy." + To: "Info: End of NX transport requested by remote" + + From: "Info: End of session requested by agent termination." + To: "Info: End of NX transport requested by agent." + + From: "Info: End of session requested by signal '...'." + To: "Info: End of NX transport requested by signal '...'." + + From: "Info: Shutting down the link and exiting." + To: "Info: Shutting down the NX transport." + + From: "Info: Waiting for cleanup timeout to complete." + To: "Info: Waiting the cleanup timeout to complete." + + From: "Info: Waiting for watchdog process to complete." + To: "Info: Waiting the watchdog process to complete." + +nxcomp-2.0.0-59 + +- Added more debug information regarding the timing of packets sent + and received. + +- Added the possibility to redirect the log output to a file that can + be later shared with nxssh running in "binder" mode. This is useful + when testing the forwarding of the SSHD connection by nxssh to the + agent. Activated by defining BINDER in Loop.cpp. + +nxcomp-2.0.0-58 + +- Fixed the unpack alpha procedure to only rely on the image's byte + order. + +- Solved the X_PutImage encoding problem introduced in the 2.0.0-56 + version and restored the compatibility with the 1.5.0 version. + +nxcomp-2.0.0-57 + +- Added a NXTransFile() function. It returns the name of the files + used by the proxy for the current session. + + The type parameter can be: + + NX_FILE_SESSION: Usually the file 'session' in the user's session + directory. + + NX_FILE_ERRORS: The file used for the diagnostic output. Usually + the file 'errors' in the session directory. + + NX_FILE_OPTIONS: The file containing the NX options, if any. + + NX_FILE_STATS: The file used for the statistics output. + + The returned string is allocated in static memory. The caller must + copy the string upon returning from the function, without freeing + the pointer. + +- Fixed the PANIC in the handling of the abort split messages. + +- The encode and decode routines may write one byte past the nominal + end of the encode buffer. This additional byte is now included in + the payload. This is actually a bug, but harmless. + +nxcomp-2.0.0-56 + +- Added the X_NXAbortSplit request. It can be used to interrupt the + streaming of all the messages currently in the split store for + the specified resource. Depending if the split store did or did + not contain split messages, the client will receive an immediate + end-split or no-split notification. + +- Removed the split modes NXSplitModeEager and NXSplitModeLazy. The + available modes are now NXSplitModeSync and NXSplitModeAsync. The + mode NXSplitModeAsync replaces the two old modes and is now the + default. Similarly to NXSplitModeEager, it makes the proxy split + only messages that exceed a size threshold, but the threshold is + generally smaller than in the previous versions. + + #define NXSplitModeDefault 0 + #define NXSplitModeAsync 1 + #define NXSplitModeSync 2 + +- Renamed X_NXSplit to X_NXSplitData, X_NXAbortSplit to X_NXSplitEv- + ent. + +- The proxy now enters a drain loop, when in congestion state, and + waits until the decongestion. Also the X channels are drained if + blocked. + +- The select is restarted immediately if only the proxy is selected + and the data read doesn't make a complete message. + +- The size of the shared memory segment used by the X server proxy + is now negotiated at startup and the selected value is printed in + the session log. + +- Added the option 'encrypted'. It tells the local proxy if it is + running as part of a program providing encryption of the point to + point communication. This is useful to determine if the proxy can + block waiting for data or needs to yield to the client to let it + handle the remote connection. + +nxcomp-2.0.0-55 + +- Fixed handleRestart() to correctly send the end-split event only + after the split sequence has been closed by the client. + +- Fixed a possible memory error in the Keeper class occurring if the + image caches were erased while in the middle of a loop. + +nxcomp-2.0.0-54 + +- Added a '--parent' option when running the client in dialog mode. + This is the process id that needs to be signaled in the case the + user chooses to do so. + +nxcomp-2.0.0-53 + +- Solved a bug in the abort split procedure. The procedure assumed + that the split had to be at the head of the list. This may not be + the case if the split was loaded from disk asynchronously, after + a different split with the same checksum was recomposed. + +- By defining STRICT in Loop.cpp, the number of available tokens is + set to 1. This can be used to trigger the congestion more often + than it would possible when testing the software with the default + settings. + +- Added more debug output to the procedures handling the streaming + of the images. + +- Reset the channel's split pending and congestion flags in the fin- + ish procedure. Not doing so caused some additional loops at chan- + nel shutdown. + +- Fixed a bug on Cygwin that prevented the log files to be succes- + sfully reopened when the size limit was exceeded. + +- Failures to write to the agent transport are reported sooner when + the channel is finished. This saves a few more loops at session + shutdown. + +nxcomp-2.0.0-52 + +- Started implementing a new handler to let the agent include arbit- + rary data in the transport statistics. The parameter, in this case, + is a pointer to a pointer to a null terminated string. The pointer + is set at the time the handler is registered. The pointed string + will have to be filled by the agent with its statistics data. For + now, only the interfaces and the stubs exist. + +- Disabled the timestamp cache as it still causes rounding problems + when calculating the current bitrate. + +nxcomp-2.0.0-51 + +- Removed SelectPackMethod(), not used anymore, from Pack.c. + +nxcomp-2.0.0-50 + +- Added the X_NXFinishSplit request. It forces the proxy to comple- + tely transfer all the split messages for the given resource, and + then notify the agent. + +- Fixed the statistics to not account the split bits to the control + token. + +nxcomp-2.0.0-49 + +- Fixed a bug that caused the split timeout to be reset even if a + different channel had splits to send. + +- Removed an error condition that arose when a split operation was + requested by a different channel than the first to connect. The + reason is that an auxiliary channel (like the one created by the + server to store the keyboard configuration) can be the first to + open a connection to the X server, then can come the agent, that + is actually using the NX opcodes. The proxy will now simply print + a debug message. + +- Removed a further error condition that was assumed by the proxy + if a pending flush was detected while no channel was selected for + output. This can actually happen if the channel was dropped and, + in the meanwhile, the user requested the proxy statistics. + +nxcomp-2.0.0-48 + +- Added a 'type' parameter to NXTransFlush(). The new NX_FLUSH_IDLE + type should be used by agents when they have finished handling all + their clients and are going to wait for more input. This is the + case, for example, of the X agent returning from WaitForSomething() + after having set a small timeout to find out if there are clients + ready, or the case of a RDP agent finding that there are no opcodes + to read from the RDP server. The 'idle' flush should be requested + also when the X11 agent is waiting for a split to complete. When + the flag is used, the proxy uses the available bandwidth to encode + more low-priority data, like the payload of images being streamed. + +nxcomp-2.0.0-47 + +- Added a new RGB image encoder. For now the encoder uses a static + Z stream to compress the image data in the destination buffer and + allows the agent to use the simplest encoding by still separating + the alpha channel from the image data. The new encoder can be the + the base for implementing color reduction by dithering or a color- + mapped translation of the image similar to PNG, but without the + PNG overhead and with the colormap being sent to the client using + the NXSetUnpackColormap() opcode. + +- Put the routines implementing static deflating and inflating of + a ZLIB buffer from the Compressor and Decompressor classes to Z.h + and Z.cpp, so that they can be reused by the new RGB encoder. + +nxcomp-2.0.0-46 + +- Fixed a segfault arising when trying to start a child without the + NX transport. + +nxcomp-2.0.0-45 + +- Undefined the MATCH directive. + +nxcomp-2.0.0-44 + +- Changed the encoding of the X_CreatePixmap, X_CreateGC, X_Render- + CreatePicture, X_CreateWindow, RenderCreateGlyphSet.cpp. The Xid + of the drawable is included in the checksum of the X_CreateGC and + X_CreatePixmap message. This leverages the way GC and Pixmaps are + allocated in the X agent to obtain better compression. + +- Removed the code handling the reset of the proxy connection. This + functionality was unused since when the persistence is handled by + the agent. + +- Added a specific section in the statistics output for the render + extension. + +nxcomp-2.0.0-43 + +- Fixed a bug that could have caused the sending of multiple 'end + split' messages for the same split sequence. + +- Added handling of the option 'strict'. + +nxcomp-2.0.0-42 + +- Added a missing channel switch directive when encoding abort split + messages at the server side. This could cause a decoding error on + the client. + +nxcomp-2.0.0-41 + +- Ensured that the link is flushed immediately on the X server side + when important keyboard or mouse activity is detected in input. + +- Implemented a timestamp cache to avoid calling gettimeofday() when + it is enough to use the last timestamp gotten from the system. The + cache can be disabled by undefining CACHE_TIMESTAMP in Timestamp.h. + +nxcomp-2.0.0-40 + +- Added the karma delay field to the X_NXGetControlParameters reply. + +- Solved a bug with the decoding of split messages likely to happen + only when using link type LAN. + +nxcomp-2.0.0-39 + +- Implemented separate flow control for the generic channels and the + image streaming data. + +- Improved the split procedure to load a message from the disk cache + if found after it was originally discarded because locked. + +nxcomp-2.0.0-38 + +- Renamed the 'shmem' option as 'shseg'. The 'shmem' option becomes + specific to the agent and will be used together with 'shpix' option + to indicate if, respectively, the shared memory extension and the + use of the shared pixmaps must be enabled in the agent server. The + new option will be instead used by the proxy to determine the size + of the memory segment shared between the proxy and the X server. + +- Added the 'shmem', 'shpix', 'keyboard' and 'clipboard' to the list + of ignored options. The 'keyboard' option should become a synonym + of 'kbtype'. The 'clipboard' option will tell the NX agent if the + clipboard support should be disabled for security reasons. + +nxcomp-2.0.0-37 + +- Ensured that, when running a raw session, the persistent cache is + loaded and saved only once in the session lifetime. + +- Added the 'product' keyword to the list of recognized options. The + option is ignored by the proxy, but can be used by the client or + server to facilitate the support. + +nxcomp-2.0.0-36 + +- Added the remote version number in the X_NXGetControlParameters + reply. + +- Solved a bug related to the removal of the split stores. + +- Removed the unused code dealing with the flush timeouts. + +nxcomp-2.0.0-35 + +- Added an alert to notify the user about the failure of the XDMCP + session. + +nxcomp-2.0.0-34 + +- The active channels and the agent resources are now stored in a + list container. + +- Added the X_NXFreeSplit request. The request is currently unused + because the split store is freed automatically when it becomes + empty, but can be useful in future if we want to implement other + otpimizations. + +nxcomp-2.0.0-33 + +- There is now a split store for each agent resource. This allows + the proxy to divide the bandwidth among the agent resources. + +- A simple round-robin load-balancing is implemented, dividing the + bandwidth equally among all the split stores. + +- If there is a previous request being streamed for the same res- + ource, cached messages are appended to the split store and then + committed in the original order. This makes possible to stream + the colormap and the alpha channel data even if the split invol- + ves multiple PutImage or PutPackedImage operations in a single + start-split/end-split sequence. + +- Implemented the commit store class. Made the commit store expand + the message in the final buffer, instead of leveraging the mes- + sage store. + +- Channels having a drop command pending are checked before trying + to load or save the cache. This prevents a potential problem with + the protocol violation error that could be reported by the client + side proxy. + +- The current bitrate is now calculated at the time the transport + actually writes the data to the network, not at the time the data + is appended to the transport by the upper layers. The reason is + that the data can be compressed by the stream compressor and so + we can calculate the real bitrate only after having flushed the + ZLIB stream. This fixes the wrong numbers that could be reported + by the statistics in the previous versions. + +nxcomp-2.0.0-32 + +- More progress in the implementation of the new image streaming. + This version has been tested to work when connecting to an 1.5.0 + server. Due to the significant changes in the way the streaming + works in the newer versions, split is never activated by a 2.0.0 + server connecting to a 1.5.0 client. + +- Fixed the NXTransClose() function to check if the fd matches the + NX agent connection. + +- Fixed the includes in Socket.h to compile on Solaris and MacOSX. + +nxcomp-2.0.0-31 + +- Changed the NX transport functions that didn't require a NX fd + parameter to include one. The value can be NX_FD_ANY to signify + any running NX transport. + +nxcomp-2.0.0-30 + +- More progress in the new implementation of image streaming. + +- This version is apparently compatible with the 1.5.0 client but + needs further testing. + +nxcomp-2.0.0-29 + +- Implemented the NXTransHandler() interface and made the proxy + use the callback, when it is installed, instead of the notifi- + cation events. + +- Modified the agent transport to report an EOF condition as soon + as the channel is dropped, instead of reporting the error only + after the proxy shutdown. This allows the agent to handle its + clients while the proxy is handling the grace timeout. + +- Added a test facility to verify if the client and server caches + match at shutdown. + +- More advances in the new implementation of streaming. + +nxcomp-2.0.0-28 + +- Made the session shutdown faster, normally below 1 second. The + grace time is now 500 ms once all channels have been dropped. + +nxcomp-2.0.0-27 + +- The house-keeping process will now run a number of iterations + (currently 100) and then will exit. The proxy will check the + exit code and, if it was requested by the child, will restart + it. This is intended to keep the memory consumption low, as I + noted that after a big number of iterations the performance of + the allocator start to degrade quickly. + +nxcomp-2.0.0-26 + +- Started implementing the NXTransHandler() interface to let the X + application hook a callback and be notified by the proxy when an + event occurs. At the moment only congestion events are supported. + The interface makes possible for the caller to provide a generic + parameter. This parameter is passed back to the handler function. + The parameter is expected to be the Xlib display pointer, given + that the proxy doesn't have access to the Xlib structures. + +- Moved all the internal variables shared between Xlib, nxcompext + and the X server in nxcomp. Declarations and function prototypes + moved to NXvars.h. + +- Removed the NXGetCleanupParameters() and NXGetImageParameters() + interfaces and the remaining references to the unused display + buffer and image cleanup functions. + +- In this version the images streaming functionality is disabled. + Because of that, expect compatibility problems when connecting + to a different nxcomp version. + +nxcomp-2.0.0-25 + +- Forced the end of the session earlier if a shutdown has been re- + quested by the local side but the remote proxy is not responding. + +nxcomp-2.0.0-24 + +- Changed the loop deleting the file items in Keeper to pick the + first element instead of looping through the iterator. + +- More problems with the libstdc++ allocators. During the tests, I + found that the Keeper class can leak industrial amounts of memory. + Valgrind says that the objects that are not freed are the File + items we allocate in collect(). As this looked suspicious, I log- + ged the constructors and destructors and can say that everything + is OK on our side. Unfortunately, by removing the spleeps used + to let the program work silently in background, one can find that + the memory occupation still grows by a MB every few seconds. This + is less a problem on Windows, where the memory occupation remains + almost constant. See the comment on __USE_MALLOC below. + +- Increased the maximum size of a message that the proxy is allo- + wed to cache to 4MB. This makes possible to cache many replies + (like the X_QueryFont replies) that often exceeded the previous + limit. + +nxcomp-2.0.0-23 + +- Fixed a compatibility problem with the 1.5.0 that arose when + encoding an image with caching and streaming temporarily disa- + bled. + +- Removed the __USE_MALLOC define in Types.h because this is what + the g++ developers want. I'll try to avoid flames and will not + comment on this. + +- Added a --with-use-malloc configure option. This option should + be used when building the release packages on GCC versions that + support it. + +- Started fixing the commit procedure to be able to deal with the + alpha channel. + +nxcomp-2.0.0-22 + +- Prevented channels from being dropped while in the middle of a + read loop. + +- Added a small utility ensuring that the SIGCHLD we receive in + the main loop can be always identified as pertaining to an our + child. + +- Increased the space available for the control messages at the + beginning of the encode buffer and ensured that there is always + enough space for adding a token message, in the case this is + required by the flush procedure. + +- Made all cache files readable only by the user. + +nxcomp-2.0.0-21 + +- Solved a bug in the streaming of images that caused the agent's + clients to never resume when connected to an old proxy version. + +nxcomp-2.0.0-20 + +- Disabled again streaming of the alpha channel data. By enabling + it, the agent randomly fails to repaint the exposed regions. The + reason is to be investigated. + +nxcomp-2.0.0-19 + +- Implemented the split mode NXSplitModeSync. When this mode is + selected, the proxy will not send data for the split at the head + of the list until the remote peer has confirmed that the message + is not available in the image cache. This is going to be useful + in combination with the lazy encoding. + +- Improved the error detection in the case of failure when saving + a recomposed split on disk. + +- Added X_NXSetUnpackAlpha to the set of requests that is possible + to stream. + +nxcomp-2.0.0-18 + +- Enabled the 2.0.0 features that were disabled for test purposes. + +- Changed the LICENSE file to state that the software is only made + available under the version 2 of the GPL. + +nxcomp-2.0.0-17 + +- Introduced a new channel of type 'slave'. Opening a slave channel + should let the proxy fork a new NX client instance (or whatever + is in the NX_SLAVE environment) and pass to it the channel's desc- + riptors. This client instance should authenticate the peer, for + example using the proxy cookie (see how this is implemented in + nxsensor) and then negotiate the service to be used on the channel. + This can be used to implement forwarding of arbitrary ports or ad- + ditional services, like a simple file transfer protocol. For now + the implementation is incomplete. Opening a slave channel will + result in the remote proxy just dropping the channel connection. + +- The proxy is forcibly flushed at the end of each loop. This is a + temporary fix until the agents are updated to flush the proxy link + on demand. + +- Added a new alert to be used in the case the RDP session is closed + and replaced with a new session using the same Windows account. + +- Added a forward declaration of class RenderMinorExtensionStore in + file RenderExtension.h to compile using gcc 4.0.X. + +- Added removal of all .orig file when running a 'make clean'. + +- The code uses again the 2.0.0 style shutdown (the one waiting for + the watchdog process to terminate). + +nxcomp-2.0.0-16 + +- Added the NXTransChannel() interface to allow agents to create + new channels connected to the port that will be forwarded by the + remote proxy. The function returns 1 on success, 0 if the NX + transport is not running, or -1 in the case of error. On success, + the descriptor provided by the caller can be used for all the + subsequent I/O, including selecting the descriptor to check if + I/O is possible. The type parameter not only tells to the proxy + the remote port where the channel has to be connected, but gives + a hint about the type of data that will be carried by the channel, + so that the proxy can optimize the compression and schedule the + traffic on the slow link. + + The type can be: + + NX_CHANNEL_X: The channel will carry X traffic and it + will be connected to the remote X display. + + NX_CHANNEL_CUPS: The channel will carry CUPS/IPP protocol. + + NX_CHANNEL_SMB: The channel will carry SMB/CIFS protocol. + + NX_CHANNEL_MEDIA: The channel will transport audio or other + multimedia data. + + NX_CHANNEL_HTTP: The channel will carry HTTP protocol. + + NX_CHANNEL_FONT: The channel will forward a X font server + connection. + + Only the proxy running at the NX server/X client side will be + able to create a X, CUPS, SMB, MEDIA and HTTP channel. A proxy + running at the NX client/X server side can create font server + connections. The channel creation will also fail if the remote + end was not set up to forward the connection. + + To create a new channel the agent will have to set up a socket- + pair and pass to the proxy one of the socket descriptors. + + Example: + + #include <sys/types.h> + #include <sys/socket.h> + + int fds[2]; + + if (socketpair(PF_LOCAL, SOCK_STREAM, 0, fds) < 0) + { + ... + } + else + { + // + // Use fds[0] locally and let the + // proxy use fds[1]. + // + + if (NXTransChannel(fds[1], NX_CHANNEL_X) <= 0) + { + ... + } + + // + // The agent can now use fds[0] in + // read(), write() and select() + // system calls. + // + + ... + } + + Note that all the I/O on the descriptor should be non-blocking, + to give a chance to the NX transport to run in the background + and handle the data that will be fed to the agent's side of the + socketpair. This will happen automatically, as long as the agent + uses the XSelect() version of the select() function (as it is + normal whenever performing Xlib I/O). In all the other cases, + like presumably in the agent's main loop, the agent will have + to loop through NXTransPrepare(), NXTransSelect() and NXTrans- + Execute() functions explicitly, adding to the sets the descript- + ors that are awaited by the agent. Please check the implementa- + tion of _XSelect() in nx-X11/lib/X11/XlibInt.c for an example. + +nxcomp-2.0.0-15 + +- Some changes aimed at finding a workaround to the unreliability + of the font server connections. The X server seems to be really + picky about the network latency, so we try to read immediately + from the channel just being created, instead of waiting for a + new loop. Additionally the proxy will keep reading from the font + server connections even after the maximum length of the frame + is exceeded, in the hope that it will be able to send a complete + message in a single frame. + +- updated the various internal consistency tests run when the TEST + or INFO flags are enabled. + +nxcomp-2.0.0-14 + +- It seems that the closure of the socket sometimes takes several + seconds, on Windows, after the connection is broken, with the + result that the alert can be shown long after the user has gone + after the failed session. We now skip the closure of the proxy + link on Windows if we are about to exit. + +- The code uses the 1.5.0 style shutdown (the one waiting for the + term signal in the main process) to be able to test the library + with the old server. To activate the new shutdown procedure be + sure the define SHUTDOWN_COMPATIBLE_1_5_0 is unset. + +nxcomp-2.0.0-13 + +- Ensured that static members in channels are reset at the time a + new proxy is created. + +- Adjusted the token parameters for link modes other than modem. + +nxcomp-2.0.0-12 + +- Handled compatibility with 1.X.X versions not sending the count + field in the token. + +- The proxy link is now flushed automatically if the agent has not + set the deferred flush mode. + +nxcomp-2.0.0-11 + +- Significant modifications to allow the proxy to keep data in the + encode buffer across multiple loops, until the data is flushed + because an explicit request by the agent or. Besides maximizing + the amount of data sent in a single frame, this makes it possi- + ble to move any packet coalescence strategy in the agent, while + still using an 'immediate' flush policy. + +- Modified the procedure handling the proxy congestion. Each token + now carries a counter which represents the multiple of TokenBytes + data bytes that need to be confirmed by the remote end. The ser- + ver side proxy will need to reply by including the value of the + counter. When sending a new token, the tokens are decremented by + the counter and the client side proxy enters in congestion when + the available tokens becomes zero or negative. + +nxcomp-2.0.0-10 + +- Implemented specific encoding of the X_NXSetCacheParameters + request. + +- Handled the compatibility with older versions not supporting the + new request. In this case the request is handled at the local si- + de, preventing the X requests to be cached or split, even without + the cooperation of the remote side. + +nxcomp-2.0.0-9 + +- Modified the shutdown procedure to not rely on the TERM signal + when the proxy needs to wait for the server to complete. We will + now print the following message in the session log: + + Info: Watchdog running with pid 'n'. + Info: Waiting for watchdog process to complete. + + The NX server will have to kill the process with the given pid + to mandate the proxy shutdown. This solves the TR11C01192. + +- Added the X_NXSetCacheParameters request. It tells to the proxy + how to handle caching of X requests, namely if requests should + be stored in the memory cache, split in smaller data chunks and, + in the case of images, saved on disk in the persistent image + cache. The request affects all the X messages until the proxy + is further configured. + +- Enabling and disabling loading and saving of persistent images + due to a X_NXSetCacheParameters is still to be implemented. + +- Implemented font channel compatibility with older versions. If + the font port is queried and the remote proxy doesn't support + the tunneling of font server connections, an empty string is + returned. + +- The option 'resize', used by agents, is now silently ignored. + This solves the TR10C01061. + +- Added the missing reference to TR08C000981. + +nxcomp-2.0.0-8 + +- Discarded the first idea of setting the font path implicitly in + the X server side proxy, by means of a multi-pass operation and + added the NXGetFontParameters() request and reply. If the proxy + has been configured accordingly, the request returns the X font + path that can be set by the agent to tunnel the font server con- + nections through the NX link. + +- Changed the parsing of the font server port to be able to handle + the defaults. + +nxcomp-2.0.0-7 + +- More work on tunneling of font server connections. + +- The synchronization requests are now replied at the same time + as a new request is received, by checking if the channel has + already gone past the awaited sequence number. This avoids the + delay caused by the previous versions in the case the expected + reply had been handled asynchronously, inside the write loop. + +nxcomp-2.0.0-6 + +- The display is again passed to the client using the -display + parameter. + +- The option 'type' is now ignored at X server side. Support at + the X server side had been left for compatibility with older + versions of the proxy. + +- Added direct support for more session types, namely 'unix-cde', + 'unix-xdm', 'unix-console', 'unix-default'. The 'unix-console' + and 'unix-default', similarly to 'unix-application', will now + trigger the 'raw' mode. + +nxcomp-2.0.0-5 + +- Renamed Png.h and Png.cpp to Pgn.h and Pgn.cpp to avoid name + clashes on Windows. + +- The distclean target now removes the autom4te.cache directory. + +nxcomp-2.0.0-4 + +- Added the 'kill=n' option to let the proxy add the process to + the list of daemons that must be terminated at session shutdown. + Multiple 'kill=n' options can be specified. The proxy will send + to each process a SIGTERM signal before exiting. + +- Removed the code that forcibly disabled the RENDER extension on + Solaris. Eventual compatibility problems will be now handled in + the NX agent. + +- The path to the client executable is now assumed to be in the + NX_CLIENT environment. If the variable is not set, the proxy + will guess the location based on the target platform. This is + part of the FR11C01215. + +nxcomp-2.0.0-3 + +- More code cleanup. Protocol step 5 and cache step 2 are assumed + by default. This allows us to remove the various channel caches + that are not used anymore. + +- Removed the outdated encodeBegin() and encodeEnd() methods. + +nxcomp-2.0.0-2 + +- Added compatibility with the 1.5.0 and 1.4.0 versions. Protocol + version older than the 1.4.0 will cause the proxy to drop the + connection. + +- Rewritten the version negotiatiation logic to better handle the + compatibility between the local and the remote version. + +- Removed the conditional code handling the compatibility with + the protocol encodings from 1 to 4. + +- Small adjustments to the session negotiation procedure to give + more hints in the case of errors. A dialog is now issued if the + remote proxy drops the connection due to a probable authentica- + tion failure or when the remote proxy version is not compatible + with our version. + +nxcomp-2.0.0-1 + +- Opened the 2.0.0 branch based on nxcomp-1.5.0-80. + +nxcomp-1.5.0-80 + +- Fixed a bug that prevented the Unix socket to be created in the + right directory. This affected the ability of the server to run + NX sessions without the agent encoding. + +nxcomp-1.5.0-79 + +- Solved a bug in the 15 to 16 bpp conversion for RDP sessions. + +- Corrected a typo in the PANIC message of Unpack16To24 function. + +- Optimized the 16 bpp RDP decompression routine. + +nxcomp-1.5.0-78 + +- Implemented the FR11C01215. The following environment variables + are checked to determine the location of the relevant NX direct- + ories: + + $NX_ROOT The root NX directory is the place where the session + directory and the cache files are created. This is + usually overridden by passing the 'root=' option. By + default, the root NX directory is assumed to be the + directory '.nx' in the user's home. + + $NX_SYSTEM The directory where NX programs and libraries reside. + If not set, the value is assumed to be '/usr/NX'. + Programs, libraries and data files are respectedly + searched in the 'bin', 'lib' and 'share' subdirecto- + ries. + + $NX_HOME The NX user's home directory. If $NX_ROOT is not set + or invalid, the user's NX directory is created here. + + $NX_TEMP The directory where the X11 Unix Domain Sockets and + all temporary files are to be created. + + $NX_CLIENT The full path to the nxclient executable. If the va- + riable is not set, the nxclient executable will be + run assuming that the program is in the system path. + This can be useful on platforms like Windows and the + Mac where nxclient is located in a different direct- + ory compared to the other programs, to make easier + for the user to execute the program from the shell. + + Other environment variables: + + $HOME The variable is checked in the case $NX_HOME is not + set, null or invalid. + + $TEMP The variable is checked whenever the $NX_TEMP direct- + ory is not set, null or invalid. + + $PATH The path where all executables are searched, except + nxclient. If $NX_CLIENT is not set, also the client + executable is searched in the system path. + + $XAUTHORITY + This is the file containing the X11 authorization + cookies. If not set, the file is assumed to be in + the user's home (either $NX_HOME or $HOME). + + $LD_LIBRARY_PATH + System-wide library search order. This should be set + by the program invoking the proxy. + +- Extended the usage message to document the relevant environment. + +- Made the WaitChild() function interruptible. This allows the user + to terminate the connection procedure immediately, by sending a + signal to the proxy process while an abort dialog is shown in the + foreground. This is part of the solution to the TR11C01216. + +- Implementation of the FR11C01215 is not yet complete. The client + program and the nxauth/xauth are still searched using the previ- + ous logic. In particular, the NX_CLIENT variable is ignored. + +nxcomp-1.5.0-77 + +- Corrected the typo in the alert dealing with VNC authentication + failures. This solves the TR11C01199. + +nxcomp-1.5.0-76 + +- Added the missing initialization in the client and server proxy + constructors. + +nxcomp-1.5.0-75 + +- Starting from this version the build procedure will automatically + create a DLL on Windows. + +- Disabled exceptions in the compiled code. + +- Disabled run-time type information to further reduce the size of + the executable. + +- Compiling with GCC 4.0.0 and -fno-exceptions produces a warning + in some files, due to control apparently reaching the end of a + non void function. This is bogus and has been confirmed to be a + GCC 4.0.0 bug solved in more recent versions. + +nxcomp-1.5.0-74 + +- Imported changes from nxcomp-1.6.0-4. + +- Solved a compilation error on Solaris and MacOSX platforms. + +- The 'font' option now accepts either a numeric value (for a TCP + port) or a 'unix/:port' or 'tcp/:port' specification. In the case + of Unix ports, we assume that a port specification "unix/:7100" + corresponds to the "/tmp/.font-unix/fs7100" socket and a port like + "unix/:-1" corresponds to "/tmp/.font-unix/fs-1". + +- An absolute file path is also accepted as a valid socket. This is + useful to test the forwarding of the font server connection, for + example by running a normal X client and pointing the socket to + the X server. + +- Protocol step 7 is now only assumed when connecting to a remote + proxy version 1.6.0 or later. + +nxcomp-1.5.0-73 + +- Use the include files from nx-X11 if the nx-X11/include directory + is found. The previous configure checked the presence of nx-X11/ + exports/include, that might not be built at the time this library + is compiled. + +nxcomp-1.5.0-72 + +- Fixed a problem on AMD64 due to the size of the area pointed by + the argument of NXTransReadable(). The ioctl() requires a pointer + to an int, at least on Linux. The original _X11TransBytesReadable() + function simply calls the ioctl() by passing the pointer that is + provided. Returning the value assuming a pointer to a long crashes + some applications, among them xterm. Now NXTransReadable() follows + the same schema of the ioctl() call and stores the result assuming + a pointer to an int. + +nxcomp-1.5.0-71 + +- Ensured that the NX trasport is destroyed on NXTransExit() even if + the parent has overridden our signal handlers. + +- Added attribute 'noreturn' to NXTransExit(). + +- Small change to the shutdown procedure to send the "Waiting for a + further signal" just after the watchdog is started. + +nxcomp-1.5.0-70 + +- Added the definition of protocol step 7. The new protocol step is + implicitly assumed when activating the font server channel, so that + NX clients and servers may decide what to do by verifying the patch + version of the peer software. This makes possible to activate the + feature without stepping up the 1.5.0 version of the software. + +nxcomp-1.5.0-69 + +- Added the -fPIC GCC flag when compiling on AMD64 architectures. + +- Small changes to configure.in to have specific CFLAGS. + +- Created a new configure using autoconf 2.59. + +- Added the 'mask=n' option to determine how channel ids are distri- + buted between client ans server. By default, channels whose ids are + multiple of 8 (starting from 0) are reserved for the client side. + All other channels can be allocated at the NX server side. + +- A check is missing on the protocol supported by the remote side, + so it is likely that mixing this version with older 1.5.0 will not + work. + +- The release has the debug logs enabled. + +nxcomp-1.5.0-68 + +- Added provision for opening new channels on both client and server + side. This required small changes to the way channel ids are mapped + and retrieved, so that both sides now support bidirectional mapping + of file descriptors to channels. + +- Made the code handling allocation of new generic channels to reside + in the base Proxy class. + +nxcomp-1.5.0-67 + +- Renamed the 'embedded keyboard' channels as 'aux' channel. + +- Renamed 'samba' channels as 'smb'. + +- The 'samba' and 'smb' options can now be used interchangeably. The + same applies to the 'keybd' and 'aux' options, used to set up the + auxiliary X channel. + +- Added a new font channel. The channel is used to forward X font + server connections from the X server on the NX client to the remote + NX server. The channel is not yet functional and requires change to + the channel allocation mechanism. + +- Added a common interface to create new listening sockets. This is + currently used for additional services, but not for the X display + sockets. + +- Simplified the interface used to accept new connections to channels + being forwarded. + +- Removed the -V option as nxproxy is not using dlopen() anymore. + +- Removed the inclusion of ClientChannel.h in Proxy.cpp that caused + test symbols to be reverted to undefined. + +nxcomp-1.5.0-66 + +- Made failures setting the IPTOS_LOWDELAY on the proxy socket to + cause a warning, instead of an error. + +- Made the clean target delete the Cygwin specific libraries. + +- Updated the configure and Message.h to deal with GCC 4. Solves the + TR08C000981. + +nxcomp-1.5.0-65 + +- Removed the warning issued on parsing the agent option 'rootless'. + Solves the TR08C00959. + +- MacOSX 10.4 defines socklen_t. Made the definition conditional so + that we can still support older versions. Solves the TR07C00926. + +- Updated the ChangeLog to include references to the solved TRs. + +nxcomp-1.5.0-64 + +- Imported the 1.6.0 changes in the maintenance 1.5.0. + +- Removed a wrong assertion that might cause the session to fail + when the software was compiled with TEST enabled in Proxy.cpp. + +- The nxclient dialog process is signaled with SIGKILL on Windows, + as the SIGTERM is ignored. This solves the TR07C00929. + +- Ensured the JPEG error flag is always set before jumping out of + the Jpeg decompression. + +- Skipped errors encontered setting the TCP_NODELAY flag on Mac. + Solves TR08C00940. + +- Few cosmetic changes. + +nxcomp-1.5.0-63 + +- Ensured that the parent is checked often in the keeper process, + so that, in the case of a premature death, the child is exited + earlier. + +nxcomp-1.5.0-62 + +- Some performance tuning of the LAN and WAN link modes. + +nxcomp-1.5.0-61 + +- Fixed the problems arisen with loading or saving the image files + on Windows by forcing the streams to be opened in binary mode. + These problems have been triggered by the recent Cygwin upgrade. + +- Removed the logs that had be left enabled for test purposes. + +nxcomp-1.5.0-60 + +- Made all errors encountered while unpacking an image just print + a warning in the session log. Such errors are not fatal but the + client monitors the state of the session at startup, so that by + marking image decompression errors as such may cause the session + to be aborted. + +- Marked as warnings also errors encountered by trying to load an + image from disk. + +nxcomp-1.5.0-59 + +- When detected, the CTRL+ALT+SHIFT+ESC sequence is removed from + the event stream. + +- Also modified the message in the session log to issue a warning, + instead of an error. + +nxcomp-1.5.0-58 + +- Added a setjmp() before yielding the control to the JPEG library. + This makes possible to recover from the JPEG decompression errors + that were previously fatal. + +- In the commit split request, the client id is now encoded by the + client channel beside the propagate flag. The client id is igno- + red by the decoding party. As in the old protocol versions, the + committing client is taken from the client id that was originally + sent together with the packed image. + +- Fixed the compilation problem when defining OPCODES in Misc.cpp. + +- Skipped the synchronous flush of the proxy link when connecting + to a previous NX version. + +- Ensured that the new alerts are only requested when connected to + a compatible proxy. + +- Ignored the option 'fullscreen', targeting the agents. + +nxcomp-1.5.0-57 + +- Added more alerts and changed the name of those dealing with the + resume of a session. + +- Added the MIXED define. When set, the proxy will let all logs go + to the standard error. This is useful to interleave the Xlib log + output with the proxy output in a single file. + +- Added a new alert to report an I/O error at agent reconnection. + This is one of those alert that can't be actually shown, but are + included to offer a consistent view to the agent implementation. + +nxcomp-1.5.0-56 + +- Added the split mode NXSplitModeSync. By selecting this mode, + the proxy will try to empty the split store immediately, until + all messages marked in such mode will be synchronized. The im- + plementation is left to future versions. + + #define NXSplitModeSync 3 + +- Added the messages specific to RDP and VNC sessions in NXalert.h. + Included are also a few alerts related to changes to the color + depth and desktop geometry that may be eventually mandated by the + remote server. + +- Corrected a typo in NXalert.h + +nxcomp-1.5.0-55 + +- Added the 'mode' field in the X_NXStartSplit request. It determi- + nes the strategy that the proxy will adopt to handle the image. + If set to 'eager', the proxy will only split the messages whose + size exceeds the split threshold (the threshold can be found in + the X_NXGetControlParameters reply). If mode is set to lazy, the + proxy will split any image that it is not able to find in its + cache. + + The opcode and the two available modes are defined in NXproto.h, + currently: + + #define NXSplitModeDefault 0 + #define NXSplitModeEager 1 + #define NXSplitModeLazy 2 + +- All requests related to image streaming now carry a 'resource' id. + The id is currently ignored by the proxy in the case of X_NXCom- + mitSplit requests. + +- Added a new NXSetSplitMode() request. It determines the strategy + that the proxy will adopt to stream the images. If set to 'eager' + the proxy will only split the messages whose size exceeds the + split threshold, otherwise it will split all the images, regard- + less their size. This is in preparation of the lazy encoding in + agent. + +- Slightly decreased the startup timeout compared to the value it + had in the 1.4.0. This timeout is used to retain the images used + during session startup in the persistent cache. + +nxcomp-1.5.0-54 + +- Modified the text of the begin-reconnection alert to mention the + speed of the connection detected by the agent. + +nxcomp-1.5.0-53 + +- Reworked the handling of the abort-split events issued by the re- + remote proxy so that we now finalize the procedure and restart the + client asynchronously, in the middle of the write loop. + +nxcomp-1.5.0-52 + +- Rewritten the internal interface to the notification events. There + are now five different split notification events: + + NXNoSplitNotify The operation didn't cause any actual split. + The client can be immediately restarted. + + NXStartSplitNotify A split is ongoing. The client should be + suspended until the end of the split. + + NXCommitSplitNotify A complete request has been recomposed. The + client can commit the given request to the + X server. + + NXEndSplitNotify The split operation was duly completed. The + client can be restarted. + + NXEmptySplitNotify No more split operation are pending. The + agent can use this information to implement + specific strategies, requiring for example + that all messages have been recomposed at + the remote end. This can include updating + the drawables that were not synchronized + because of the lazy encoding. + +- Removed the X_NXSync and X_NXKarma operations, not used anymore by + the NX agents. + +- Increasing or decreasing a timeout makes it respectively equal to + the base timeout or to the base timeout / 4. + +nxcomp-1.5.0-51 + +- Improved the mechanism by which synchronization replies are sent + to the X client proxy. + +- Using the leftPad field as passed by the nxagent 1.5.0-58 doesn't + seem to work with the MIT-SHM. The workaround is to disable the + MIT-SHM operation in the case of 1 bpp images. + +- Removed the limitation on the size of the shared memory segment + that had been introduced for test purposes. + +nxcomp-1.5.0-50 + +- Solved compilation problem when --with-info was not given. + +nxcomp-1.5.0-49 + +- Improved support for color matching from 15 and 16 bpp to 24 and + 32 bpp in RDP sessions. + +- Solved TR05C00910. This was about "shadows" that might appear in + RDP sessions when small elements like tooltips were drawn. + +nxcomp-1.5.0-48 + +- Added a 'commit' field in X_NXCommitSplit request. When zero, the + X server side proxy will unlock the message in the message store, + without actually committing the image to the X server. The new + field required changes to the encoding. This means that this ver- + sion is not compatible with older 1.5.0 nxcomp releases. + +- Added a new control message. This is used by NXTransFlush() to for- + ce a roundtrip between the proxies and speed-up the handling of + the synchronous replies. + +nxcomp-1.5.0-47 + +- Made the timeouts dynamic, based on the user input and the current + bitrate. + +- Set the available tokens to 8. This allows for 16 KB to be sent on + a modem before having to wait for a reply. + +- Added provision for removing a dialog on the remote end. This can + be used, for example, to get rid of a message that was displayed + by the agent at the beginning of a lengthy operation. + +- Fixed a fault that arose when trying to run the proxy on a display + whose name began with the 'nx' string. + +- Running a client or server session on a display host beginning with + 'nx' should be now possible. + +- Flush is now always immediate when there is already data queued in + the TCP socket. + +nxcomp-1.5.0-46 + +- Created the NXalert.h header from Alert.h to share the alert codes + with the agents. The new NXTransAlert() interface can be used to + start an alert on the remote side. + +- Created the NXTransParse*() and NXTransCleanup() wrappers. + +- Temporarily using the single-dash style when passing parameters to + nxclient until the double-dash style is fixed. + +nxcomp-1.5.0-45 + +- Motion events are now flushed at the time the X server channel is + sending the token reply. + +- Renamed NXDialog() to NXTransDialog() and added a window ID parame- + ter, to be used by the agent when starting the "pulldown" dialogs. + +- Also renamed the other NX utility functions. + +nxcomp-1.5.0-44 + +- Solved a bug that prevented auxiliary X connections from working + with the agent. + +- Added the missing check on the proxy pointer in HandleTimer() as + it may be actually called before the proxy is created. + +nxcomp-1.5.0-43 + +- Started tuning the performance. For now, the available tokens are + set to an improbable value of 10000. + +nxcomp-1.5.0-42 + +- Disabled the X server side remote expose events for test purposes. + This is intended uncover the display problems introduced by the + new handling of exposures in the X11 agent. + +- Fixed some timestamp related functions to avoid rounding problems. + +- Moved the timestamps of split, frame and flush from the Control + to the Proxy class. + +- Made the X server side proxy to skip updating the counters related + to token management. + +- Made also the X server side use deferred flushes. + +- Modified handleFrame() to manage both pings and data frames and + send the token before the actual write operation. + +- Cleaned the pseudo-files used to load the control parameters. + +- Cleaned up the FIXME's in the lower layers. More FIXME's remain in + the frontend classes. + +- Added a further counter to the statistics tracking the number of + network writes performed on the proxy link. + +nxcomp-1.5.0-41 + +- Now the watchdog process doesn't kill the parent. The termination + event is determined by monitoring the child. This is advisable to + avoid interfering with the signal handling in agent. + +- The house-keeping process is not started if differential compres- + sion (and thus caching of images) is disabled. + +- Wait for the watchdog to terminate before starting the house-keep- + ing process. + +- Fixed the problem of gray stripes in white areas when using 15bpp + RDP compression. This solves the TR06C00916. + +- Added a log in Message.cpp to tell when an image is removed from + the memory cache. + +- Removed most of the logs. Only left the logs directly related to + the deferred flushes. + +- Removed a warning due to a missing definition in NX.h. + +nxcomp-1.5.0-40 + +- Added the signal '12' to the set of blocked signal on Cygwin. This + is what is delivered to the application when it tries to create a + shared memory segment when the cygserver is not running. The call + later returns "Operation not implemented", only useful if you have + survived to the signal. + +- Modified the configure script to not link against cygipc. + +- Improved error handling in the negotiation phase. + +- Reset the last signal received when aborting a connection attempt. + Not doing that might cause a warning. + +nxcomp-1.5.0-39 + +- Both channels and proxy can now deal with incomplete messages by + waiting for the full data to become available. This is not going + to work when the transport is connected to an agent that is run- + ning in-process, so the timeout must be really small. + +- Made the main loop more compact by letting a single function read + from proxy and channels. The same change applies to writing to + descriptors that are reported to be ready. + +- Optimized the loop to report as ready the agent descriptors that + have become available after the proxy execution phase. + +- Now the proxy will try to asynchronously read from its descriptor + after having read from the channel. + +- Unified the routine setting the routines setting the read and write + descriptors and the timeouts. + +- Unified the routine handling the channel events. + +- Reintroduced the last ping timestamp to avoid sending more than a + single ping every PingTimeout milliseconds. + +- The cleanup procedure now waits for the watchdog and house-keeping + processes to terminate. + +- Reverted the change occurred in 1.5.0-35 about the byte-ordering + problem in decompression of PNG and JPEG images. + +- More coding about deferred flushes. + +- Relevant debug logs are enabled in the main loop, in the proxy and + in the channel classes, so use only for testing. + +nxcomp-1.5.0-38 + +- Started the implementation of deferred writes based on the new NX + transport. + +- Solved a problem with the statistics file affecting the Windows + platform. Basically it seems that Cygwin or the stdc++ library + don't deal correctly with files that are reopened just after + having unlinked them. + +- Implemented support for 15 bpp RDP bitmaps. + +- Added "rdpcolors" and "rdpcache" to the list of parameters that + are ignored in ParseEnviromentOptions(). + +- This version has lot of logs enabled and some forced cleanups in + the case of unexpected conditions. Avoid to use it for long-last- + ing test sessions. + +nxcomp-1.5.0-37 + +- Now splitting of images is fully disabled when running with link + LAN. Previously the split was not executed by the proxy, but the + agent was configured to send the start/end sequence. + +- Added the check protecting the proxy from token underflow. In the + previous code the check was left out to verify the conditions un- + der which this event might be encountered. + +- NXTransWrite() and NXTransWriteVector() allocate a context before + calling handleRead(), so they can correctly return in the case of + a cleanup. + +nxcomp-1.5.0-36 + +- Modified the channel write loop to interleave abort split events + between the writes to the X server socket. + +nxcomp-1.5.0-35 + +- Solved a byte-ordering problem in decompression of PNG and JPEG + images. + +- Changed the handleToken() interface to make explicit if a token + must be issued because of a ping. + +- Small fix to prevent a warning in Jpeg.cpp when TEST is enabled. + +nxcomp-1.5.0-34 + +- Solved a few problems introduced by the rewrite of the read loops + in channels. + +- Added definition of NXCollectInputFocusNotify. + +nxcomp-1.5.0-33 + +- Implemented a new control flow system based on tokens exchanged bet- + ween the proxies. When the clint side runs out of tokens it stops + sending data until a new token is returned. Tokens are sent whenever + the data written to the socket exceeds the amount of data set for a + scheduled write, so the proxy is free to send a number of smaller + frames before running out of tokens. + +- The reason the new system is introduced is because the old method + had two outstanding problems: + + - It worked very well when the proxies were directly connected, + but couldn't reliably detect a link congestion when tunneled + over SSH. + + - In the attempt of reducing the data queued to the TCP layer, it + didn't leverage all the available bandwidth. + +- Moved the final check on the state of the session at the end of + execution stage, instead of the beginning. The signals sent by the + user to request the statistics could be reset before the proxy had + entered the right procedure. + +- Added the session type 'unix-rootless', to be used for single apps + run with the agent in rootless mode. + +nxcomp-1.5.0-32 + +- Modified the main loop to skip the select when I/O is possible on + any of the agent descriptors or the proxy link. + +- Now the house-keeping process is allocated in the heap instead of + the stack. + +nxcomp-1.5.0-31 + +- The server channel now performs asynchronous reads from the display + by interleaving them with data decoded from the remote proxy. + +- Improved the handling of the memory-to-memory transport. + +nxcomp-1.5.0-30 + +- Redesigned the handling of the congestion events to work more re- + liably and to report the events to the remote peer earlier. + +- Increased the size of the shared memory segment when the MIT-SHM + extension is activated. + +- Solved a bug that prevented the ping timeout to work as expected. + +- Ensured that, when entering the main select(), neither the chan- + nels or the proxy have pending messages in the read buffers. + +- There is now only a single case where we can have pending messa- + ges, namely in the handling of the MIT-SHM events. + +- Solved a bug introduced by the 1.5.0-29 that made the proxy en- + ter the select with a null timeout. + +- Renamed LINK_TYPE_AUTO to LINK_TYPE_NONE in NXproto.h. + +nxcomp-1.5.0-29 + +- Now encoding data from the agent descriptors happens in the same + context as data is written to the buffer. + +- Optimized the handling of the congestion events to avoid running + further unneeded loops. + +- Added timer handling utilities. + +nxcomp-1.5.0-28 + +- Added code providing information about the reason of the failure + encountered connecting to the local X server. This greatly helps + when troubleshooting X authorization problems. + +- On connection failure a warning message is printed in the session + log. + +- Removed the warning that was previously printed when the MIT-SHM + extension failed to be initialized on Windows. Shared memory has + problems on Cygwin and it currently doesn't work in NXWin. + +- Reworked the message printed in the case of link failure. + +nxcomp-1.5.0-27 + +- Solved a bug in the connection procedure introduced by 1.5.0-25. + +nxcomp-1.5.0-26 + +- Transformed the errors printed on failure of the fork() creating + the children into warnings. This can happen quite often on Win- + dows, due to well known Cygwin problems. See also the ChangeLog + entry for nxcomp 1.4.0-28. This patch closes the TRSL052278 but + it's obviously not a long-term solution. + +- Set the sticky bit when creating the '/tmp/.X11-unix' directory. + +- Modified the Makefile.in to remove the *.out.* files generated by + Valgrind. + +- Updated the README files. + +nxcomp-1.5.0-25 + +- Changed the directory where the client for the Mac is searched if + it is not found in the system path. + +- Modified Auth.cpp to use nxauth also on the Mac. + +- Reworked the procedure showing the alert dialog when a timeout is + encountered in the initial connection. + +- Removed the experimental code from the official 1.5.0 branch. + +nxcomp-1.5.0-24 + +- Implemented more experimental classes. + +nxcomp-1.5.0-23 + +- Added the NX_SIGNAL_FORWARD action to NXTransSignal(). This can + be used to let the proxy call the original signal handler of the + agent after having blocked the signal. + +nxcomp-1.5.0-22 + +- Ensured that we always have a context, even before creating the + transport. + +- Suppressed the error message printed when passing the -h option. + +- Added the experimental code that is currently under development. + +nxcomp-1.5.0-21 + +- Enabled the fake X cookie authentication. This requires checking + the remote proxy version to verify that the server supports the + new authorization mechanism. + +- It's worth noting that the X client side proxy doesn't care which + cookie is sent over the connection. The problem is that clients + connecting to 1.4.0 servers don't have a method to force the ser- + ver to use the fake cookie. This means that we have to solve the + problem by letting the proxy check the remote version so that it + can omit to replace the cookie when connecting to older servers. + +nxcomp-1.5.0-20 + +- Added the NXTransCongestion() function. It returns true if proxy + is in congestion state. + +- Removed an incorrect warning that was printed when calling force() + for the memory-to-memory transport. The agent could actually re- + quire multiple loops to read all data queued for it. + +nxcomp-1.5.0-19 + +- Small optimization in NXTransReadable() to run a new NXTransConti- + nue() loop only after at least RetryTimeout milliseconds are pas- + sed since the last call and still no data is available. This cuts + the number of unneeded loops to 1/4th of the total, probably more, + on faster machines. + +- Added NXCollectGrabPointerNotify to NXproto.h. + +nxcomp-1.5.0-18 + +- Minor changes to NXTransContinue(). + +nxcomp-1.5.0-17 + +- Moved respawning of a new nxclient instance in the cleanup procedu- + re. This ensures that the respawn is executed whatever is the rea- + son of the session shutdown. + +- Added a method to force closure of a given channel in proxy. + +- Removed code handling the special case triggered on Windows by the + presence of a NX_SESSION variable in the environment. + +nxcomp-1.5.0-16 + +- Added the NXTransSignal() function to let agents tell to the proxy + how to handle the standard POSIX signals. Given the SIGINT signal, + for example, the caller can specify any of the following actions. + + NX_SIGNAL_ENABLE: A signal handler will have to be installed by + the library, so that it can be intercepted by + the proxy. + + NX_SIGNAL_DISABLE: The signal will be handled by the caller and, + eventually, forwarded to the proxy by calling + NXTransSignal() explicitly. + + NX_SIGNAL_RAISE: The signal must be handled now, as if it had + been delivered by the operating system. This + function can be called by the agent with the + purpose of propagating a signal to the proxy. + + As a rule of thumb, agents should let the proxy handle SIGUSR1 and + SIGUSR2, used for producing the NX protocol statistics, and SIGHUP, + used for disconnecting the NX transport. + +- The following signals are blocked by default upon creation of the + NX transport: + + SIGCHLD These signals should be always put under the control + SIGUSR1 of the proxy. If agents are intercepting them, agents + SIGUSR2 should later call NXTransSignal(..., NX_SIGNAL_RAISE) + SIGHUP to forward the signal to the proxy. + + SIGINT These signals should be intercepted by agents. Agents + SIGTERM should ensure that NXTransDestroy() is called before + exiting, to give the proxy a chance to shut down the + NX transport. + + SIGPIPE This signal is blocked by the proxy, but not used to + implement any functionality. It can be handled by the + NX agent without affecting the proxy. + + SIGALRM This is not blocked by the proxy, but could be used + in future. + + SIGVTALRM These signals are not used and should not be used in + SIGWINCH future versions of the library. + SIGIO + SIGTSTP + SIGTTIN + SIGTTOU + +- By calling NXTransSignal(..., NX_SIGNAL_DISABLE) nxcomp will res- + tore the signal handler that was saved at the time the proxy hand- + ler was installed. This means that you should call the function + just after the XOpenDisplay() or any other function used to init- + ialize the NX transport. + +nxcomp-1.5.0-15 + +- In NXTransContinue(), if the transport is gone, return immediately, + that is without having to wait until the NXTransSelect() timeout. + +- Ensure that NXTransCreate() has a jump context, just in the case + a subsequent operation would cause a cleanup. + +nxcomp-1.5.0-14 + +- Solved a problem with requests left in the agent's buffer when run- + ning the NX transport. The agent could have enqueued data to our + side and checked the available events but requests could not be + written to the proxy because proxy might not have had a chance to + enter a new select. We found that this behaviour was triggered by + _XEventsQueued, so now a new loop is forced when agent is calling + _X11TransDataReadable. The procedure can be optimized, by avoiding + an expensive loop when no critical I/O is pending. + +- Added a few additional logs to ClientChannel and ServerChannel. + +nxcomp-1.5.0-13 + +- Added the code handling the special cases of an user not specifying + a proxy cookie or the case of the X authorization file not contain- + ing a value matching the display. In the first case we'll forward + the same cookie that was feeded to the proxy, in the second case we + will forward to the X server a random generated cookie, similarly to + what SSH does in this same condition. + +- Rewritten the command line parser. Removed all the command line + options parsed on behalf of nxproxy except: + + -C Specify that nxproxy has to run on the "X client" + side, listening for connections and impersonating + an X server.\n\ + + -S Specify that nxproxy has to run in "X server" mode, + thus forwarding the connections to daemons running + on the client.\n\ + + -V n.n.n Request nxproxy to load the given nxcomp version. + This option is only present on Solaris and Linux. + + -v Print version information. + + host:port Put at the end, specifies the host and port of the + listening proxy. + + value=name Set the NX option to the provided value. + + Multiple NX options can be specified in the DISPLAY environment or + on the command line, by using the nx/nx,name=value notation. + +- The above information is printed on the console when incurring in + a parse error, together with a list of the available option=value + parameters. + +- Renamed the 'log' option to 'errors'. This makes sense as the de- + fault name for the log file is actually 'errors'. + +- Now the "Established X server connection" message is printed to + the session log only after the X connection has passed the X auth- + entication phase. This means that the NX client should become able + to show the details of the session log whenever the session fails + due to a cookie problem. + +- When selecting the additional services without specifying a port, + the client proxy will now automatically forward the connections to + the corresponding well-known ports of the CUPS, SMB and HTTP servi- + ces. Embedded X keyboard connections will be automatically forward- + ed to the same display port used to connect to the X server. The + user will still have to specify the port to be used for the media + connections as we don't have a suitable well-known port. + +- Starting from this version, connections to the keybd port will cre- + ate real X connection channels. This is required to let connections + leverage the fake authorization cookie. + +- By testing the forwarding of keybd connections I found that, when + letting X clients connect to the port, it is required to provide + the X cookie for the unix display. Adding only the TCP cookie will + not work. For example, by creating a cookie as in: + + xauth add localhost:2009 MIT-MAGIC-COOKIE-1 6f...f4 + + And running: + + xterm xterm -display localhost:2009 + + You will get the following error: + + Xlib: connection to "localhost:2009.0" refused by server + Xlib: No protocol specified + + Adding also the unix cookie will fix it: + + xauth add localhost/unix:2009 MIT-MAGIC-COOKIE-1 6f...f4 + + This seems to be a Xlib problem, with Xlib trying to get the cookie + for the UDS port even if the TCP port was requested by the user. + +- Fixed a bug that prevented the nxclient dialog to be displayed when + the session was abruptedly shut down. + +- Fixed the compilation error on Apple MacOSX due to the sa_restorer + field in sigaction. As long as this field is present on Linux we + will keep following the safer route and will set it explicitly to + NULL. + +- Included what needs to be included in Process.cpp to compile with + older gcc. + +nxcomp-1.5.0-12 + +- Implemented a replacement for the popen() and pclose() that do not + rely on a shell to run the command. They were required on Windows, + where we don't ship a suitable shell in the install. + +- Removed code forcing the PATH to include the bin directory on + Windows. + +nxcomp-1.5.0-11 + +- Forced Auth.cpp on Windows to have the directory containing the + nxauth executable in the PATH. This is just for testing, until + nxclient is fixed. + +- Fixed compilation errors on Cygwin and Sun. + +- Removed the NX_FORCE_* stubs. + +nxcomp-1.5.0-10 + +- Modified the memory management policies in ReadBuffer to fit all + the available bytes in a single buffer allocation. + +- The locateMessage() methods now give hints on the amount of data + that has to be read. + +- The read loop in channel now doesn't yield in the case of prio- + ritized messages. This is experimental. + +- Removed the check on isTimeToYield() between encodings of multi- + ple messages. This is aimed at reducing the risk of leaving pen- + ding messages in channels. + +- Modified the channels' read loop to always read all the available + data. + +- Disabled the log output that was selected when compiling with the + configure option --with-info. This leaves space for other log out- + put to be selected for more up-to-date scopes. + +- Implemented the NXTransReadVector() and the NXTransWriteVector() + functions to replace READV() and WRITEV(). + +- Implemented memory-to-memory communication between the agent and + the NX proxy by making use of the NXTransAgent() interface in the + nx-X11/lib/X11/Xtranssock.c file. + +- Added a check in NXTransSelect() for the EBADF and, on Solaris, + the EINVAL errors. It can happen in the X11 code that a descript- + or has become invalid before it is removed from the managed set + +- Rewritten the signal handling functions to restore the old actions + and masks when the NX transport is destroyed. + +- Added a NXTransAgent() function to let agents tell the proxy which + descriptor must be used for the controlling connection. Setting a + controlling connection has the effect of disabling further X client + connections and makes the proxy terminate when the channel is shut + down. + +- Solved a problem with setting the initial timeout in the select(). + +- Modified the Makefile.in to not include -Wno-deprecated when compi- + ling C programs. + +nxcomp-1.5.0-9 + +- Fixed a problem that prevented the 1.5.0-8 to work on the NX server + side. + +- This version has NX_FORCE_NULL_LISTEN_OPTION and NX_FORCE_NEW_SES- + SION_OPTION undefined, so it should work in a way that is compati- + ble with the old nxcomp. + +nxcomp-1.5.0-8 + +- The new code comes with a preliminary integration of nxcomp with + SSH. It is now possible to create the NX transport by just calling + the "switch" command as in the following example: + + NX> 299 Switching connection to: NX options: ... + +- Other possible forms for the NX switch command are: + + NX> 299 Switching connection to: NX mode: ... + + NX> 299 Switching connection to: NX mode: ... options: ... + + Or just: + + NX> 299 Switching connection to: NX + + The "mode" parameter is there to provide a way to run both enc- + rypted and unencrypted connections. Possible values are "encrypt- + ed", "unencrypted" or "default", the latter being an alias for + "encrypted". Unfortunately I was not able to test unencrypted + connections, so this may or may not work. + +- The top-level process can create the NX transport layer by calling + NXTransCreate(). The user has to set up a socket pair and pass the + higher descriptor to nxcomp. nxcomp will later monitor its end, by + reading and writing NX-encoded traffic. The user has to call the + NXTransExecute() function as often as it is possible, by letting + first NXTransPrepare() combine the sets of NX descriptors with the + descriptors that are used inside its process. A custom NXTransSel- + ect() is provided to optionally replace the original select(). This + function saves the original error code and the number of selected + descriptors upon exit, so the user can call it, restore the original + values as they were returned by the select() and run the rest of + the loop unmodified. + +- Future versions of the library should provide appropriate methods + for passing data to and from the proxy by means of a memcpy(), so + that it will be possible to remove the even minimal TCP overhead. + +- Note that integration is far from complete. More work is required + especially to manage the shutdown cleanly, in a way that gives to + SSH a chance to free its resources, and on adding facilities for + handling SSH and NX signals in a single function. + +- Rewritten the initialization procedure to make possible to run the + proxy in-process in an arbitrary connection manager, like SSH or a + HTTP utility. The same functionality can be used to embed nxcomp in + the NX agents, so that nxcomp has not to run in a separate process. + +- A new state-machine handles the advances through the connection + stages until the remote proxy (or the forwarder process ) is auth- + enticated, options have been negotiated and the session is started. + +- The option "session" is now used to pass the name of the session + file to the proxy. The parameter was previously used to pass the + literal name of the session, as set by the user, and was ignored + by the proxy. By default the session log is the standard error of + the process. It is anyway required to set the option when running + inside SSH, otherwise output will go to the same file as the SSH + output. In the NX client this would be the 'sshlog' file. + +- This version can be easily crafted to test the new integration by + setting the following define: + + NX_FORCE_NULL_LISTEN_OPTION + + This makes possible to test the nxcomp/nxssh integration by using + any production 1.4.0 client. To run this version you are required + to use nxproxy 1.5.0-4 and nxssh-1.5.0-6. + +- New functions handling enabling and disabling signals, based on + sigprocmask(). + +- Improved error reporting when failures are encountered while ne- + gotiating the session. + +nxcomp-1.5.0-7 + +- Caches are saved with a version identifier 1.4.0 so that they are + not discarded after upgrading the software to the 1.5.0. + +- Made values of T_* enumerations to be all lower case. + +- Updated copyright to year 2005. + +- Started working on an interface for running nxcomp in-process, as + a additional transport layer of nxssh or nxagent. + +nxcomp-1.5.0-6 + +- Modified the configure script and the makefiles to not include the + -Wstrict-prototypes and -Wmissing-prototypes compilation flags. The + -Wnested-externs and -Wmissing-declarations flags are not included + when using GCC 3. + +- Removed the initial newline from string "NXPROXY - Version" printed + at program startup. + +- Made X authentication compatible with 1.4.0 clients. This is a tem- + porary solution while code is updated to handle the new X authori- + zation scheme. + +nxcomp-1.5.0-5 + +- Added an Auth class to handle the X authentication. The NX server + should now use the same proxie cookie that is passed by the client + at session startup. The X server side proxy will forward the autho- + rization credentials by replacing the fake cookie with the real co- + okie, as it is read from the auth file using the xauth utility. The + implementation is based on the corresponding code found in the SSH + client and comes with the same limitations: only MIT-MAGIC-COOKIE-1 + cookies are checked and the authorization file is read only once, + at the time the instance is initialized. If the auth file changes + along the life of the session, the old cookie will still be used. + This works with X servers because of an undocumented "feature". + See also nx-X11. + +nxcomp-1.5.0-4 + +- Adjusted for alarm(0) returning an inconsistent value in ConnectTo- + Remote(). + +- Small changes to Types.h, Jpeg.cpp and Png.cpp to compile with gcc + 3.4.2. + +- Cosmetic changes to the ChangeLog file. + +nxcomp-1.5.0-3 + +- Removed test code from ServerChannel.cpp. + +- Small cosmetic change in Loop.cpp. + +- Tested for compatibility against 1.4.1-8. + +nxcomp-1.5.0-2 + +- Changed VERSION file according to TRCL052336. + +nxcomp-1.5.0-1 + +- Opened the 1.5.0 branch based on 1.4.1-9. + +nxcomp-1.4.1-9 + +- Implemented methods PACK_RDP_PLAIN_64K_COLORS and PACK_RDP_PLAIN_- + 16M_COLORS. It seems that 16 bpp plain bitmaps can be seldom recei- + ved. This doesn't seem to be the case of 24 bpp bitmaps. + +nxcomp-1.4.1-8 + +- The new code enables use of 16 bpp and 32 bpp RDP bitmaps. This re- + quired modifications to the following files: + + Misc.h + Misc.cpp + Loop.cpp + Control.cpp + ServerChannel.cpp + Unpack.h + Unpack.cpp + +- Lots of cosmetic changes compared to the original code in 1.4.1-7. + +- Merged the 1.4.0 and the 1.4.1 branches by importing changes up to + the 1.4.1-7. + +nxcomp-1.4.0-30 + +- Modified the function checking the Unix socket where X connections + will be forwarded. The function will not fail if the socket itself + doesn't exist yet. This solves the TRCL042203. + +- Moved the code checking for the CTRL+ALT+SHIFT+ESC sequence to a + separate function. The implementation will now look for a different + sequence on the MacOS/X platform. This should solve the TRCL042182. + +nxcomp-1.4.0-29 + +- Solved a bug that could cause proxy to stop reading data from the + X channels due to an incorrect calculation of the bytes queued on + the proxy link. The bug only affected Linux kernels of the 2.0/2.2 + series. + +- Fixed a problem in the proxy class that could let the select time- + out to become zero. + +nxcomp-1.4.0-28 + +- Prevented the main proxy process from quitting when the fork() of + any of the children fails. This can actually happen on Windows due + to conflicts in reallocating any of the Cygwin DLLs. + +- Reworked handling of the priority flag in channels when dealing + with the X_InternAtoms and X_AllocColor requests to reduce the time + of session startup. Priority is never set in case of X_InternAtom + requests and replies as we assume that most clients use the appro- + priate Xlib function to pipeline multiple requests in a single net- + work operation. + +- The timeout after which proxy will abort the peer connection is + still 120 seconds. An alert dialog will be shown earlier, after 30 + seconds instead of 60. + +nxcomp-1.4.0-27 + +- Removed the code setting priority on channels on ButtonPress and + Button release events. It seems preferrable to delay the flush and + pack more events in a single frame. This makes possible to get the + ButtonRelease together with the ButtonPress. + +- Fixed error detection in SetNoDelay() where a positive result + could produce a 'not supported' message in debug mode. + +nxcomp-1.4.0-26 + +- Reworked the check aimed at detecting the clock drifts. The previ- + ous code, introduced in 1.3.2-2, had the undesired side-effect of + resetting the proxy timeout. This could cause the proxy to never + detect that the other end had been killed. + +- The default behaviour of proxy is now to terminate the session at + the time an error is encountered. This includes network failures. + +- Added a new dialog to be shown to the user whenever the session + is terminated abnormally. + +nxcomp-1.4.0-25 + +- Fixed a bug in handling of suppression of errors generated by + committing the image splits. Other errors, unrelated to the commit + of split, could be suppressed. This might cause the hangup of the + session when the suppressed error was matching a reply. + +nxcomp-1.4.0-24 + +- When killing the proxy process -9 the watchdog could remain alive. + This caused the SSH link to keep the stderr open, with the effect + that former proxy message were not flushed to the session log. + Now the watchdog checks every second if the parent is dead, so + that file descriptors can be closed as soon as possible. + +- SetupDisplaySocket() tried to force the connections to the X + server on the UNIX port whenever the display was set to localhost. + This patch was intended to fix a bug in nxclient, using the TCP + port even when the display was set to a UNIX socket. This beha- + viour caused problems when running nxclient on a remote host by + means of a ssh -X. Proxy will now adhere to the display setting. + +nxcomp-1.4.0-23 + +- Added the possibility to respawn nxclient at the end of session. + This is an useful feature when powering thin-clients where NX + is the only application made available. + +- This configuration applies system-wide to the local client ins- + tallation. By default it is disabled. It can be enabled by the + by creating a 'noexit' file in the directory '/usr/NX/share', + or at compile time, by setting ENABLE_RESTART_ON_SHUTDOWN to 1. + +- Note that the solution is not perfect yet, as there are cases + where session could die without going through HandleShutdown(), + for example if a decoding error is raised in the communication + with the remote peer and the subsequent restore of the proxy + link fails to succeed. + +nxcomp-1.4.0-22 + +- Corrected typos in Timestamp.h and Loop.cpp. + +nxcomp-1.4.0-21 + +- Tuned the handling of RenderCompositeGlyphs. Now compression of + RENDER shows an average ratio of 8:1. This is a steady increase + compared to the 5:1 of the 1.3.2 version. The overall advantage + when running clients displaying a large amount of text is 30%. + +nxcomp-1.4.0-20 + +- Added a new message store for the CreatePixmap request. + +- Fixed handleCopy() to only send the data part past the offset. + This fix can save a significant amount of traffic, especially + when sending many small images whose size doesn't reach the + threshold set for compressing them. + +nxcomp-1.4.0-19 + +- Added tuning of all the RENDER requests. RenderCompositeGlyphs + will require further work. + +- Completed porting of the RENDER requests to the new templates. + +nxcomp-1.4.0-18 + +- Tuned the handling of RenderCreatePicture and RenderFreePicture. + +- Created a new template system for writing new message encoders. + +- Renamed getBits() in EncodeBuffer with diffBits(). The getBits() + method now returns the bits actually allocated in the buffer and + can be called multiple times. + +nxcomp-1.4.0-17 + +- Provided specific encoding of the remaining RENDER requests and + added compression of RenderCreateGlyphSet. + +nxcomp-1.4.0-16 + +- Code underwent through 7 different patch versions but seems to + be stable now. It still needs to provide specific encoding for + RenderCreatePicture RenderChangePicture and RenderFreePicture. + Code will likely include incompatible changes at any new version + until the new encoding will stabilize, so be sure that you use + the same nxcomp version at both sides. + +- Created the infrastructure for compressing extension messages + based on the minor opcode. A new class, MinorMessageStore, has + to be inherited by stores requiring specific compression, so + that all the encoding methods of the parent can be redirected + to it. The RENDER extension is now compressed using this new + class. + +- Managed to maintain the compatibility with caches created by the + 1.3.X version. Caches will be saved using the old format if the + remote version is not a 1.4.x. When restoring a cache created + by the 1.3.x with both proxies being the newest version, RENDER + mesages will be discarded without having to discard the whole + cache. + +- Added a member to the message class to store the identity size. + This field is now used instead of the default data offset to + manage the message data, that is the part of message after the + identity. + +- Removed the warnings printed in the session log when passing the + 'kbtype' and the 'geometry' options to the proxy. These options + are actually used by agents. + +nxcomp-1.4.0-15 + +- Started implementation of the new framework for handling enco- + ding of X extensions. + +- Renamed the overloaded methods handleEncode() and handleDecode() + to handleEncodeCached(), handleEncodeIdentity() and handleDecode- + Cached(), handleDecodeIdentity(). + +- Updated the copyright notice to year 2004. + +nxcomp-1.4.0-14 + +- Added the new channel for HTTP connections. This channel can be + used to let applications running on the NX server get access to + data and applications made available by a HTTP daemon running at + the client side. + + This channel is not used at the moment by nxclient. It can be + activated by passing http=1 to the NX server side proxy and the + value http=80 to the NX client side. + +nxcomp-1.4.0-13 + +- Quick patch to run on MacOS/X where inet_addr("127.0.0.1") + alone seems to fail to return a valid interface. + +nxcomp-1.4.0-12 + +- Few cosmetic changes to logging. + +- Removed the debug output. + +nxcomp-1.4.0-11 + +- Removed code used for simulating the new forwarding function- + ality without client and server support. + +nxcomp-1.4.0-10 + +- Implemented authentication of the forwarder to the listening + proxy. If a session cookie is required, the forwarder must + provide the cookie upon connection. + + An authentication phase at the time the forwarder connects + to the NX client side is strongly suggested because it is usu- + ally this side that sends the authorization cookie. Without + such a forwarder authentication, the local peer would reveal + the cookie to the first process connecting to the port. + +- If no cookie is specified in the switch command, the forward- + er is required to skip the authentication phase. This can be + useful when running the programs on the command line. + +- The implementation required appropriate changes to session + negotiation in nxssh. This version requires nxssh-1.4.0-8. + +nxcomp-1.4.0-9 + +- Fixed the startup procedure to correctly negotiate the cookie + when the X server side proxy is listening for a forwarder. + +- When listening for a local forwarder (that is when the listen + option is enabled at X server side), proxy will listen for the + forwarder on the localhost interface. + +- This version has ports and and other parameters hardcoded for + testing purposes and is not intended for normal use. + +nxcomp-1.4.0-8 + +- Slightly modified the text of FAILED_PROXY_CONNECTION alert. + +nxcomp-1.4.0-7 + +- Added provision for leaving a running dialog showing an OK box + if proxy is exiting abnormally. This seems to fail to yield the + expected results as, at the present moment, client checks if + parent has exited. + +- Added a Binder class invoked when calling proxy with -B option. + It would serve as a replacement of the modifications I'm doing + in nxssh. The class is just a framework and the implementation + is unfinished. + +nxcomp-1.4.0-6 + +- Added a line in the session log if the connection procedure is + aborted due to a signal. + +- Fixed ParseHostOption() to let it take in account the proxy + port offset when passing 'host:port' as the last parameter at + X server side. + +nxcomp-1.4.0-5 + +- Lowered the default port offsets used for CUPS and SMB services + to 2000 and 3000. Arbitrary ports can be used by passing the ser- + vice's port at proxy startup. By default, anyway, the port is at + the same offset of the proxied display. Considering that the NX + server uses to start the first session at display 1000, we must + lower some of the defaults to avoid interference with the normal + X sessions run on the server. + + Session at display ":1000" will have: + + . Forwarding of CUPS connections at 3000. + + . Forwarding of SMB connections at 4000. + + . The listening proxy (at NX server side) at 5000. This + port is not used when enabling SSH tunneling + + . The proxied X display (NX agent or proxy) at 7000. + + . Forwarding of multimedia channels at 8000. + + . Forwarding of embedded keyboard connections at 9000. + +- Turned off the log output. + +nxcomp-1.4.0-4 + +- Managed to get the X client side proxy connect to the remote + peer. This means that some parameters that were implicitly + assumed based on the proxied port simulating the X display + must be now specified in the NX display string. + +- The 'port' parameter now specifies the remote TCP port where + the local proxy will connect to the remote peer. In previous + versions this parameter also affected the proxied port. This + was mainly a side effect, as the remote peer was always con- + tacted at port 4000 plus the proxied display offset. + +- Added the 'listen' parameter to tell to the proxy that is go- + ing to accept the peer connection on which port it will be + contacted. By default, similarly to the previous version, the + proxy will listen at the proxied display offset. + +- A check has been added in order to disallow passing both the + 'accept' and the 'connect' parameter at the same time. A simi- + lar check affects the 'listen' parameter. + +- Renamed the previously unused 'sync' channel as 'cups'. + +nxcomp-1.4.0-3 + +- Preserved the ability of version 1.3.2 to load caches generated + by this version. + +nxcomp-1.4.0-2 + +- Small fixes to compile under Solaris 8. + +nxcomp-1.4.0-1 + +- Opened the 1.4.0 branch. + +nxcomp-1.3.2-4 + +- Fixed a problem with shmget(). Code in ServerChannel checked + the return value for being greater then 0, while 0 can actual- + ly be a valid segment. + +- When memory cache is disabled, nxcomp will explicitly set the + appropriate control variables dealing with loading and saving + of the persistent cache. This can be considered a cosmetic + change as nxcomp will disable NX delta compression if memory + cache is not available and this has an implicit effect on the + ability to load and save such a cache. + +nxcomp-1.3.2-3 + +- Removed inclusion of zlib.h in Png.cpp. Conflicting symbols + with zlib.h from nx-X11 could cause compilation to fail. + +nxcomp-1.3.2-2 + +- Added a function to take into account the clock drifts at the + time we check the ping from the remote proxy. This can be + caused by the user changing the system time or by small adjust- + ments introduced by the operating system making the clock go + backward. Such events could cause the proxy link to be shut + down and reconnected. + +- Reduced the length of lines printed in statistics when showing + the details of X protocol's opcodes. This is intended to help + nxclient to keep the whole statistics in the 'details' window, + so that users don't have to use the scrollbars. + +nxcomp-1.3.2-1 + +- Opened the 1.3.2 branch. + +nxcomp-1.3.1-5 + +- It seems that Solaris can return an EINVAL error selecting a + shutdown descriptor even before we actually close the socket. + We now ignore the condition on Solaris. This is definitely a + Solaris bug. + +nxcomp-1.3.1-4 + +- Increased the timeout after which proxy will abort the peer + connection to 120 seconds. An alert dialog will now be shown + after 60 seconds, instead of the 30 seconds being the default + in the previous version. Some users reported the timeout to + be too short in the case of temporary network failures. + +nxcomp-1.3.1-3 + +- Some optimizations in the cache house-keeping process. Now it + runs at lower system priority in respect to the parent. Any 2 + iterations through directories and images, it also sleeps for + a tiny amount of time. This further decreases the system load. + +- Removed the underline characters and added a colon in the + title of this ChangeLog to fully comply with format used in + the release notices. + +nxcomp-1.3.1-2 + +- Fixed a crash when running both client and server on the SPARC + Solaris. An optimization used to avoid byte-swapping when both + hosts have the same endianess doesn't work on SPARC if buffer + is not aligned to word boundary. A better version of the code + should check the CPU, not the OS, as this probably applies to + other processors. + +nxcomp-1.3.1-1 + +- Opened the 1.3.1 branch. + +nxcomp-1.3.0-50 + +- Disabled the processor limit in X client side proxy. In previous + versions the processor load limit was set to an idle time ratio + of 2. This was likely to cause an unwanted slowdown on very old + hardware or when running the server as guest OS inside a VMWare + virtual machine. + +nxcomp-1.3.0-49 + +- Last minute update on proxy shutdown bug on Cygwin. A stack + trace reveals that faillure happens in the static destructor of + the BlockCacheSet class. It seems that problem appeared just + after having upgraded to the latest version of Cygwin DLL. Now + the destructor is skipped at shutdown. + +nxcomp-1.3.0-48 + +- Further fix to overcome the shutdown problem on Windows. + +nxcomp-1.3.0-47 + +- Used T_files::value_type() in Keeper.cpp. The form without the + explicit constructor fails to compile with GCC 2.91 on RH 6.2. + +- Fixed '==' -> '=' in configure.in to build under RH 6.2 and + probably other platforms. + +nxcomp-1.3.0-46 + +- The cleanup procedure now skips deletion of the IO streams + under Windows. This is intended to overcome a strange segfault + occurring at random time, at the time proxy is being shutdown. + +nxcomp-1.3.0-45 + +- Newer versions of the stdlibc++ do not seem to be able to deal + with NULL strings or non printable characters. This caused the + standard error stream to get sometimes corrupted in the case + TEST and DEBUG logs were enabled in Loop.cpp. + +nxcomp-1.3.0-44 + +- Disabled TEST and DEBUG logs in ServerChannel. + +nxcomp-1.3.0-43 + +- Fixed a crash when unpacking an image in server proxy in the + case the unpack state for the given channel had not been + previously created. + +nxcomp-1.3.0-42 + +- Small modification to setSchedule() to not account previous + data accumulated in the encode buffer. The new code seems to + allow better use of the available bandwidth. + +nxcomp-1.3.0-41 + +- Further fix in Tight decompression. Content of the main write + buffer was not removed before flushing the unpacked data to + the X server link. + +nxcomp-1.3.0-40 + +- Removed the code marked as FIXME in Loop and ServerChannel. + Code was used in previous version to override any pack method + other than NO_PACK and to disable initialization of the shared + memory. + +nxcomp-1.3.0-39 + +- Solved the problem with unpacking of RDP text on big-endian + architectures. The width field in PutPackedImage was put as + 16 bits and extracted as 32 bits at decoding side. + +- Moved the code checking if any of the children has exited in a + specific function. This function is now called any time signals + are newly enabled. This works even on Solaris. + +- Enabled use of shared memory with Tight image decompression. + +- Added event NXCollectPropertyNotify to NXproto.h. + +nxcomp-1.3.0-38 + +- Message locks are now checked before splitting a message. + +nxcomp-1.3.0-37 + +- Added a further counter to yield encoding data if the amount + of output bytes to be written to channels exceeds a threshold. + +- Modified proxy to write data immediately if the encoding loop + was interrupted. + +nxcomp-1.3.0-36 + +- Further fix required by Tight decompression. By handling mul- + tiple writes in the Tight class we may flush the main write + buffer in the wrong order. If Tight decompression is enabled, + the buffer is now flushed before decoding the packed image. + +- A SIGCHLD is raised any time signals are newly enabled. This + allows the main loop to wait() the pid of children that had + exited while signals were disabled. + +nxcomp-1.3.0-35 + +- Fixed Tight decompression by handling multiple writes to the + channel's transport inside the decompression function. + +- Made Tight decompressor in ServerChannel a pointer instead of + an instance of the class. Class is allocated the first time it + is referenced. + +- Rewritten handleUnpack() in ServerChannel to use a switch() + on the pack method instead of multiple if(). + +nxcomp-1.3.0-34 + +- Disabled RENDER extension when running X agent sessions on + the Solaris client. Problems seem to be caused by incompati- + bilities in the implementation of RENDER on the Sun X server + shipped by default. We did not test NX with the XFree86 X + server, but it seems that, when using the Sun X server, even + plain X clients don't make full use of the extension. + +nxcomp-1.3.0-33 + +- Added 4 new fields to the X_NXGetControlParameters reply. + A dialog should be shown by agent if proxy was not able to + negotiate a persistent cache or if a cache was selected but + not loaded because incompatible or corrupted. + +- Fixed a bug on Solaris where socket() must be recreated if + the first connect() fails. Not a problem. The strange thing + is that if you reuse the socket(), the subsequent connect() + is successful and the program fails as soon as you try to + write to it. + +nxcomp-1.3.0-32 + +- Added request X_NXFreeUnpack to free the resources allocated + by the remote proxy to unpack images for the given agent's + client + +- Added an alert at X server side if proxies were not able to + negotiate a persistent cache or if a cache was selected but + not loaded at X server side (that means that probably cache + was not compatible or corrupted). The alert is not enabled + at the moment. Before enabling it, we need to find a way to + deal with full-screen mode. + +- Tuning of MIT-SHM parameters. + +nxcomp-1.3.0-31 + +- Modified the following requests to carry the id of the + agent's client: + + - X_NXSetUnpackGeometry + - X_NXSetUnpackColormap + - X_NXSetUnpackAlpha + - X_NXPutPackedImage + + Now each agent's client has its own record pointing to the + geometry, colormap and alpha channel that will be used to + unpack the image. Code is not finished yet so it is advisable + that agents' writers keep using client id 0. Note also that + the final solution will require some changes to the way split + notifications are sent to agent that I plan to implement in + the next versions. + +- The X_NXSetUnpackGeometry request has now a message store. + This should reduce the overhead to the minimum even in the + case of dumb agents not checking if the current geometry + matches the image to be unpacked. + +nxcomp-1.3.0-30 + +- Improved handling of short-circuited replies at X client + side. Request opcodes are now pushed in the sequence queue + to determine if a reply is expected. In this case tainting + of reply is skipped to preserve the sequence ordering of + any event or error that could have generated by the reply. + This seems to solve all the problems reported by people + running a NX session in virtual desktop mode nested in an + existing session being run in single application mode. + +- Modified the cleanup procedure to print the 'Waiting for' + message in the session log only at the time all X channels + have been actually shut down. This message can be used by + the NX server to find out the appropriate time to close + the session. + +- Added the selected session type to the 'Using pack method' + message printed at startup. + +- Added the option to close down the proxy link and perform + a clean shutdown of the session, re-read the whole session + configuration or restart the proxy link when a SIGHUP is + delivered to the proxy process. The default behaviour is + to close down the session. The new default (the old one was + to restart the link) is a required feature to let users run + full sessions using single application mode f.e. in a LTSP + environment. I noted that when the controlling terminal of + the X session is closed, a SIGHUP is delivered to the X + server side proxy (probably it is delivered to all the con- + nected clients, and, thus for NX, only to the proxy). This + signal can be used to terminate the whole session. + +nxcomp-1.3.0-29 + +- Changed defaults to disable image masks when running proxy + in single application mode. The new configuration requires + changes in NX server and in NX X11 library. Users should + experience much better image quality when using NX on slow + links. This comes at the cost of slightly worse compression + ratios. + +nxcomp-1.3.0-28 + +- Opcode of request was not rewritten by server channel when + using link LAN. This caused problems with taint of replies. + +nxcomp-1.3.0-27 + +- Modified the split store and the split procedures in client + channel to always return the client id in the notification + events. The new field is added to event at byte offset 28 + to preserve compatibility with previous agent releases. The + modification permits to agent to match the commit of alpha + channel with the original image, if requests are split by + proxy. + +- Temporarily set the timeout used to poll MIT-SHM completion + events coming from X server to 0. More testing is required. + +- Fixed an inconsistent message generated in statistics due to + a division by 0. + +nxcomp-1.3.0-26 + +- Modified pending timeout from 1 to 0 milliseconds. This means + that both channels and proxy are now immediately restarted to + let them consume all data left in their read buffer. + +- When querying the X server for MIT-SHM support, size of name + in X_QueryExtension request was sent as 32 bits instead of 16. + This caused request to fail on big endian architectures. + +- Modified the MIT-SHM initialization procedure to always send + all the 3 protocol requests also in the case of early failures. + +nxcomp-1.3.0-25 + +- Implemented handling of the new X_NXSetUnpackAlpha message. + Performances are very satisfactory. Using most of the current + GNOME and KDE applications, caching reaches 90% of the total + messages. + +- Modified the persistent cache management routines to handle + backward compatibility with proxy versions prior of 1.3.0. + +- It has been made possible to send both X_NXSetUnpackColormap + and X_NXSetUnpackAlpha messages with 0 entries to temporarily + disable use of the colormap or the alpha channel and free the + resources allocated by the server channel class. + +- Added function UnpackAlpha() to Unpack.cpp. + +nxcomp-1.3.0-24 + +- Using WriteBuffer::registerPointer() to track growing of the + write buffer in handleFastWrite() functions. This problem + existed even in 1.2.2 but never shown up because we didn't + have to use the pointer after data had been written to the + write buffer. Now, instead, we have to post-process the write + buffer to copy data to the shared segment. + +- Optimized memory allocations running with link LAN to save a + memcpy() any time new data is allocated in the scratch buffer. + +- When running with link LAN the scratch buffer is now used only + when: + + - A further allocation would case growing of the write buffer + (and, thus, a memcpy() of the previous content). + + - When data to added is bigger than the write threshold. + + In previous versions the scratch buffer was used any time the + total amount of data to be written (write buffer + scratch + buffer) exceeded the scheduled write threshold. This caused + small writes to be appended even when a single write could + be obtained without reallocating the buffer. + +- Preliminary support for transporting the alpha channel in a + separate message in case of 32 bits displays using the RENDER + extension. + +nxcomp-1.3.0-23 + +- Modified the mask used to open the shared memory segment on + OS/X to 0777. We have to better investigate why the previous + 0600 mask doesn't work even if the user running the proxy is + the same user running the X server. + +nxcomp-1.3.0-22 + +- Implemented MIT-SHM support on LAN connections. + +- More MIT-SHM bug fixes. + +nxcomp-1.3.0-21 + +- Better use of the shared segment through an improved + algorithm leveraging the offset field of the X_ShmPutImage + request. The new algorithm greatly reduces the amount of + polls the proxy needs to perform to find if the completion + event has arrived. + +- Implemented MIT-SHM support for X_PutImage requests. + +- Implemented option shmem=value. Use of this option is anyway + discouraged. Proxy will allocate the shared memory segment + based on the size of the in-memory cache set by the user. + Use of MIT-SHM is disabled when user did set a memory cache + smaller than 2MB (for example on the embedded client). + +- Rewritten post-processing of images in server channel loop. + +- Improved error handling to ensure we intercept all MIT-SHM + X errors before they reach the NX agent. + +- Solved a problem that was causing channels to not reflect + shared memory support flags set in control. + +nxcomp-1.3.0-20 + +- Solved a compatibility problem when mixing proxy versions + 1.2.2 and 1.3.0. + +nxcomp-1.3.0-18 + +- Rewritten interfaces to shared memory initialization in + client and server channel. + +- Server channel checks for the completion event until a + timeout before reusing the shared memory segment. + +- Flush flag was not cleared after the write buffer had been + flushed in handleWrite() of both client and server channels. + This could lead to multiple fragmented writes, affecting + the performances. + +- Added -lcygipc to linking on Windows platform. + +- Added a check on GCC version to see if -Wnested-externs + -Wmissing-declarations are valid options. + +nxcomp-1.3.0-17 + +- Implemented initial support for MIT-SHM extension in the + network path between the X server proxy and the real X + server. Presently it works only for X_NXPutPackedImages. + +- Modified configure.in to compile under FreeBSD. + +- Small changes to sources due to FreeBSD support. + +nxcomp-1.3.0-16 + +- Fixed caching of RENDER extension on MacOS/X and Solaris. + +- Under Solaris an explicit call to EnableSignal() is needed + at the end of the signal handler as raising a signal seems + to reset the previous settings. + +- Can't find a way to get bytes queued for write on Solaris as + both FIONWRITE and TIOCOUTQ don't seem to be available. This + means that NX server on Solaris is only able to detect con- + gestions on proxy link at the time a write fails with error + EAGAIN. + +- Starting from this version, render extension messages are not + automatically discarded from cache when running agent based X + sessions. This is in preparation of render support introduced + in this release. + +nxcomp-1.3.0-15 + +- Changed default to force writes if X channels exceed buffer + limits. This change was suggested by benchmarks performed on + Win32. + +- Wrapped IO on cache files in functions performing better error + checking. + +- General cleanup in handling of socket options for MacOS/X and + Solaris. + +nxcomp-1.3.0-14 + +- Corrupted persistent caches were not deleted in case loading + of any of the message stores failed. To run further sessions + on the same host, user had to delete the cache file manually. + +- Improved error handling in JPEG decompression. Now connection + is reset in case of failure. + +- Before performing JPEG or PNG decompression, image is better + checked to verify if loading from disk failed. + +- Improved error handling in case of failure loading persistent + cache from disk. On MacOS/X istream -> fail() doesn't seem to + work properly. This needs further investigation. + +- The default installation path of nxclient is searched under + MacOS/X at the time nxclient is invoked in dialog mode. + +nxcomp-1.3.0-13 + +- Fixed a (further) compilation problem under Solaris. Now static + libraries are first searched under /usr/sfw/lib (in case Sun + would decide to include them in future releases). + +nxcomp-1.3.0-12 + +- Fixed parsing of command line when passing option -V. + +- Correctly detected ENOPROTOOPT when setting TCP_NODELAY socket + option on MacOS/X and Solaris. + +nxcomp-1.3.0-11 + +- Given option in configure to specify what needs to be built + statically: + + --with-static-png enable static linking of PNG library + --with-static-jpeg enable static linking of JPEG library + --with-static-z enable static linking of Z library + +nxcomp-1.3.0-10 + +- Fixed a problem in saving of persistent cache on big-endian + machines. + +nxcomp-1.3.0-9 + +- Testing with different settings to check if it's possible to + increase the performances under Windows. + +- Solved a problem in parsing of options that prevented proxy + to connect to a remote session running at port offset 0. + +- Fixed two warnings compiling on Solaris. + +- Changed configure.in to first check for nx-X11 includes + and libraries. Added "/usr/openwin/bin/makedepend" to path + searched for the executable. + +nxcomp-1.3.0-8 + +- Small cleanup in configure.in and files modified by Gregorz + Kryza to add support for Solaris. + +- A new configure script has been generated using autoconf-2.57-3. + +nxcomp-1.3.0-7 + +- Added support for detection of Solaris in configure script. + Now Makefile.in uses ranlib instead of ar. + +- Small changes in source and header files to support Solaris. + +nxcomp-1.3.0-4 + +- Corrected a bug that could cause priority on proxy and channels + to be not taken in account at the time proxy tries to determine + if it's time to flush the proxy link. + +- Better implementation of abort split notification by X server + proxy to its remote peer. The new implementation doesn't + need to set a timeout and permits notifications to be received + earlier. + +- Improved support for 'tainting' XSync() messages coming from + X clients in single application mode. Now a X_GetInputFocus + is sent to the real X server any n such messages received by + proxy. + +- Included support for 15 bpp displays. It seems that handling + them as 16 bpp it's OK. diff --git a/doc/_attic_/NoMachine_documentation_files/nxcomp_README b/doc/_attic_/NoMachine_documentation_files/nxcomp_README new file mode 100644 index 000000000..f35cce6b5 --- /dev/null +++ b/doc/_attic_/NoMachine_documentation_files/nxcomp_README @@ -0,0 +1,21 @@ +README +------ + +Building +-------- + +1. To compile: + + > tar zxvf nxcomp-X.Y.Z-N.tar.gz + > cd nxcomp + > ./configure + > make + + You'll have to run gmake under Solaris. + +2. The 'make install' target is not currently supported + in the Makefile, but it should be simple to fix. + +You need at least nxproxy and nxagent packages to enjoy this code. Check the +NoMachine website at http://www.nomachine.com to get the latest release. + diff --git a/doc/_attic_/NoMachine_documentation_files/nxcomp_README-IPAQ b/doc/_attic_/NoMachine_documentation_files/nxcomp_README-IPAQ new file mode 100644 index 000000000..f9418635c --- /dev/null +++ b/doc/_attic_/NoMachine_documentation_files/nxcomp_README-IPAQ @@ -0,0 +1,21 @@ +README-IPAQ +----------- + +1. Install a cross-compiler for ARM. You can find detailed + informations at: + + http://www.ailis.de/~k/knowledge/crosscompiling/toolchain.php + + There are also binaries needed to install the cross-compiler. + +2. Configure and compile libXcomp using: + + $ ./configure --with-ipaq + $ make + + After compilation type: + + $ arm-linux-strip libXcomp.* + +3. Remember that you also need nxproxy to actually run your NX X + session. diff --git a/doc/_attic_/NoMachine_documentation_files/nxcompext_CHANGELOG b/doc/_attic_/NoMachine_documentation_files/nxcompext_CHANGELOG new file mode 100644 index 000000000..941e9b411 --- /dev/null +++ b/doc/_attic_/NoMachine_documentation_files/nxcompext_CHANGELOG @@ -0,0 +1,806 @@ +ChangeLog: + +nxcompext-3.5.0-1 + +- Opened the 3.5.0 branch based on nxcompext-3.4.0-1. + +- Updated copyright to year 2011. + +nxcompext-3.4.0-1 + +- Opened the 3.4.0 branch based on nxcompext-3.3.0-4. + +- Updated version number. + +- Updated copyright to year 2009. + +nxcompext-3.3.0-4 + +- Fixed TR03G02199. The color palette allocated for encoding an image + having 256 colors or less was not freed. + +nxcompext-3.3.0-3 + +- Now setting the correct event serial number when sending collect + notifies back. + +nxcompext-3.3.0-2 + +- Updated VERSION. + +nxcompext-3.3.0-1 + +- Opened the 3.3.0 branch based on nxcompext-3.2.0-1. + +nxcompext-3.2.0-1 + +- Opened the 3.2.0 branch based on nxcompext-3.1.0-2. + +nxcompext-3.1.0-2 + +- Updated file VERSION to match the current release version. + +nxcompext-3.1.0-1 + +- Opened the 3.1.0 branch based on nxcompext-3.0.0-18. + +nxcompext-3.0.0-18 + +- Removed the remaining debug output. + +nxcompext-3.0.0-17 + +- Changed the copyright notices at the beginning of the files that + were referring to NXPROXY to refer to NXCOMPEXT. + +nxcompext-3.0.0-16 + +- Handle the reply failure in NXGetShmemParameters(). + +nxcompext-3.0.0-15 + +- Separated the functionalities made available by NXQueryDisplay() + in three distinct functions: + + NXDisplayReadable() Query the number of bytes readable from + the display connection. + + NXDisplayFlushable() Query the number of the outstanding bytes + to flush to the display connection. + + NXDisplayCongestion() Return a value between 0 and 9 indicating + the congestion level of the NX transport. + +- Renamed NXQueryDisplayError() to NXDisplayError(). + +nxcompext-3.0.0-14 + +- Removed support for Rdp, Tight and Hextile packed images encod- + ing since they have been made obsolete by the new NX server. + +- Changed the copyright attribution from Medialogic to NoMachine. + +nxcompext-3.0.0-13 + +- Allocate 1024 additional bytes for the Jpeg compression, instead + of 512, to avoid failures on very tiny images. + +- Removed support for the special *PNG_JPEG* pack method. + +nxcompext-3.0.0-12 + +- Implemented the NXEncodeBitmap() method. This is a very simple + encoder removing the 4th byte in 32 bits-per-plane images. For + the other pixmap depths it simply returns a pointer to the orig- + inal image data, saving the copy. This encoding is intended to + better leverage the stream compression on low bandwidth links. + +- Removed the quality parameter from the RGB/RLE encoding function. + +nxcompext-3.0.0-11 + +- Removed the additional parameter in the call to NXTransFlush(). + +nxcompext-3.0.0-10 + +- Moved the _NXRDPGlyph and _NXRDPText declarations from NXlib.h + to NXproto.h to force fields to be CARD32. + +- Fixed a typo in NXSetDisplayBuffer() that could cause a double + free. + +- Fixed a compilation error with old GCC versions. + +- Removed the warning issued on AMD64 when compiling with the logs + enabled. + +nxcompext-3.0.0-9 + +- Added the NXDisplayCongestion query type to NXQueryDisplay(). It + returns a value between 0 and 9, with 9 meaning that the link is + congested and no further data can be sent. + +- Added the NXSetDisplayBuffer() function. It allows the caller to + set the display output buffer size at runtime. + +- Removed the congestion and synchronization callbacks. + +nxcompext-3.0.0-8 + +- Removed the warnings issued when purging the collected data at + display reset. + +nxcompext-3.0.0-7 + +- Added the NXSetDisplayWriteHandler() interface. The function + registers a callback that will be invoked every time more data + is written to the display socket. + +nxcompext-3.0.0-6 + +- Made NXQueryDisplay() take into account the bytes in the display + buffer when queried for the bytes flushable. + +nxcompext-3.0.0-5 + +- Added file COPYING. + +nxcompext-3.0.0-4 + +- Updated copyright notices to the current year. + +nxcompext-3.0.0-3 + +- Imported changes up to nxcompext-2.1.0-4. + +- Fixed TR12D01564. Changed configure script to build library with + -fPIC option. + +- Added 256 byte to the size of Jpeg destination buffer. + +nxcompext-3.0.0-2 + +- Updated the file VERSION. + +nxcompext-3.0.0-1 + +- Opened the 3.0.0 branch based on nxcompext-2.0.0-33. + +nxcompext-2.0.0-33 + +- Placed the inclusion of jpeglib.h after the X includes to fix a + possible compilation error. + +nxcompext-2.0.0-32 + +- Avoid to copy the data to the scratch buffer and yield the task + of padding the output to _XSend() in the NXPutPackedImage(), NX- + SetUnpackAlpha() and NXSetUnpackColormap() requests. + +- Added support for the RLE pack method. + +nxcompext-2.0.0-31 + +- The X_NXSetUnpackColormap and X_NXSetUnpackAlpha now carry their + data in compressed form. The alpha data is compressed using the + ZLIB RLE encoding, while the colormap data is compressed using + the default ZLIB deflate. + +- Created new message structures to handle the compatibility with + the old proxy versions. When connected to an old proxy version + the agent should use the NXSetUnpackColormapCompat() and NXSet- + UnpackAlpha() interfaces. + +nxcompext-2.0.0-30 + +- Removed the unfriendly warning printed if a client tried to reset + the library multiple times. + +nxcompext-2.0.0-29 + +- Made possible to compile even if makedepend is not found. + +nxcompext-2.0.0-28 + +- Added the NXSetDisplaySynchronizationHandler() interface. The NX + transport will use the callback to report when the agent can use + the available bandwidth to synchronize the X objects that are + corrupted or incomplete. + +- Bytes from 14 to 24 in the NXGetControlParameters() reply report, + respectively, the frame timeout, the ping timeout, the preferred + image split mode and the split size threshold. + +nxcompext-2.0.0-27 + +- Changed the image cleanup functions and the Png and Jpeg encoders + to be independent from the host endianess. + +- Enabled again the image cleanup on big endian machines. + +nxcompext-2.0.0-26 + +- Added the NXAbortSplit() request. + +- Added information about the size of the shared memory segment used + by the remote proxy in the NXGetShmemParameters() reply. + +nxcompext-2.0.0-25 + +- Renamed the NXGetSplitResource() and NXGetUnpackResource() utili- + ties to NXAllocSplit() and NXAllocUnpack(). They can be called + with a NXAnyResource parameter to get the first available id or + requre a specific resource. From this version the resource must + be explicitly reserved. NXFreeUnpack() and NXFreeSplit() check + if the resource was allocated and don't do anything if it is not + the case. NXAllocSplit() and NXAllocUnpack() return NXNoResource + if the resource can't be reserved. + +nxcompext-2.0.0-24 + +- NXFlushDisplay() now verifies whether the XlibDisplayWriting flag + is set before flushing the display buffer. in this case, it only + flushes the NX link. + +nxcompext-2.0.0-23 + +- Implemented a move-to-front strategy for the image cache, to mi- + nimize the number of lookups. + +- Fixed the problems imtroduced by the new cache implementation by + modifying the memory allocation routines in Jpeg.c and Pgn.c. + +- Temporarily fixed the cleanup problems on big-endian machines by + skipping the operation. + +- Added a NXSetDisplayStatisticsHandler() to let the agent include + arbitrary data in the transport statistics. The parameter is a + pointer to a pointer to a null terminated string. The pointer is + set at the time the handler is registered. The pointed string can + be filled by the agent with its statistics data. + +nxcompext-2.0.0-22 + +- The NXCacheFindImage() returns a pointer to the checksum, if the + image is found. + +- The image cache uses the data passed to NXCacheAddImage() instead + of making a copy. + +- The Z stream used by the RGB encoder is allocated at initializat- + ion and freed at reset. + +nxcompext-2.0.0-21 + +- Removed the reliance on the local byte order in the image cleanup + functions. + +nxcompext-2.0.0-20 + +- Added the NXFinishSplit() request. It forces the proxy to comple- + tely transfer all the split messages for the given resource, and + then notify the agent. + +nxcompext-2.0.0-19 + +- Enabled again the cleanup of images. + +- Updated to comply with the new NXTransFlush() interface. + +nxcompext-2.0.0-18 + +- Moved all the declarations in Rgb.c at the beginning of the block + to avoid the possible compilation errors with old compilers. + +nxcompext-2.0.0-17 + +- Added a new RGB image encoder. For now the encoder uses a static + Z stream to compress the image data in the destination buffer and + allows the agent to use the simplest encoding by still separating + the alpha channel from the image data. The new encoder can be the + the base for implementing color reduction by dithering or a color- + mapped translation of the image similar to PNG, but without the + PNG overhead and with the colormap being sent to the client using + the NXSetUnpackColormap() opcode. + +- Created a new NXCleanImage() function that takes a XImage pointer + and uses either the CleanXYImage() or the CleanZImage() routines + to cleanup the padding bits. + +nxcompext-2.0.0-16 + +- Added a parameter to NXFlushDisplay() to specify what needs to be + flushed. The parameter can be one the following values, defined + in NXvars.h: + + NXFlushBuffer Only the Xlib buffer is to be flushed. + + NXFlushLink Flush both the Xlib buffer and any pending + data encoded by the NX transport. + + NXFlushIdle Inform the NX transport that the agent is + idle. This will let the NX transport encode + more low-priority data, and then flush the + link. + +- Ensured that the padding bytes are cleaned when creating a new + PNG image. It seems that some images are still missed. This is + to be investigated. + +nxcompext-2.0.0-15 + +- Ensured that the packed image cache is recreated only on a size + change. + +nxcompext-2.0.0-14 + +- Updated to get the karma delay field from the X_NXGetControlPara- + meters reply. + +nxcompext-2.0.0-13 + +- Added the NXSetDisplayPolicy() and NXSetDisplayFlushHandler() in- + terfaces. The second function registers a callback that will be + invoked by the NX transport when the number of bytes encoded by + the proxy exceeds the threshold set for the scheduled write. + +- Added the NXFlushDisplay() and NXQueryDisplay() interfaces. They + are used to hide the corresponding NX transport functions to the + application. NXQueryDisplay() can be called with the NXDisplay- + Flushable or NXDisplayReadable parameters, to get, repectively, + the number of bytes that are queued to the NX transport and the + number of bytes that is possible to read. + +- Included the remote proxy version in the NXGetControlParameter() + reply. + +nxcompext-2.0.0-12 + +- Added the NXGetSplitResource() and NXGetUnpackResource utilities. + These can be used by the client to find out the first unused id + available for a split or unpack operation. + +- Added the NXFreeSplit() request function. It makes the resource + available for the next operation and tells the proxy to destroy + all the storage associated to the split. + +- Renamed the NXNumberOfConnections constant to NXNumberOfResources. + +nxcompext-2.0.0-11 + +- Changed NXForceDisplayError() to also shut down the NX transport + by calling NXTransClose(). + +- Updated to comply with the new NX function prototypes introduced + in nxcomp-2.0.0-31. + +nxcompext-2.0.0-10 + +- NXQueryDisplayError() now checks the predicate function only if + the I/O error was not encountered already. + +nxcompext-2.0.0-9 + +- Added the NXSetDisplayErrorPredicate(), NXSetDisplayBlockHand- + ler(), NXSetDisplayCongestionHandler(), NXSetLostSequenceHand- + ler() interfaces to let the user set the values used internal- + ly. All functions return the previous handler. See ChangeLog + in nx-X11-2.0.0-16 and nx-X11-2.0.0-17. + +- Moved all the internal variables shared between Xlib, nxcompext + and the X server in nxcomp. Declarations and function prototypes + moved to NXvars.h. + +- Some name changes. In particular the NXContinueOnDisplayError() + function iss renamed NXHandleDisplayError() and NXDisplayError() + is now renamed NXQueryDisplayError(). To verify if the display + is valid, NXQueryDisplayError() will now call the _NXDisplayEr- + rorPredicate function, or, if the predicate function is not set, + will simply check the value of the XlibDisplayIOError flag. + +- Removed the NXGetCleanupParameters() and NXGetImageParameters() + interfaces and the remaining references to the unused display + buffer and image cleanup functions. + +- Updated the NoMachine copyright notice to year 2006. + +nxcompext-2.0.0-8 + +- Removed the unused screen parameter from XSetUnpackGeometry(). + +- NXSetUnpackGeometry() now fails if no visual is provided. + +nxcompext-2.0.0-7 + +- Changed the LICENSE file to state that the software is only made + available under the version 2 of the GPL. + +- Removed the misplaced DXPC copyright notices from the license. + They were copied from NXCOMP but they don't apply in any way to + NXCOMPEXT. + +nxcompext-2.0.0-6 + +- Added the NXSetCacheParameters() request. It tells to the local + proxy how to handle the X requests, namely if the next requests + have to be stored in the memory cache, split in smal data chunks, + and in the case of images, saved on disk in the persistent image + cache. The request will affect all X messages, including plain + and packed images. It can be used to tell the proxy to discard + images coming from some selected operations, like GLX or XVideo. + +nxcompext-2.0.0-5 + +- Added the NXGetFontParameters() request and reply. If the proxy + has been configured accordingly, the request returns the X font + path that can be set by the agent to tunnel the font server con- + nections through the NX link. + +nxcompext-2.0.0-4 + +- Initial work on font server tunneling. + +nxcompext-2.0.0-3 + +- Renamed the NXSetExposeEvents request to NXSetExposeParameters. + +nxcompext-2.0.0-2 + +- Modified the configure and the makefiles to support the Cygwin + environment. + +- Renamed Png.h to Pgn.h to avoid name clashes on Windows. + +- The distclean target now removes the autom4te.cache directory. + +nxcompext-2.0.0-1 + +- Opened the 2.0.0 branch based on nxcompext-1.5.0-20. + +nxcompext-1.5.0-20 + +- Removed the code installing a SIGSEGV handler before trying to + clean an image in NXCleanImageInPlace(). + +nxcompext-1.5.0-19 + +- Added the NXUnsetLibraryPath() function to specify the behaviour + of the Popen() in the X server. If the _NXUnsetLibraryPath flag + is set, the Popen() will remove the LD_LIBRARY_PATH variable from + the environment before running the child process. This will cause + the X server to run the process (for example the keyboard initia- + lization utilities) by using the native system libraries, instead + of the libraries shipped with the NX environment. + +nxcompext-1.5.0-18 + +- Moved the declarations of _NXEnable* and related structures from + Xlibint.h to NXlibint.h. + +- Use the include files from nx-X11 if the nx-X11/include directory + is found. The previous configure checked the presence of nx-X11/ + exports/include, that might not be built at the time this library + is compiled. + +nxcompext-1.5.0-17 + +- Added the -fPIC GCC flag when compiling on AMD64 architectures. + +- Removed all warnings when compiling with GCC4. + +- Small changes to configure.in to have specific CFLAGS. + +- Created a new configure using autoconf 2.59. + +nxcompext-1.5.0-16 + +- Added the 'mode' field in the NXStartSplit() request. It determi- + nes the strategy that the proxy will adopt to handle the image. + If set to 'eager', the proxy will only split the messages whose + size exceeds the split threshold (the threshold can be found in + the NXGetControlParameters() reply). If mode is set to lazy, the + proxy will split any image that it is not able to find in its + cache. + + The opcode and the two available modes are defined in NXproto.h, + currently: + + #define NXSplitModeDefault 0 + #define NXSplitModeEager 1 + #define NXSplitModeLazy 2 + +- All requests related to image streaming now carry a 'resource' id. + The id is currently ignored by the proxy in the case of NXCommit- + Split() requests. + +nxcompext-1.5.0-15 + +- Removed the NXSync() and NXKarma() operations, not used anymore + by the NX agents. + +- Updated to comply with changes occurred in the numbering of the + notification events and in the interface to the image streaming + functions. + +nxcompext-1.5.0-14 + +- Accounted for the missing xoffset field in clean-up of XYPixmaps. + +nxcompext-1.5.0-13 + +- Added a 'commit' field in NXCommitSplit(). When zero, the remote + proxy will remove the message from the split store, without send- + ing the recomposed image to the X server. + +nxcompext-1.5.0-12 + +- Added the NXContinueOnDisplayError() function to specify the be- + haviour of the Xlib I/O error handler. If the flag is set to true, + Xlib will simply return, instead of quitting the program. This + leaves to the application the responsibility of checking the sta- + te of the XlibDisplayIOError flag. + +- Changed NXDisplayIsValid() to NXDisplayError() and inverted the + logic. Now the function returns true if the display pointer is + NULL or the XlibDisplayIOError flag is set. + +- Added the NXForceDisplayError() function, to shutdown the display + descriptor and force Xlib to set the I/O error flag. + +nxcompext-1.5.0-11 + +- Added -I../nx-X11/exports/include to CCINCLUDES in Makefile.in. + +nxcompext-1.5.0-10 + +- Added FindLSB() to replace ffs() that may be not present on some + systems. + +- Some cosmetic changes. + +nxcompext-1.5.0-9 + +- Fixed a printf() that prevented the code to compile if TEST was + enabled. + +nxcompext-1.5.0-8 + +- Implemented the NXLib interface for asynchronous handling of the + XGetInputFocus requests and replies. + +nxcompext-1.5.0-7 + +- Removed the _NXFlushSize parameter. New agents run the NX trans- + port in-process, so we don't get any benefit from increasing the + display buffer size. + +nxcompext-1.5.0-6 + +- Added a NXDisplayIsValid() to check that the display is not NULL + and that the descriptor was not shut down after an IOError. The + reason a function is needed for this is that the flags field is + only in Xlibint and it is not visible to Xlib applications. + +nxcompext-1.5.0-5 + +- Added the NXGetCollect*Resource utility functions, returning the + first available small integer resource id that can be used in a + subsequent collect request. + +nxcompext-1.5.0-4 + +- Added the NXNumberOfConnections constant. + +nxcompext-1.5.0-3 + +- Implemented the NXLib interface for the asynchronous handling of + the XGrabPointer requests and replies. + +- Solved an error in image cleaning that prevented the 8 bits-per- + pixel images to be completely cleaned. Due to the bug, only half + of the total lines were cleaned. + +- Removed a bug that prevented the cleaning of XYPixmaps images of + bitmap unit 32 and byte order LSB. + +- Renamed the NXImageCache variables to show they are global. They + are currently used in the nxagent code. + +nxcompext-1.5.0-2 + +- Changed VERSION file. + +nxcompext-1.5.0-1 + +- Opened the 1.5.0 branch. + +nxcompext-1.4.1-1 + +- Removed the configure option --with-static. There are two options + now, --with-static-png and --with-static-jpeg, to offer a greater + degree of control on the resulting library. + +- This version differs from the 1.4.0-3-KRY1 in the way that the con- + figure script is generated by GNU Autoconf 2.57, the same version + used for nxcomp. + +- Opened the 1.4.1 branch. + +nxcompext-1.4.0-3 + +- Updated the VERSION file to reflect the 1.4.0 status. + +nxcompext-1.4.0-2 + +- Imported changes from the latest 1.3.2 development branch. + +- The 1.4.0 branch already had a 1.4.0-1 version. The changes from + the 1.4.0-1 were up to date with the 1.3.2-2 version. + +nxcompext-1.3.2-6 + +- Fixed problem with icons in KDE and Mozilla on SPARC Solaris. The + problem was related to cleaning of one-bit XYPixmaps on big-endian + hosts, where shift of the cleaning mask executed in the wrong di- + rection. + +nxcompext-1.3.2-5 + +- Changes in Clean.c to compile on Solaris. + +nxcompext-1.3.2-4 + +- Fixed a bug in clean image procedures for 1bit XYPixmaps. The bug + caused Mozilla to trash some transparent icons in web pages and + the toolbar. + +- Added cleaning of the padding bytes at the end of the data chunk + inside XImage structure + +- Implemented handling of SIGSEGV during cleanup in case of static + data. + +- Moved image cleanup and masking code in new Clean.c and Mask.c + sources. + +- Corrected few typos in NXCollectImage code. + +nxcompext-1.3.2-2 + +- Imported 1.4.0-1 changes from the 1.4.0 development branch. + +- Modified NXAllocColors to handle errors generated allocating + each requested color. A per-color result code is now returned + to the caller. + +- Code cleanup in Png.h and Png.c. + +nxcompext-1.3.2-1 + +- Opened the 1.3.2 branch. + +nxcompext-1.3.1-2 + +- Removed the underline characters and added a colon in the + title of this ChangeLog to fully comply with format used in + the release notices. + +nxcompext-1.3.1-1 + +- Opened the 1.3.1 branch. + +nxcompext-1.3.0-18 + +- Added the _NXLostSequenceHandler function to let NX agents + suppress the error message and modify the default Xlib + behaviour when out-of-order sequence numbers are received. + Pointer to function is assigned to _NXLostSequenceFunction + in XlibInt.c. + +- Original output buffer size in stock XFree86 is 2048. We try + to reduce context switches and help stream compression by + increasing the maximum size of the buffer 8192. _NXFlushSize + determines when the display buffer is actually flushed. It is + set by default to 4096 in XlibInt.c and set to 0 to use the + maximum available size at the time NXGetControlParameters() + is called. + +nxcompext-1.3.0-17 + +- In handling of asynchronous GetProperty replies a warning + message was printed in session log when a null property was + stored in the state structure. This message is now printed + only if TEST is defined. + +nxcompext-1.3.0-16 + +- Added asynchronous handling of GetProperty request and reply + by means of the NXCollectProperty and NXGetCollectedProperty + requests and the NXCollectPropertyNotify event. + +nxcompext-1.3.0-15 + +- Added 4 new fields to the X_NXGetControlParameters reply. + +nxcompext-1.3.0-14 + +- Added request X_NXFreeUnpack to free the resources allocated + by the remote proxy to unpack images for the given agent's + client + +nxcompext-1.3.0-13 + +- Modified the following requests to carry the id of the + agent's client in the field resource: + + - X_NXSetUnpackGeometry + - X_NXSetUnpackColormap + - X_NXSetUnpackAlpha + - X_NXPutPackedImage + +nxcompext-1.3.0-11 + +- Modified the MIT-SHM initialization procedure to always send + all the 3 protocol requests also in the case of early failures. + +nxcompext-1.3.0-10 + +- Added handling of X_NXSetUnpackAlpha request. + +- It has been made possible to send both X_NXSetUnpackColormap + and X_NXSetUnpackAlpha messages with 0 entries to temporarily + disable use of the colormap or the alpha channel and free the + resources allocated by the remote proxy. + +nxcompext-1.3.0-9 + +- Solved a compatibility problem when mixing proxy versions + 1.2.2 and 1.3.0 due to the missing X_NXGetShmemParameters + request. + +nxcompext-1.3.0-7 + +- Reduced the number of requests needed to setup the shared + segment at X server proxy from 4 to 3. + +- Small changes to the shared memory interface to support + path X agent to X client proxy. + +nxcompext-1.3.0-6 + +- Implemented initial support for MIT-SHM extension in the + network path between the X server proxy and the real X + server. + +- Configure script now checks for the FreeBSD environment. + +- New configure script generated using autoconf-2.57-3. + +- Removed the XFree86 CCDEFINES from Makefile.in. + +nxcompext-1.3.0-5 + +- Cosmetic changes. + +- Started to convert configure.in to the new layout adopted + for nxcomp. + +- Created file CHANGELOG. + +nxcompext-1.3.0-4 + +- More fixes in image clean-up. + +nxcompext-1.3.0-3 + +- Many fixes in image clean-up functions to handle differences + in endianess between client and X server. + +nxcompext-1.3.0-2 + +- Modified configure.in to compile under Solaris. + +nxcompext-1.3.0-1 + +- First 1.3.0 version based on nxcompext-1.2.2-12. + diff --git a/doc/_attic_/NoMachine_documentation_files/nxcompext_README b/doc/_attic_/NoMachine_documentation_files/nxcompext_README new file mode 100644 index 000000000..39648e76b --- /dev/null +++ b/doc/_attic_/NoMachine_documentation_files/nxcompext_README @@ -0,0 +1,15 @@ +README +------ + +1. To compile: + + > tar zxvf nxcompext-X.Y.Z-N.tar.gz + > cd nxcompext + > ./configure + > make + + You'll have to run gmake under Solaris. + +2. The 'make install' target is not currently supported + in the Makefile, but it should be simple to fix. + diff --git a/doc/_attic_/NoMachine_documentation_files/nxcompshad_CHANGELOG b/doc/_attic_/NoMachine_documentation_files/nxcompshad_CHANGELOG new file mode 100644 index 000000000..3472a4afe --- /dev/null +++ b/doc/_attic_/NoMachine_documentation_files/nxcompshad_CHANGELOG @@ -0,0 +1,404 @@ +ChangeLog: + +nxcompshad-3.5.0-2 + +- Fixed TR03G02189. Now key combinations involving the Shift keys + are recognized correctly. + +nxcompshad-3.5.0-1 + +- Opened the 3.5.0 branch based on nxcompshad-3.4.0-3. + +- Updated copyright to year 2011. + +nxcompshad-3.4.0-3 + +- Updated copyright to year 2010. + +nxcompshad-3.4.0-2 + +- Fixed TR08G02256. Now the Shadow session is shown correctly with + MIT-SHM extension disabled. + +- Improved updateShadowFrameBuffer() and ~Poller() functions. + +- Avoided memory leak. + +nxcompshad-3.4.0-1 + +- Opened the 3.4.0 branch based on nxcompshad-3.3.0-3. + +- Updated version number. + +- Updated copyright to year 2009. + +- Improved error messages logging in case of initialization failures. + +nxcompshad-3.3.0-3 + +- Fixed TR01G02158. Keymap initialization could be incorrect because + of a type mismatch on 64 bit platforms. + +nxcompshad-3.3.0-2 + +- Updated VERSION. + +nxcompshad-3.3.0-1 + +- Opened the 3.3.0 branch based on nxcompshad-3.2.0-3. + +nxcompshad-3.2.0-3 + +- Improved keycode translation. + +nxcompshad-3.2.0-2 + +- Solved a problem when sending fake modifier events. + +- Added support for keyboard events handling for the web player. + +- Changed keycodes translation for Solaris keyboard. + +- Corrected a problem for keycodes translation from Solaris keyboard. + +- Fixed TR02F02001. In shadow session the shadower's keyboard layout + could be wrong. Now keycodes are correctly translated if master and + shadow keyboards have different layouts. + +- Added NXShadowGetScreenSize() and NXShadowSetScreenSize() functions, + so that the shadow session can handle correctly the resize of the + master session window. + +- Solved a compilation problem on GCC 4.3. + +nxcompshad-3.2.0-1 + +- Opened the 3.2.0 branch based on nxcompshad-3.1.0-2. + +nxcompshad-3.1.0-2 + +- Updated file VERSION to match the current release version. + +nxcompshad-3.1.0-1 + +- Opened the 3.1.0 branch based on nxcompshad-3.0.0-19. + +nxcompshad-3.0.0-19 + +- Skip initialization of damage extension if it was already disabled. + +nxcompshad-3.0.0-18 + +- The poller destructor checks if the damage extension is in use. + +- Small changes to the function getting the screen content in the case + damage is not in use. + +nxcompshad-3.0.0-17 + +- Cleanup of some log messages. + +nxcompshad-3.0.0-16 + +- Disabled some log message in the functions initializing the poller. + +nxcompshad-3.0.0-15 + +- Before calling XTest functions, it is checked if the connection to + master X server has been initialized. + +nxcompshad-3.0.0-14 + +- After the shm segment is created, its mode is changed and it is + marked for destroying. A check on the number of attaches is done. + +nxcompshad-3.0.0-13 + +- Creating the shm segment even if the uid of master X server can't be + retrieved. + +- Fixed reallocation of update region. + +- Checking if the master X server provides XTest extension. + +nxcompshad-3.0.0-12 + +- Fixed a compiler warning on AMD64 platform. + +- Changed configure script to add -fPIC option. + +- Fixed a mismatch in UpdateManager destructor. + +nxcompshad-3.0.0-11 + +- Fixed the function setting the uid of shm segment. + +- Sync with the master X server before marking the shm segment to be + destroyed. + +nxcompshad-3.0.0-10 + +- Setting the shm segments as readable only by the master X server + process. + +- Mark shm segments to be destroyed when the last process detach. + +- Enabled keycode translation in order to allow keyboards of different + models to work. + +nxcompshad-3.0.0-9 + +- Changed the LICENSE file to state that the software is only made + available under the version 2 of the GPL. + +- Added file COPYING. + +- Changes to translate keycodes between different keyboard types. The + keycodes are translated through the keysym. + +- Changes to convert a Mode_switch key to ISO_Level3_Shift if it is + needed. + +nxcompshad-3.0.0-8 + +- Added interface function NXShadowDisableShm disabling the use of + MIT-SHM extension. + +- Added interface function NXShadowDisableDamage disabling the use of + DAMAGE extension. + +- Added interface function NXShadowSetDisplayUid setting the uid of + shadowed X server + +- Changed the owner of shared memory segments to the uid of the sha- + dowed X server. + +- Fixed logWarning method. + +- Moved the code initializing the use of shared memory to shmInit + method of X11 Poller. + +nxcompshad-3.0.0-7 + +- Removed the class qualifier in the declaration of destroyUpdate- + ManagerRegion(). + +nxcompshad-3.0.0-6 + +- Fixed build errors on 64 bit platforms. + +- Called XTestGrabControl to override possible grabs of the X server. + +nxcompshad-3.0.0-5 + +- Added some stub members to the Poller class. These are intended to + handle keyboard state. + +- Changes in the default polling algorithm to disable the line pri- + ority persistence. + +nxcompshad-3.0.0-4 + +- If a low layer handling of screen changes is available (DAMAGE in + case of X11), polling routine uses it and returns immediately. + +- Creating a Damage notify object if the extension is supported. + +- DamageNotify events are saved in the update region. After all avail- + able events have been handled, the content of screen is retrieved + by ShnGetImage requests. + +- XDamageSubtract and XSync are done before any event handling. + +- Damages are requested as raw rectangles. + +- Added Xdamage and Xrandr to required libraries. + +- Fixed a problem with some lines not refreshed in shadowing mode. + +nxcompshad-3.0.0-3 + +- Added destroyUpdateManagerRegion() method to UpdateManager class. + +- Turned off some log messages. + +- Changed configure.in to remove warnings related to deprecated header + files and options. + +- Changed Makefile.in to remove autom4te.cache dir if the target is + 'distclean'. + +- Removed multi-word file names. + +nxcompshad-3.0.0-2 + +- Changes to get the screen of original display by a ShmGetImage. + +- Exit the polling loop if more than 50 ms have elapsed. + +nxcompshad-3.0.0-1 + +- Created nxcompshad based on nxshadow-3.0.0-7. + +nxshadow-3.0.0-7 + +- Deleted files KeyCursorTmp.cpp, scancodes.h, constant.h. + +- Renamed NXshadow.h to Shadow.h. + +- Merged NXshadowEvent.h with Shadow.h. + +- Fixed configure.in, changed Makefile.in to build Xcompshad library, + rebuilt configure script. + +nxshadow-3.0.0-6 + +- Implemented a callback mechanism to ask the caller program if screen + polling have to be suspended. + +nxshadow-3.0.0-5 + +- Changes to comply with the library name. + +- Fixed a bug in CorePoller that could prevent the update of the last + line of a rectangle. + +nxshadow-3.0.0-4 + +- Removed some parameters of the NXShadowAddUpdaterDisplay() function. + +nxshadow-3.0.0-3 + +- Updated copyright notices to the current year. + +- Code cleanup in KeysCursorTmp.c file. + +nxshadow-3.0.0-2 + +- If master agent uses shared memory extension, the GetImage is rea- + lized by XShmGetImage() function. + +- Added new parameters to NXShadowAddUpdaterDisplay() function, the + depth and bit mask color of the master display. + +nxshadow-3.0.0-1 + +- Opened the nxshadow-3.0.0 branch based on the nxaccess-3.0.0-13. + +- Renamed NXaccess.h NXaccessEvent.h and RegionM.h files as NXshadow.h + NXshadowEvent.h and Regions.h. + +- Modified the Makefile.in file and configure scripts in order to + compile the component. + +nxaccess-3.0.0-13 + +- Fixed X11Poller.cpp pre-processing. + +nxaccess-3.0.0-12 + +- Fixed build problems on Solaris. + +nxaccess-3.0.0-11 + +- Added NXShadowUpdateBuffer() function. This function creates the + buffer for the polling. + +- If the scaline fails, the polling will suspend for 50 ms. + +- Added some functions in order to access data member class. + +nxaccess-3.0.0-10 + +- Used XTEST extension to make the shared display create input events. + +nxaccess-3.0.0-9 + +- Added the mouse events. + +- Now, it's possible to connect to X server display or agent display, + the display's content is captured by GetImage and sent to another + display by PutImage. + +nxaccess-3.0.0-8 + +- Added KeysCursorTmp.cpp file. + +- Solved a problem with the keys, when the window lost focus the Key- + Release events weren't propagated. + +nxaccess-3.0.0-7 + +- Added functions in order to remove issues with some keys combina- + tion. + +nxaccess-3.0.0-6 + +- Added functions to simulate keys Ctrl + Alt + Del in order to run + the Task Manager application. + +- Now nxaccess is able to manage all switches between desktops. + +nxaccess-3.0.0-5 + +- Solved a problem with the cursor shape. After a while, the cursor + shape are no more updated. + +- Now the cursor is updated only when it changes its shape. + +- Removed a dirty lines after screen updates. + +- Removed the unused file Keyboard.cpp. + +- Added the colorCorrect() macro in NXaccess.h. + +- Removed the colorCorrect() function in Updater.cpp. + +nxaccess-3.0.0-4 + +- Renamed some source files and functions conforming them to the name + of component. + +nxaccess-3.0.0-3 + +- Removed the parameter of type Display in all methods of the class + Poller. + +- Print, Break and Pause keys are enabled. + +nxaccess-3.0.0-2 + +- Modified the Makefile.in in order to avoid compiling the executive + file. + +- Removed the unused file Main.cpp. + +- The Windows keys are enabled. + +- Synchronized local and remote states of Num_Lock, Caps_Lock and + Scroll_Lock. + +- Updated the NoMachine copyright notices. + +nxaccess-3.0.0-1 + +- Opened the 3.0.0 branch based on the nxmirror-2.0.0-3. + +nxmirror-2.0.0-3 + +- Added the keyboard events for all layouts. + +- The mouse wheel button is enabled. + +nxmirror-2.0.0-2 + +- Completed implementation of the keyboard events only for italian + layout. + +- Added the mouse events and shape cursor. + +nxmirror-2.0.0-1 + +- Opened the 2.0.0 branch based on the 1.5.0-60. + +- Added CHANGELOG. diff --git a/doc/_attic_/NoMachine_documentation_files/nxproxy_CHANGELOG b/doc/_attic_/NoMachine_documentation_files/nxproxy_CHANGELOG new file mode 100644 index 000000000..e5dff2e4f --- /dev/null +++ b/doc/_attic_/NoMachine_documentation_files/nxproxy_CHANGELOG @@ -0,0 +1,216 @@ +ChangeLog: + +nxproxy-3.5.0-1 + +- Opened the 3.5.0 branch based on nxproxy-3.4.0-2. + +- Updated copyright to year 2011. + +nxproxy-3.4.0-2 + +- Updated copyright to year 2009. + +nxproxy-3.4.0-1 + +- Opened the 3.4.0 branch based on nxproxy-3.3.0-2. + +- Changed version number. + +nxproxy-3.3.0-2 + +- Updated VERSION. + +nxproxy-3.3.0-1 + +- Opened the 3.3.0 branch based on nxproxy-3.2.0-1. + +nxproxy-3.2.0-1 + +- Opened the 3.2.0 branch based on nxproxy-3.1.0-2. + +nxproxy-3.1.0-2 + +- Updated version number. + +nxproxy-3.1.0-1 + +- Opened the 3.1.0 branch based on nxproxy-3.0.0-4. + +nxproxy-3.0.0-4 + +- Added file COPYING. + +- Changed the LICENSE file to state that the software is only made + available under the version 2 of the GPL. + +nxproxy-3.0.0-3 + +- Updated the copyright notices to year 2007. + +nxproxy-3.0.0-2 + +- Updated the file VERSION. + +nxproxy-3.0.0-1 + +- Opened the 3.0.0 branch based on nxproxy-2.0.0-2. + +nxproxy-2.0.0-2 + +- Updated copyright to year 2006. + +nxproxy-2.0.0-1 + +- Opened the 2.0.0 branch based on nxproxy-1.5.0-10. + +nxproxy-1.5.0-10 + +- Added the JPEG, PNG and Z libraries to the linker when compiling + on Cygwin. GCC 3.3.x requires that these libraries are explicitly + given while this is not required since GCC 3.4.x. + +- Created a new configure using autoconf 2.59. + +nxproxy-1.5.0-9 + +- Removed provision for dynamically loading a different version of + the nxcomp library. + +nxproxy-1.5.0-8 + +- Updated to reflect the new naming of the NX transport interfaces. + +nxproxy-1.5.0-7 + +- Modified the Makefile.in to remove the *.out.* files generated by + Valgrind when running a 'make clean'. + +- Modified the README files and removed files that were outdated. + +nxproxy-1.5.0-6 + +- Removed the NX_FORCE_IDLE_PROXY stubs. + +nxproxy-1.5.0-5 + +- This version has NX_FORCE_IDLE_PROXY undefined, so it should work + in a way that is compatible with the old nxproxy. + +nxproxy-1.5.0-4 + +- This software is crafted by default to test the new integration + between nxcomp and nxssh. The process will stay idle and will + let nxssh create the proxy. Note that the session log will go to + 'sshlog', not to 'session'. This will have to be fixed in nxcomp + in future versions. + +- Removed the references to the "bind" functionality that is not + used in the current software. + +nxproxy-1.5.0-3 + +- Added a NX_FORCE_IDLE_PROXY. If set, nxproxy will stay idle and + will not try to create a nxcomp proxy. This is used for testing + the new in-process nxcomp functionalities with the development + versions of nxclient and nxssh software. + +nxproxy-1.5.0-2 + +- Small changes to this file. + +nxproxy-1.5.0-1 + +- Opened the 1.5.0 branch. + +nxproxy-1.4.1-1 + +- Opened the 1.4.1 branch. + +nxproxy-1.4.0-3 + +- We were lucky. We found a machine where nxproxy failed exactly + in the same way described by multiple users in their reports. + The error was the same ('dlopen: win32 line 126') and neither + rebasing the Cygwin DLLs or removing all the other Cygwin li- + braries worked. So the problem had necessarily to be in a bug- + gy Cygwin dlopen() implementation. To solve this I had to make + changes to the nxproxy code on Windows, so it links to nxcomp + at compile time in the way specified below. As far as I can + tell, any other way fails. This seems to be another Cygwin bug: + the linker says that everything is OK but then the executable + can't be run. Both the Cygwin's bash and the command.com say + 'Permission denied'. + + LIBS = -L../nxcomp -lstdc++ -Wl,-e,_mainCRTStartup -lXcomp \ + -lcygipc -static -lpng -static -ljpeg -lz + +nxproxy-1.4.0-2 + +- Added a Binder class invoked when calling proxy with -B option. + It would serve as a replacement of the modifications I'm doing + in nxssh. The class is just a framework and the implementation + is unfinished. + +- Solved a potential problem in Main.c with NXExit() being called + after the dlclose(). This was unlikely to happen as proxy never + returns. + +nxproxy-1.4.0-1 + +- Opened the 1.4.0 branch. + +nxproxy-1.3.2-1 + +- Opened the 1.3.2 branch. + +nxproxy-1.3.1-2 + +- Removed the underline characters and added a colon in the + title of this ChangeLog to fully comply with format used in + the release notices. + +nxproxy-1.3.1-1 + +- Opened the 1.3.1 branch. + +nxproxy-1.3.0-7 + +- Added a check on the OS version when running on MacOS/X. + Versions 10.2 and 10.3 differ in the way names are mangled. + +- Fixed error detection on dlsym(). The previous code was not + able to correctly identify missing symbols. + +nxproxy-1.3.0-6 + +- Modified configure.in to compile under FreeBSD. + +nxproxy-1.3.0-5 + +- Fixed a (further) compilation problem under Cygwin. + +nxproxy-1.3.0-4 + +- New nxproxy is able to load libXcomp by dlopen() under + Cygwin. This simplifies both code in Main.c and the + configure.in script. + +- Changed configure.in to not link with -mwindows under + Cygwin. Linking with -mwindows prevented stderr to be + correctly output when running nxproxy on a console. + +nxproxy-1.3.0-3 + +- Changed configure.in to first check for nx-X11 includes + and libraries. Added "/usr/openwin/bin/makedepend" to + path searched for the executable. + +nxproxy-1.3.0-2 + +- Small cleanup in configure.in. A new configure script has + been generated using autoconf-2.57-3. + +nxproxy-1.3.0-1 + +- Updated internal version, so this release tries to load + libXcomp version 1.3.0. diff --git a/doc/_attic_/NoMachine_documentation_files/nxproxy_README b/doc/_attic_/NoMachine_documentation_files/nxproxy_README new file mode 100644 index 000000000..8f95d9f3f --- /dev/null +++ b/doc/_attic_/NoMachine_documentation_files/nxproxy_README @@ -0,0 +1,14 @@ +README +------ + +1. To compile: + + > tar zxvf nxproxy-X.Y.Z-N.tar.gz + > cd nxproxy + > ./configure + > make + + You'll have to run gmake under Solaris. + +2. The 'make install' target is not currently supported + in the Makefile, but it should be simple to fix. diff --git a/doc/_attic_/NoMachine_documentation_files/nxproxy_README-IPAQ b/doc/_attic_/NoMachine_documentation_files/nxproxy_README-IPAQ new file mode 100644 index 000000000..7a8a8a958 --- /dev/null +++ b/doc/_attic_/NoMachine_documentation_files/nxproxy_README-IPAQ @@ -0,0 +1,27 @@ +README-IPAQ +----------- + +1. Install a cross-compiler for ARM. You can find detailed + informations at: + + http://www.ailis.de/~k/knowledge/crosscompiling/toolchain.php + + There are also binaries needed to install the cross-compiler. + +2. Configure and compile nxproxy using: + + $ ./configure --with-ipaq + $ make + + After compilation type: + + $ arm-linux-strip nxproxy + +3. You need libXcomp.so to run nxproxy. Be sure you include the + library in your LD_LIBRARY_PATH. For example, you can run: + + > export LD_LIBRARY_PATH $HOME/NX/nxcomp + > nxproxy -S localhost:8 + +4. The package nxscripts contains many examples of NX usage that + you can modify to suit your needs. diff --git a/doc/_attic_/NoMachine_documentation_files/nxproxy_README-VALGRIND b/doc/_attic_/NoMachine_documentation_files/nxproxy_README-VALGRIND new file mode 100644 index 000000000..ce4d513a4 --- /dev/null +++ b/doc/_attic_/NoMachine_documentation_files/nxproxy_README-VALGRIND @@ -0,0 +1,39 @@ +README-VALGRIND +--------------- + +You can run nxproxy (and nxcomp) under the supervision of valgrind +(a very good memory debugger) by wrapping nxproxy in the following +script: + +<snip> +#!/bin/bash + +# Enable core dumps. + +ulimit -c unlimited + +# Set this to directory where nxproxy is located. + +NXPROXY_DIR=~/NX/nxproxy + +# Set this to directory where valgrind is located. + +VALGRIND_DIR=/usr/local/bin + +exec ${VALGRIND_DIR}/valgrind -v --leak-check=yes --leak-resolution=high \ + --show-reachable=yes --show-reachable=yes \ + --suppressions=${NXPROXY_DIR}/nxproxy.supp \ + --num-callers=16 --logfile-fd=2 \ +\ +${NXPROXY_DIR}/nxproxy $1 $2 $3 $4 $5 $6 $7 $8 $9 +<snip> + +Run the following commands on your shell, right in the place where +the nxproxy executable is to be placed in your setup: + +$ cat >nxproxy +<copy paste the previous lines here> +$ chmod a+x nxproxy + +Output of valgrind will go on stderr, that is in session file, if +run in NX environment. |