diff --git a/modules/juce_blocks_basics/blocks/juce_Block.h b/modules/juce_blocks_basics/blocks/juce_Block.h index 38a6c763fb..ff44d3f18e 100644 --- a/modules/juce_blocks_basics/blocks/juce_Block.h +++ b/modules/juce_blocks_basics/blocks/juce_Block.h @@ -304,6 +304,9 @@ public: /** Sets the current program as the block's default state. */ virtual void saveProgramAsDefault() = 0; + /** Resets the loaded program to the block's default state. */ + virtual void resetProgramToDefault() = 0; + //============================================================================== /** Metadata for a given config item */ struct ConfigMetaData diff --git a/modules/juce_blocks_basics/topology/internal/juce_BlockImplementation.cpp b/modules/juce_blocks_basics/topology/internal/juce_BlockImplementation.cpp index 7eda9cfb2a..7062bce542 100644 --- a/modules/juce_blocks_basics/topology/internal/juce_BlockImplementation.cpp +++ b/modules/juce_blocks_basics/topology/internal/juce_BlockImplementation.cpp @@ -347,6 +347,15 @@ public: doSaveProgramAsDefault(); } + void resetProgramToDefault() override + { + if (! shouldSaveProgramAsDefault) + setProgram (nullptr); + + sendCommandMessage (BlocksProtocol::endAPIMode); + sendCommandMessage (BlocksProtocol::beginAPIMode); + } + uint32 getMemorySize() override { return modelData.programAndHeapSize;