True, Swing uses double-bufferring. Swing also uses a "paint everything in one thread" model. The problem is that repaint requests for the 3d view can only be serviced between invocations of PlanComponent.paintComponent(). The patch moves the heavy work in paintComponent() off the AWT thread, so that the 3d view is updated as soon as the GPU completes it. The PlanComponent view is also updated as soon as it completes, so there's no penalty for PlanComponent. I'm not sure if the buffer size changes...
3D view performance
added method to check if node has ancestor of a...
cancel timeout checks when channel is closed (r...
set polling intervals in passive mode
fixed some score calculations
fixed scheduler property parsing error(s) (swif...
fixing future notification loops: each relevant...