1
0
Fork 0
nih-plug/nih_plug_derive/src
Robbert van der Helm 083885a40c Rework Params trait API with Arc instead of Pin
This is a breaking change requiring a small change to plugin
implementations.

The reason why `Pin<&dyn Params>` was used was more as a hint to
indicate that the object must last for the plugin's lifetime, but `Pin`
doesn't enforce that. It also makes the APIs a lot more awkward.
Requiring the use of `Arc` fixes the following problems:

- When storing the params object in the wrapper, the `ParamPtr`s are
  guaranteed to be stable.
- This makes it possible to access the `Params` object without acquiring
  a lock on the plugin, this is very important for implementing
  plugin-side preset management.
- It enforces immutability on the `Params` object.
- And of course the API is much nicer without a bunch of unsafe code to
  work around Pin's limitations.
2022-04-07 15:31:46 +02:00
..
enums.rs Split up the nih_plug_derive crate into modules 2022-03-16 15:53:35 +01:00
lib.rs Split up the nih_plug_derive crate into modules 2022-03-16 15:53:35 +01:00
params.rs Rework Params trait API with Arc instead of Pin 2022-04-07 15:31:46 +02:00