Is it safe to call repaint from renderGl thread?

Can I call repaint inside my renderOpenGL function?

Nope. There would be race conditions with all the stuff happening on the message thread, e.g. components being deleted, moved, created, etc.