From d38cf1f6794901b57cacce53afeb9c5c8bd1a447 Mon Sep 17 00:00:00 2001 From: Mike Toon Date: Mon, 9 Mar 2020 17:25:16 +0000 Subject: [PATCH] BLOCKS: Prevent ConfigMetaData having incorrect default index of 0 --- modules/juce_blocks_basics/blocks/juce_Block.h | 4 +++- modules/juce_blocks_basics/blocks/juce_BlockConfigManager.h | 2 +- .../topology/internal/juce_BlockImplementation.cpp | 3 ++- .../juce_blocks_basics/topology/internal/juce_Detector.cpp | 2 +- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/modules/juce_blocks_basics/blocks/juce_Block.h b/modules/juce_blocks_basics/blocks/juce_Block.h index 8e86641c56..8a539301dd 100644 --- a/modules/juce_blocks_basics/blocks/juce_Block.h +++ b/modules/juce_blocks_basics/blocks/juce_Block.h @@ -366,7 +366,9 @@ public: options }; - ConfigMetaData() = default; + ConfigMetaData (uint32 itemIndex) + : item (itemIndex) + {} // Constructor to work around VS2015 bugs... ConfigMetaData (uint32 itemIndex, diff --git a/modules/juce_blocks_basics/blocks/juce_BlockConfigManager.h b/modules/juce_blocks_basics/blocks/juce_BlockConfigManager.h index b314ce8ef1..2bdfa02b57 100644 --- a/modules/juce_blocks_basics/blocks/juce_BlockConfigManager.h +++ b/modules/juce_blocks_basics/blocks/juce_BlockConfigManager.h @@ -279,7 +279,7 @@ struct BlockConfigManager if (getIndexForItem (item, itemIndex)) return configList[itemIndex].toConfigMetaData(); - return {}; + return { static_cast (item) }; } void resetConfigListActiveStatus() diff --git a/modules/juce_blocks_basics/topology/internal/juce_BlockImplementation.cpp b/modules/juce_blocks_basics/topology/internal/juce_BlockImplementation.cpp index 807072fcf3..8488c074da 100644 --- a/modules/juce_blocks_basics/topology/internal/juce_BlockImplementation.cpp +++ b/modules/juce_blocks_basics/topology/internal/juce_BlockImplementation.cpp @@ -334,7 +334,8 @@ public: this->resetConfigListActiveStatus(); - handleConfigItemChanged ({}, getMaxConfigIndex()); + const auto legacyProgramChangeConfigIndex = getMaxConfigIndex(); + handleConfigItemChanged ({ legacyProgramChangeConfigIndex }, legacyProgramChangeConfigIndex); shouldSaveProgramAsDefault = persistency == ProgramPersistency::setAsDefault; startTimer (20); diff --git a/modules/juce_blocks_basics/topology/internal/juce_Detector.cpp b/modules/juce_blocks_basics/topology/internal/juce_Detector.cpp index c4ec1c18f3..8cf8de2c03 100644 --- a/modules/juce_blocks_basics/topology/internal/juce_Detector.cpp +++ b/modules/juce_blocks_basics/topology/internal/juce_Detector.cpp @@ -291,7 +291,7 @@ struct Detector : public ReferenceCountedObject, void notifyBlockOfConfigChange (BlockImpl& bi, uint32 item) { if (item >= bi.getMaxConfigIndex()) - bi.handleConfigItemChanged ({}, item); + bi.handleConfigItemChanged ({ item }, item); else bi.handleConfigItemChanged (bi.getLocalConfigMetaData (item), item); }