...and not when we mount and dismount.
Turns out that when we dismount, it's too late -- we've already set
renderObject to null.
We also mark the mixed viewport as dirty when it is removed from its parent.
Without this, we try to reuse the child nodes in subsequent syncs, which is a disaster.