Combining several rendering engines is always tricky, and should be avoided when possible. Most things can be drawn by OCCT itself or by low-level OpenGL code within custom OpenGl_Element objects.
- its also not particularly elegant that the state (myImmediateUpdate) is altered in this method call, that's not very transparant to the user
you have quoted lines from old version of OCCT, moreover it is actually a "dead code" escaped by #ifdef.
The idea of changing myImmediateUpdate=false within this code is to temporarily disable several implicit updates (within Rotate() and ZFitAll()) followed by single implicit update after myImmediateUpdate=true. Of course the second assignment is incorrect - it should return the flag to the previous state. But this does not matter since this code has been inactive for a long time and has been already removed ;).
Still, I would like to know whether its possible to update the camera without invoking a redraw ( the .Rotation method, without the implicit opengl call )
but you have already found the key to answer of your question! Flag myImmediateUpdate (true by default) can be changed by the method V3d_View::SetImmediateUpdate().
Implicit update is a nice feature allowing to get up-to-date image on screen regardless of involved logic of 3D viewer. It is enabled by default within V3d_View and you may notice that most AIS_InteractiveContext methods have optional argument to update viewer which is set to true as well.
However implicit updates have obvious drawback - having more viewer updates than it might be necessary. And your case is particular example when implicit updates should be avoided everywhere.