XAtoms are a property of Xwindows and until the window is mapped by X they cannot be used. This gives us a race condition to consider and this has not been programmed reliably in the existing code.
ZMap is given Otterlace's window ID via a command line argument and Otterlace only ever uses this one ID. ZMap operates three seperate event handlers/ contexts for XAtom events and each one has a protocol to register the client id which is always the same as the original command line argument. Due to the race condition mentioned above it is possible for the client registration to fail resulting in a cessation of communications.
To avoid this race condition the XRemote code has been modified as follows:
This solution does break some of the design assumptions of the XRemote code (which were incompatable with correct functioning of the module). In the near future the XRemote module will be replaced by a new one, which will operate using Xwindow Select functions instead of XAtoms.
Out of the three XML contexts on the app/control and view are used; window functions were moved into the view some time previously. To avoid confusion the window code has been removed by doing the following: