Don't require Arcs for ProcessContext
It makes more sense to pass this as a reference, so the plugin cannot do weird things with it.
This commit is contained in:
parent
22995df7ea
commit
f009384c2f
|
@ -31,17 +31,15 @@ pub(crate) const TASK_QUEUE_CAPACITY: usize = 512;
|
|||
|
||||
/// General callbacks the plugin can make during its lifetime. This is passed to the plugin during
|
||||
/// [Plugin::initialize].
|
||||
///
|
||||
/// # Safety
|
||||
///
|
||||
/// This context is passed to be stored by the plugin, and it may thus not outlive the wrapper.
|
||||
/// Hence the use of reference counted smart pointers. The implementing wrapper needs to be able to
|
||||
/// handle concurrent requests, and it should perform the actual callback within
|
||||
/// [MainThreadQueue::do_maybe_async].
|
||||
pub unsafe trait ProcessContext {
|
||||
//
|
||||
// # Safety
|
||||
//
|
||||
// The implementing wrapper needs to be able to handle concurrent requests, and it should perform
|
||||
// the actual callback within [MainThreadQueue::do_maybe_async].
|
||||
pub trait ProcessContext {
|
||||
/// Update the current latency of the plugin. If the plugin is currently processing audio, then
|
||||
/// this may cause audio playback to be restarted.
|
||||
fn set_latency_samples(self: &Arc<Self>, samples: u32);
|
||||
fn set_latency_samples(&self, samples: u32);
|
||||
}
|
||||
|
||||
/// A trait describing the functionality of the platform-specific event loop that can execute tasks
|
||||
|
|
|
@ -263,8 +263,8 @@ impl<P: Plugin> MainThreadExecutor<Task> for WrapperInner<'_, P> {
|
|||
}
|
||||
}
|
||||
|
||||
unsafe impl<P: Plugin> ProcessContext for WrapperInner<'_, P> {
|
||||
fn set_latency_samples(self: &Arc<Self>, samples: u32) {
|
||||
impl<P: Plugin> ProcessContext for WrapperInner<'_, P> {
|
||||
fn set_latency_samples(&self, samples: u32) {
|
||||
self.current_latency.store(samples, Ordering::SeqCst);
|
||||
let task_posted = unsafe { self.event_loop.read().assume_init_ref() }.do_maybe_async(
|
||||
Task::TriggerRestart(vst3_sys::vst::RestartFlags::kLatencyChanged as u32),
|
||||
|
|
Loading…
Reference in a new issue