I would do all of the drawing in paintGL(), because you can't tell when you need the repaint. For example the user might move some other window over your one.
showImage() should only to store the updated image data in some member variable and schedule the update using updateGL(). This way you have clear separation of concerns.
What do you do exactly with the image in your threads? Do you use OpenGL there?
Bookmarks