Context callback changes and device mutex removal #12275
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is an API-breaking change:
rs2_set_devices_changed_callbackis calledrs2_delete_contextBefore: as long as the internal context object was held alive (by a device etc.), the callback was still callable, possibly even when unintended (requiring the user to set an "empty" callback as a workaround)
Now: when delete-context is called, the callback is unsubscribed and no longer happens. I.e., you now have to hold the context if you want callbacks from it. This is the correct behavior.
Changes:
on_device_changes()rsutils::signal(we handle multiple callbacks), and remove mutex in contextdevice::is_valid()implementation, without a mutex around itEverything together solves the deadlock in #11933. A test will be added separately to regressions.
Tracked on [RSDSO-19304]