Refactor squashing of render requests.
Previous approach had the potential to cause too many interprocess exchanges even for obsolete render requests. Further more, due to parallel queues being built due to use of separate provides, there was a potential for standard remote object messages and interaction messages to be interleaved differently between different ranks.
All of these issues are addressed by this refactor.
Now, instead of using a separate vtkInteractionProvider
, we add
interaction logic to vtkRemoteObjectProviderViews
itself. This avoids
parallel queues problem and hence ensures all messages are processed in
same order on all ranks.
Next, by using preview/process counters and global exchanging of preview counters to collective make consistent decisions about which render request to skip, we ensure all ranks render the same state.