# HG changeset patch # User Chris Cannam # Date 1225217166 0 # Node ID 47b41ec34407b1764e4a2223b857b6eac7c6c4d0 # Parent 5015e80cc91945c816ce21ed7c18e494649d879e * Avoid waiting on uninstalled transforms mutex in TransformFactory:: getTransformInstallStatus -- we can return TransformUnknown * Don't follow link in SelectableLabel when clicking to select it * Restore lost version number in plugin param dialog diff -r 5015e80cc919 -r 47b41ec34407 plugin/DSSIPluginInstance.cpp --- a/plugin/DSSIPluginInstance.cpp Tue Oct 28 12:39:53 2008 +0000 +++ b/plugin/DSSIPluginInstance.cpp Tue Oct 28 18:06:06 2008 +0000 @@ -126,7 +126,7 @@ int DSSIPluginInstance::getPluginVersion() const { - return 1; + return -1; } std::string diff -r 5015e80cc919 -r 47b41ec34407 plugin/LADSPAPluginInstance.cpp --- a/plugin/LADSPAPluginInstance.cpp Tue Oct 28 12:39:53 2008 +0000 +++ b/plugin/LADSPAPluginInstance.cpp Tue Oct 28 18:06:06 2008 +0000 @@ -109,7 +109,7 @@ int LADSPAPluginInstance::getPluginVersion() const { - return 1; + return -1; } std::string diff -r 5015e80cc919 -r 47b41ec34407 transform/TransformFactory.cpp --- a/transform/TransformFactory.cpp Tue Oct 28 12:39:53 2008 +0000 +++ b/transform/TransformFactory.cpp Tue Oct 28 18:06:06 2008 +0000 @@ -134,14 +134,29 @@ TransformFactory::getTransformInstallStatus(TransformId id) { populateTransforms(); - populateUninstalledTransforms(); if (m_transforms.find(id) != m_transforms.end()) { return TransformInstalled; } + + if (!m_uninstalledTransformsMutex.tryLock()) { + // uninstalled transforms are being populated; this may take some time, + // and they aren't critical + return TransformUnknown; + } + + if (!m_uninstalledTransformsPopulated) { + m_uninstalledTransformsMutex.unlock(); + populateUninstalledTransforms(); + m_uninstalledTransformsMutex.lock(); + } + if (m_uninstalledTransforms.find(id) != m_uninstalledTransforms.end()) { return TransformNotInstalled; } + + m_uninstalledTransformsMutex.unlock(); + return TransformUnknown; }