Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove the need to keep the stream around #613

Closed
dvdsk opened this issue Sep 16, 2024 · 12 comments
Closed

Remove the need to keep the stream around #613

dvdsk opened this issue Sep 16, 2024 · 12 comments
Labels
breaking Proposed change that would break the public API

Comments

@dvdsk
Copy link
Collaborator

dvdsk commented Sep 16, 2024

Its a common footgun in using rodio. It should be possible to store the stream in the sink.

Remaining questions, does the stream need to be accessible when a sink is used? If so how? Does sink get a method to get the stream?

Implementation wise it seems like storing the stream in an Arc will work.

@dvdsk dvdsk added the breaking Proposed change that would break the public API label Sep 16, 2024
@PetrGlad
Copy link
Contributor

PetrGlad commented Sep 20, 2024

Can Sink's output be not a stream but another source? Should they give some shared reference to the output stream in that case?

I would keep sink as simple as possible unless there is a compelling reason to add anything to it. It is a lot harder to remove things from API than to add them.

@PetrGlad
Copy link
Contributor

PetrGlad commented Sep 24, 2024

I am trying to prototype now to see how best to do this.

@dvdsk
Copy link
Collaborator Author

dvdsk commented Sep 24, 2024

Can Sink's output be not a stream but another source?

Thats actually quite a nice idea. I wonder if there is any reason thats not the case right now... It seems quite elegant!

@dvdsk
Copy link
Collaborator Author

dvdsk commented Sep 24, 2024

How would it help out for this issue though? The stream still needs to be kept somewhere.

And Sink is not really a footgun atm I rather not change it, Rodio has a ton of users depending on Sink in its current form.

@PetrGlad
Copy link
Contributor

PetrGlad commented Nov 10, 2024

Just to note, i am working on this while creating a stream builder.
My latest version is here https://github.com/PetrGlad/rodio/tree/init-revamp
The init procedure may not be exactly what you envisioned, so I still need to explain/justify some of the choices there.

@dvdsk
Copy link
Collaborator Author

dvdsk commented Nov 11, 2024

Ahh good to hear, take your time to play around with it. Feel free open a (draft) PR once you want feedback. I had a quick look at a diff and saw some unrelated (I think?) changes (stuff with k == 0 in src/conversions/sample_rate.rs).

so I still need to explain/justify some of the choices there.

Comments explaining why you did things a certain way are invaluable for maintainers, both later on when the code needs to be changed/updated/fixed and during review. So that would be very nice :)

If at all possible please split unrelated changes to different PR's, that makes them far easier to discuss and review. I can help out with that.

@PetrGlad
Copy link
Contributor

PetrGlad commented Nov 12, 2024

Yes, some changes are unrelated, I will check that but they are mosly non-functional. I can trim the changeset down if that is a problem. The branch went through some experimentation so maybe some parts like method renames, may be omitted.
Regarding sample_rate.rs, the change fixes failing tests. Also there are failing checks on the doc comments. These checks are normally performed by cargo test. Are the tests even run by the rodio master CI?

@PetrGlad
Copy link
Contributor

More on sample_rate tests, the quickcheck generates random values for inputs and usually probes also very small and very large values, so this causes overflows. My fix prevents testing very large coefficients. If that case is expected to be handled, then some other fix is required there.

@dvdsk
Copy link
Collaborator Author

dvdsk commented Nov 12, 2024

I can trim the changeset down if that is a problem

That would be nice, it makes reviewing easier and there is less of a chance of a bug slipping through.

@dvdsk
Copy link
Collaborator Author

dvdsk commented Nov 12, 2024

Regarding sample_rate.rs, the change fixes failing tests. Also there are failing checks on the doc comments. These checks are normally performed by cargo test. Are the tests even run by the rodio master CI?

strange, those tests should run in CI. Could you turn those changes into a separate PR? Then we can take a more detailed look at them and merge them.

@PetrGlad
Copy link
Contributor

PetrGlad commented Nov 14, 2024

Test fixes alone #640

@dvdsk
Copy link
Collaborator Author

dvdsk commented Nov 24, 2024

Addressed as part of #641 🥳 🎈

@dvdsk dvdsk closed this as completed Nov 24, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
breaking Proposed change that would break the public API
Projects
None yet
Development

No branches or pull requests

2 participants