gl: paintGL() must be in main thread(call update()). fix rotation and
flicker

it was in AVThread, so can't display the image
gl: aspect ratio change support

unlike other renderer, the paint on the whole widget surface. for
OpenGL, we glViewport explictly to set the area we can paint(out_rect)
gl: misc