See the attached testcase for a simple animation on an AWT component. Please edit the file to uncomment either the LCDCanvas extends Canvas or LCDCanvas extends Panel lines. LCDCanvas is an inner class, but this shouldn't matter. When running with the reference implementation, repainting calls the update( Graphics ) method, which in turn dispatches to paintMatrix(), and the animation runs flicker-free. The paint() method is only called after external events, e.g. resizing the window. Running with jamvm+classpath (cvs 2006.02.28) shows that repainting directly calls paint( Graphics ). This is wrong, and results in enormous flickering. This will break applications whose painting algorithms make use of the update() method. Note that jamvm+classpath works correctly for heavyweight components, as can be seen by uncommenting the "LCDCanvas extends Canvas" line and recompiling.
Created attachment 10982 [details] testcase to demonstrate the bug
This is fixed