use parking_lot::RwLockWriteGuard; use std::collections::VecDeque; use std::sync::atomic::Ordering; use super::inner::{Task, WrapperInner}; use crate::context::{EventLoop, ProcessContext}; use crate::plugin::{NoteEvent, Plugin}; /// A [ProcessContext] implementation for the wrapper. This is a separate object so it can hold on /// to lock guards for event queues. Otherwise reading these events would require constant /// unnecessary atomic operations to lock the uncontested RwLocks. pub(crate) struct WrapperProcessContext<'a, P: Plugin> { pub inner: &'a WrapperInner
,
pub input_events_guard: RwLockWriteGuard<'a, VecDeque