Hi,
my application was working fine on models other than Nokia, but used to freeze on Nokia phones. I was wondering why. With the emulator (Nokia Developer's Suite 2.2) I found out the following:

Calling Canvas.repaint() requires somehow some 'work' of the system's Thread that is used for calling Canvas.paint(Graphics g).

Suppose the following implementation of paint:

paint(Graphics g){
.....// do preparations
.....synchronized(lock){
..........//paint the stuff
.....}
}


Now, calling from my own thread
synchronized(lock){
.....mycanvas.repaint();
}
will cause a deadlock, if paint() is currently executed and it is incidently in the code segment marked "do preparations"

That's why I assume that repaint() somehow waits for the painting thread. Is this true, and if yes, why is this necessary? There is nothing about this in the j2me specs.

Best regards,
Johannes