diff --git a/src/engine/dispatch.h b/src/engine/dispatch.h index 63ed82162..2f33f0b60 100644 --- a/src/engine/dispatch.h +++ b/src/engine/dispatch.h @@ -196,6 +196,11 @@ class DivDispatch { */ void setSkipRegisterWrites(bool value); + /** + * notify deletion of an instrument. + */ + virtual void notifyInsDeletion(void* ins); + /** * force-retrigger instruments. */ diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 73a7e7a67..b3bc72d4a 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -2706,6 +2706,9 @@ int DivEngine::addInstrument(int refChan) { void DivEngine::delInstrument(int index) { isBusy.lock(); if (index>=0 && index<(int)song.ins.size()) { + for (int i=0; inotifyInsDeletion(song.ins[index]); + } delete song.ins[index]; song.ins.erase(song.ins.begin()+index); song.insLen=song.ins.size(); diff --git a/src/engine/platform/abstract.cpp b/src/engine/platform/abstract.cpp index c78815316..a313b2d0a 100644 --- a/src/engine/platform/abstract.cpp +++ b/src/engine/platform/abstract.cpp @@ -46,6 +46,10 @@ void DivDispatch::setSkipRegisterWrites(bool value) { skipRegisterWrites=value; } +void DivDispatch::notifyInsDeletion(void* ins) { + +} + void DivDispatch::forceIns() { }