Version: v1.3.0 tag, Linux (self-built).
Track.remove_child() / remove_child_at_index() (remote remove_item_atom) fails over the python link with:
RuntimeError: Unable to add element of type C "std::pair<xstudio::utility::JsonStore, std::vector<xstudio::timeline::Item>>" to message: type is unknown to CAF
The dangerous part: the removal has already happened server-side when the return value fails to serialise, so the caller sees an exception but the track has changed — in our case a Gap child was silently destroyed mid-edit, corrupting the layout.
Workaround: erase_child_at_index() (erase_item_atom) serialises fine and is safe.
Suggested fix: either register the pair/vector type with CAF's serialiser for the python link, or have the python-facing handler return a serialisable summary (JsonStore) instead of the removed Items.
Version: v1.3.0 tag, Linux (self-built).
Track.remove_child()/remove_child_at_index()(remoteremove_item_atom) fails over the python link with:The dangerous part: the removal has already happened server-side when the return value fails to serialise, so the caller sees an exception but the track has changed — in our case a Gap child was silently destroyed mid-edit, corrupting the layout.
Workaround:
erase_child_at_index()(erase_item_atom) serialises fine and is safe.Suggested fix: either register the pair/vector type with CAF's serialiser for the python link, or have the python-facing handler return a serialisable summary (JsonStore) instead of the removed Items.