ChangeLog: 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 [] to [x]. - 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- 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.