Close camera streams on robot close and when there are no more listeners #122
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.
Close camera streams properly -- when there are no more listeners.
We reuse camera streams. Whenever someone asks for a stream, we return a cached copy if available. This stream might be new, cached and open, cached and previously closed (needs to be reopened), etc. We don't want the implementer to have to think about this. They should be able to call
close
whenever they are done, and we should figure out if it's time to actually close the stream (imagine they have multiple views with the same stream open, they should be able to close one without closing all).This PR basically says, once there are no more subscribers to this stream, then close it for real. And finally, upon closing the robot, release all resources.