From 60017ae6e3eb0f76e808db73f8f1449f991debdb Mon Sep 17 00:00:00 2001 From: Tobias Doerffel Date: Mon, 3 Dec 2012 00:07:56 +0100 Subject: [PATCH] RemoteVstPlugin: decreased locking overhead in getParameterDump() --- plugins/vst_base/RemoteVstPlugin.cpp | 31 ++++++++++++++++------------ 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/plugins/vst_base/RemoteVstPlugin.cpp b/plugins/vst_base/RemoteVstPlugin.cpp index f88448e2f..aaae0c270 100644 --- a/plugins/vst_base/RemoteVstPlugin.cpp +++ b/plugins/vst_base/RemoteVstPlugin.cpp @@ -834,21 +834,26 @@ void RemoteVstPlugin::sendCurrentProgramName() void RemoteVstPlugin::getParameterDump() { - //VstParameterProperties vst_props; - message m( IdVstParameterDump ); - m.addInt( m_plugin->numParams ); - for( int i = 0; i < m_plugin->numParams; ++i ) - { + lock(); + + message m( IdVstParameterDump ); + m.addInt( m_plugin->numParams ); + + for( int i = 0; i < m_plugin->numParams; ++i ) + { char paramName[32]; - pluginDispatch( effGetParamName, i, 0, paramName ); - paramName[31] = 0; - m.addInt( i ); + memset( paramName, 0, sizeof( paramName ) ); + pluginDispatchNoLocking( effGetParamName, i, 0, paramName ); + paramName[sizeof(paramName)-1] = 0; + + m.addInt( i ); m.addString( paramName ); - lock(); - m.addFloat( m_plugin->getParameter( m_plugin, i ) ); - unlock(); - } - sendMessage( m ); + m.addFloat( m_plugin->getParameter( m_plugin, i ) ); + } + + unlock(); + + sendMessage( m ); }