Vrui 2.3-xxx Release Notes
Several improvements to the Threads portable threading library:
A thread identification mechanism has been added. Each thread started using the Threads::Thread abstraction will get a unique ID that is identical between multiple processes or computers if the same code is executed, regardless of timing and concurrency.
- Threads library has a library file again.
- Threads library now requires process-wide initialization and de-initialization, which are handled transparently via gcc function attributes.
- Threads library has optional debugging features enabled via Threads/Config.h.
- Threads/Config.h includes new #define flag to indicate whether the host operating system implements thread cancellation (Mac OS X does not).
The intra-cluster communication infrastructure implemented by the Cluster library, and particularly the Cluster::Multiplexer class, has been significantly improved.
- Several bugs have been fixed.
A major missing feature, reliable establishment of intra-cluster communication pipes from concurrent background threads, has been implemented with help of the new thread identification mechanism from the Threads library.
- This requires that all threads that create their own communication pipes must have been started using the Threads::Thread abstraction.
- Documentation has been updated to recommend that intra-cluster communication should use different port numbers on the master node and the slaves nodes of a cluster for improved performance.
- MTU of intra-cluster communication packets can now be configured at Vrui build time via Cluster/Config.h.
The GLSupport library has improved support for on-demand compilation of dynamic GLSL shaders following important OpenGL state.
- The GLLightTracker class tracks OpenGL's lighting state.
- The GLClipPlaneTracker class tracks OpenGL's clipping plane state.
- Both tracker classes contain convenience functions to generate GLSL code for lighting and clipping, respectively.
- Pointers to trackers of both types have been added to the GLContextData class.
- The GLMotif library has a new GLMotif::HSVColorSelector widget to interactively select RGB colors using a hue/saturation/value color model.
- The GLMotif::DragWidget class in the GLMotif library has been changed from an intermediate base class to a mix-in class. This might require simple code changes in custom widget classes.
- Vrui has been updated to use the OpenGL state tracker classes from the GLSupport library.