1
0
Fork 0
Commit graph

864 commits

Author SHA1 Message Date
Robbert van der Helm
542b3052f2 Support running status MIDI events 2022-11-05 14:19:47 +01:00
Robbert van der Helm
e8002730a0 Fix clippy lints 2022-11-05 14:19:47 +01:00
Robbert van der Helm
8f91ecf247 Silence bool_to_int_with_if clippy lint 2022-11-05 14:19:47 +01:00
Robbert van der Helm
6eccabb701 Allow basic CLAP MIDI msgs with MidiConfig::Basic
This is needed for Qtractor compatibility. Even though it always sends
notes as CLAP events, it requires the plugin to support both the CLAP
and the MIDI note event dialects. Otherwise it won't send any notes at
all. Feature, not a bug.
2022-11-05 14:19:47 +01:00
Robbert van der Helm
f48b36f2a7 Add Persist implementations for Arc wrapped types 2022-11-05 14:19:32 +01:00
Robbert van der Helm
a0ca80297b Add Persistent implementations for atomics 2022-11-05 14:19:32 +01:00
Robbert van der Helm
23f4fd6fc5 Rearrange persist module 2022-11-05 14:19:32 +01:00
Robbert van der Helm
fc9e521a85 Fix potential VST3 parking_lot allocation failure
This can happen when the process function is called from a new thread or
when a new thread has been spawned.
2022-11-04 15:00:45 +01:00
Robbert van der Helm
6c0df7ec39 Fix typo in pos_seconds documentation 2022-11-03 03:08:28 +01:00
Robbert van der Helm
456655b269 Use the clap_plugin::plugin_data field
Instead of relying on the struct layout and doing raw pointer casts. We
still need to do this for the CLAP plugin factory though.
2022-10-30 14:18:18 +01:00
Robbert van der Helm
36bf46f569 Fix setProcessing() in Ardour when setting latency 2022-10-25 17:47:36 +02:00
Robbert van der Helm
8b47f90dd7 Fix setActive() in Ardour when setting latency 2022-10-25 17:38:51 +02:00
Robbert van der Helm
435fcd8106 Fix CLAP modulation
This was a regression introduced in
c566888fa3.
2022-10-24 23:56:49 +02:00
Robbert van der Helm
ba9e9253f2 Clean up Plugin trait doc comment 2022-10-23 16:33:20 +02:00
Robbert van der Helm
f42b2d55f9 Clarify Plugin trait background task docs 2022-10-23 16:32:15 +02:00
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
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
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
6ee3aafa91 Move Editor and ParentWindowHandle to a new module 2022-10-21 23:12:05 +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
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
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