Skip to content

Resolve "(io): avoid reentrance in update loops"

Flavien BRIDAULT requested to merge 1237-io-avoid-reentrance-in-update-loops into dev

Description

sight::module::sync::synchronizer was modified as follows:

  • The synchronize slot no longer synchronizes immediately. It becomes a try_sync slot, that is auto-connected to the input timelines, and only synchronizes if the slot request_sync has been called.
  • When the synchronisation occurs, the service "locks" itself so that every sync request is discarded.
  • For simplicity, the synchronization_skipped was merged with the synchronization_done signal. We do not need to make a distinction.

Breaking change(s)

For clarity and simplicity, the API was broken every occurrence of the current /synchronize slot in the XML configurations by /request_sync. No need to call try_sync, this is done through auto connections.

How to test it?

Tuto17

Related issue(s)

Blocks #1237 (closed)

Edited by Flavien BRIDAULT

Merge request reports