Use CATransaction completion block to trigger next step of update, rather than just trusting to timing.
Also, return from pDoUpdate1 if fNeedsUpdate was false -- the return statement got accidentally dropped 2012-12-28.