1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-02-02 03:20:06 +00:00

AAX: Fixed an issue where an AAX plug-in would hit an internal ProTool assertion if it had meters (and no sidechain)

This commit is contained in:
hogliux 2017-07-06 15:24:56 +01:00
parent 66fa7e7411
commit ab13359c66

View file

@ -301,9 +301,10 @@ namespace AAXClasses
PluginInstanceInfo* pluginInstance;
int32_t* isPrepared;
int32_t* sideChainBuffers;
float* const* meterTapBuffers;
int32_t* sideChainBuffers;
};
struct JUCEAlgorithmIDs
@ -326,9 +327,9 @@ namespace AAXClasses
pluginInstance = AAX_FIELD_INDEX (JUCEAlgorithmContext, pluginInstance),
preparedFlag = AAX_FIELD_INDEX (JUCEAlgorithmContext, isPrepared),
sideChainBuffers = AAX_FIELD_INDEX (JUCEAlgorithmContext, sideChainBuffers),
meterTapBuffers = AAX_FIELD_INDEX (JUCEAlgorithmContext, meterTapBuffers),
meterTapBuffers = AAX_FIELD_INDEX (JUCEAlgorithmContext, meterTapBuffers)
sideChainBuffers = AAX_FIELD_INDEX (JUCEAlgorithmContext, sideChainBuffers)
};
};
@ -697,6 +698,20 @@ namespace AAXClasses
break;
}
case JUCEAlgorithmIDs::meterTapBuffers:
{
// this is a dummy field only when there are no aaxMeters
jassert (aaxMeters.size() == 0);
{
const size_t numObjects = dataSize / sizeof (float*);
float** const objects = static_cast<float**> (data);
for (size_t i = 0; i < numObjects; ++i)
new (objects + i) (float*) (nullptr);
}
break;
}
}
return AAX_SUCCESS;
@ -1772,6 +1787,12 @@ namespace AAXClasses
check (desc.AddMeters (JUCEAlgorithmIDs::meterTapBuffers, meterIDs.getData(), static_cast<uint32_t> (numMeters)));
}
else
{
// AAX does not allow there to be any gaps in the fields of the algorithm context structure
// so just add a dummy one here if there aren't any meters
check (desc.AddPrivateData (JUCEAlgorithmIDs::meterTapBuffers, sizeof (uintptr_t)));
}
// Create a property map
AAX_IPropertyMap* const properties = desc.NewPropertyMap();