1
0
Fork 0

Replace editor close function with a Drop bound

This commit is contained in:
Robbert van der Helm 2022-02-05 13:06:10 +01:00
parent b901dac012
commit d2407db284

View file

@ -148,12 +148,14 @@ pub trait Vst3Plugin: Plugin {
const VST3_CATEGORIES: &'static str; const VST3_CATEGORIES: &'static str;
} }
/// An editor for a [Plugin]. If you don't have or need an editor, then you can use the [NoEditor] /// An editor for a [Plugin]. The [Drop] implementation gets called when the host closes the editor.
/// struct as a placeholder. /// If you don't have or need an editor, then you can use the [NoEditor] struct as a placeholder.
pub trait Editor { //
/// Called just before the window gets closed. // XXX: Requiring a [Drop] bound is a bit unorthodox, but together with [Plugin::create_editor] it
fn close(&self); // encodes the lifecycle of an editor perfectly as you cannot have duplicate (or missing)
// initialize and close calls. Maybe think this over again later.
#[allow(drop_bounds)]
pub trait Editor: Drop {
/// Return the (currnent) size of the editor in pixels as a `(width, height)` pair. /// Return the (currnent) size of the editor in pixels as a `(width, height)` pair.
fn size(&self) -> (u32, u32); fn size(&self) -> (u32, u32);
@ -164,13 +166,15 @@ pub trait Editor {
pub struct NoEditor; pub struct NoEditor;
impl Editor for NoEditor { impl Editor for NoEditor {
fn close(&self) {}
fn size(&self) -> (u32, u32) { fn size(&self) -> (u32, u32) {
(0, 0) (0, 0)
} }
} }
impl Drop for NoEditor {
fn drop(&mut self) {}
}
/// We only support a single main input and output bus at the moment. /// We only support a single main input and output bus at the moment.
#[derive(Debug, Clone, Copy, PartialEq, Eq)] #[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct BusConfig { pub struct BusConfig {