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
Created attachment 10982 [details]
testcase to demonstrate the bug
This is fixed