The comment for the method paint() in Display2D.InnerDisplay2D is

         /** Paints an image to the screen either buffered or
unbuffered.  If buffered, the
             buffer is returned for your convenience.   Synchronizes on
the schedule; since we know
             that the schedule's step() method is synchronized on the
schedule as well, this
             gives us a way to block this method from reading from the
model until we know
             the model isn't being updated any more.  However as you
might guess, this also
             presents a deadlock opportunity if a scheduled */

I'm quite interested to hear the rest of it, because I'm currently
developing my own Controller and have run into some threading issues.
Currently, I'm avoiding deadlocks by always calling Display2D.step() in
using invokeLater(), but I've not done much Swing before and I don't
have a good grasp of the situation.

Rob Alexander                   (E-mail: [log in to unmask])
Research Associate, Dept of Computer Science, The University of York,
York, YO10 5DD, UK
Tel: 01904 432792       Fax: 01904 432708