1
0
Fork 0
Commit graph

1929 commits

Author SHA1 Message Date
Robbert van der Helm 3032300bcf Clarify task scheduling doc comments 2022-10-23 16:29:30 +02:00
Robbert van der Helm 0dd3bfe4e7 Allow running tasks on a dedicated thread
Independent of the GUI thread, which is also still an option. This is
useful for long running IO jobs that might otherwise block the GUI for
long enough to be noticeable.
2022-10-23 16:23:20 +02:00
Robbert van der Helm 028aeed18e Add a schedule_background() EventLoop method 2022-10-23 16:19:49 +02:00
Robbert van der Helm 520eba71ca Add a simple background thread task runner
This can be used by the Windows event loop, the future macOS event loop,
and the CLAP event loop.
2022-10-23 16:14:35 +02:00
Robbert van der Helm dbb97f0534 Use channels for Windows event loop
Instead of an `ArrayQueue`. Since this doesn't need to both send and
receive on the same object.
2022-10-23 15:52:14 +02:00
Robbert van der Helm 31cda78201 Rename do_maybe_async() to schedule_gui() 2022-10-23 15:48:27 +02:00
Robbert van der Helm 4524719128 Add an is_gui_thread flag to MainThreadExecutor
We'll also use the EventLoop for running background tasks completely
decoupled from the GUI.
2022-10-23 15:48:27 +02:00
Robbert van der Helm 967426453a Clean up EventLoop API
By taking an `Arc<T>` instead of a `Weak<T>`. The `Weak` is only needed
for the background threads.
2022-10-23 15:48:27 +02:00
Robbert van der Helm 21bfb57023 Rename execute_async() to execute_gui()
We'll have another function that uses a dedicated background thread.
2022-10-23 13:58:33 +02:00
Robbert van der Helm 5d84800c0c Manually implement Clone for AsyncExecutor 2022-10-22 15:32:42 +02:00
Robbert van der Helm 63db56fa68 Make AsyncExecutor Send+Sync
Otherwise actually using this will be a bit difficult.
2022-10-22 15:10:34 +02:00
Robbert van der Helm c980576102 Add an AsyncExecutor for editor GUIs
This is decoupled form `GuiContext` as that would require invasive
changes all over the place.
2022-10-22 15:05:39 +02:00
Robbert van der Helm f3bb816cb5 Add an AsyncExecutor type for use with the GUI 2022-10-22 14:34:32 +02:00
Robbert van der Helm b676353589 Split the nih_plug::context module
So that structs are more logically grouped with their traits.
2022-10-22 14:19:10 +02:00
Robbert van der Helm faa9742eee Rearrange the wrapper context modules
This matches the order in `src/context.rs`.
2022-10-22 14:15:49 +02:00
Robbert van der Helm b1f24bfad9 Reorder Context methods 2022-10-22 13:13:08 +02:00
Robbert van der Helm 5a974219b8 Remove Sync bound from TaskExecutor 2022-10-22 12:31:54 +02:00
Robbert van der Helm f6ad85de01 Make per-day breaking changes order chronological
This probably makes more sense when reading these. This isn't Twitter.
2022-10-22 12:27:59 +02:00
Robbert van der Helm 8b53ca2ab0 Mention duplicate tasks in execute_async() 2022-10-22 02:30:13 +02:00
Robbert van der Helm 5ea2377c18 Replace AsyncExecutor with simple closure
This makes everything much simpler. The task type is now defined
directly on `Plugin`.
2022-10-22 02:01:03 +02:00
Robbert van der Helm 84f834abb6 Add AsyncExecutor support to ProcessContext 2022-10-22 02:01:03 +02:00
Robbert van der Helm ec8e99cf44 Require AsyncExecutor tasks to be Send 2022-10-22 00:55:04 +02:00
Robbert van der Helm 6ffa23971e Add AsyncExecutor support to InitContext 2022-10-22 00:21:08 +02:00
Robbert van der Helm 0d90969566 Remove unnecessary deref 2022-10-22 00:14:13 +02:00
Robbert van der Helm 297ad2a83e Add an AsyncExecutor associated type to Plugin
This will make it possible to run background tasks in a type safe way.
Sadly, this does mean that every plugin now needs to define the type
alias and constructor function since Rust does not yet support defaults
for associated types.
2022-10-21 23:52:46 +02:00
Robbert van der Helm 25d20f1950 Add an AsyncExecutor trait for background tasks 2022-10-21 23:52:29 +02:00
Robbert van der Helm 558922c9a9 Add missing doc comments in Plugin 2022-10-21 23:34:59 +02:00
Robbert van der Helm 71d46b42e9 Mention state migrations in readme 2022-10-21 23:23:13 +02:00
Robbert van der Helm 6ee3aafa91 Move Editor and ParentWindowHandle to a new module 2022-10-21 23:12:05 +02:00
Robbert van der Helm 34cc1ba30b Use a vst3-sys fork to fix unused Box::from_raw
https://github.com/RustAudio/vst3-sys/pull/52
2022-10-20 16:31:13 +02:00
Robbert van der Helm 46094e5249 Explicitly drop Arc::from_raw 2022-10-20 16:28:58 +02:00
Robbert van der Helm f9bdaffc62 Don't require Sync for Plugin
In hindsight there's really no reason to, because process() requires
exclusive access and the other functions won't be called during
processing.
2022-10-20 16:12:50 +02:00
Robbert van der Helm 8765717793 Allow opting out of egui's default features
Since I don't think there's a way to opt out of features from another
Cargo.toml file. You'll still need to enable `nih_plug_egui`'s `opengl`
feature if you disable its default features.
2022-10-20 15:58:20 +02:00
Robbert van der Helm 34fd3a1c2a Add PayPal and Liberapay links
By popular demand. But definitely don't feel obliged to donate anything!
2022-10-20 15:47:48 +02:00
Robbert van der Helm 375262aaa3 Also drop Sync requirement for editor handles 2022-10-20 14:41:53 +02:00
Robbert van der Helm a2a52e0ff1 Drop Sync requirement for Editor 2022-10-20 14:31:48 +02:00
Robbert van der Helm eed5a62abb Add build closure parameter to create_egui_editor 2022-10-20 14:04:08 +02:00
Robbert van der Helm a9b1dd61fd Add state filter method for performing migrations
This allows plugins to migrate old state, for instance when parameter
meanings change, new parameters are introduced, or parameter IDs have
been changed.
2022-10-20 12:45:53 +02:00
Robbert van der Helm bd295b7380 Move nih_plug::param to nih_plug::params 2022-10-20 12:26:12 +02:00
Robbert van der Helm e1269d07b1 Fix references in docs 2022-10-20 12:21:24 +02:00
Robbert van der Helm ee38566d74 Remove unused DPI scale function in standalone 2022-10-20 12:14:26 +02:00
Robbert van der Helm 2a0ed0c5ec Move PersistentField and helpers to dedicated mod
As mentioned in the previous commit's breaking changes entry.
2022-10-20 12:11:04 +02:00
Robbert van der Helm fb71d0fcce Move the Params trait out of params::internals
This makes much more sense, since this trait is a cornerstone of
NIH-plug.
2022-10-20 12:10:35 +02:00
Robbert van der Helm 4f74b4b4cc Mention saving Crossover setup as default preset 2022-10-19 16:00:20 +02:00
Robbert van der Helm 21a83ccfe3 Set a MSRV #40 2022-10-19 12:50:09 +02:00
Robbert van der Helm 3f007c8a68 Enable the Eq and Debug traits for syn
Temporary workaround for #38.
2022-10-13 11:18:35 +02:00
Robbert van der Helm 81bdad87b5 Replace custom Params in SC with #[nested]
Using the new `id_prefix` attribute. This doesn't break backwards
compatibility.
2022-10-13 01:32:48 +02:00
Robbert van der Helm 727d88c4d7 Add ID renaming superpowers to #[nested(...)]
This can now be used for most common use cases where you previously had
to do a manual `Params` implementation, like arrays of parameter objects
and duplicate parameter objects.
2022-10-13 01:28:05 +02:00
Robbert van der Helm d57003a0e9 Update macOS instructions in plugin readmes 2022-10-09 21:35:25 +02:00
Robbert van der Helm 3ba62c4aab Treat triple clicks in Vizia ParamSlider as click 2022-10-08 15:52:36 +02:00