Lifecycle events emit expose events to safely stop & resume the renderer threads.
We don't use hide/show directly as hide causes Qt to stop the renderer, but then release the GL context and its resources. Expose events just stop & resume the renderer without altering the context.