Use the spinlock mutex in FilterPool
This commit is contained in:
parent
5928218b62
commit
76654d56ea
2 changed files with 4 additions and 3 deletions
|
|
@ -109,7 +109,7 @@ sfz::FilterPool::FilterPool(const MidiState& state, int numFilters)
|
||||||
|
|
||||||
sfz::FilterHolderPtr sfz::FilterPool::getFilter(const FilterDescription& description, unsigned numChannels, int noteNumber, float velocity)
|
sfz::FilterHolderPtr sfz::FilterPool::getFilter(const FilterDescription& description, unsigned numChannels, int noteNumber, float velocity)
|
||||||
{
|
{
|
||||||
const std::unique_lock<std::mutex> lock { filterGuard, std::try_to_lock };
|
const std::unique_lock<SpinMutex> lock { filterGuard, std::try_to_lock };
|
||||||
if (!lock.owns_lock())
|
if (!lock.owns_lock())
|
||||||
return {};
|
return {};
|
||||||
|
|
||||||
|
|
@ -133,7 +133,7 @@ size_t sfz::FilterPool::getActiveFilters() const
|
||||||
|
|
||||||
size_t sfz::FilterPool::setNumFilters(size_t numFilters)
|
size_t sfz::FilterPool::setNumFilters(size_t numFilters)
|
||||||
{
|
{
|
||||||
const std::lock_guard<std::mutex> filterLock { filterGuard };
|
const std::lock_guard<SpinMutex> filterLock { filterGuard };
|
||||||
|
|
||||||
swapAndPopAll(filters, [](sfz::FilterHolderPtr& filter) { return filter.use_count() == 1; });
|
swapAndPopAll(filters, [](sfz::FilterHolderPtr& filter) { return filter.use_count() == 1; });
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
#include "FilterDescription.h"
|
#include "FilterDescription.h"
|
||||||
#include "MidiState.h"
|
#include "MidiState.h"
|
||||||
#include "Defaults.h"
|
#include "Defaults.h"
|
||||||
|
#include "utility/SpinMutex.h"
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
|
|
@ -120,7 +121,7 @@ public:
|
||||||
*/
|
*/
|
||||||
void setSampleRate(float sampleRate);
|
void setSampleRate(float sampleRate);
|
||||||
private:
|
private:
|
||||||
std::mutex filterGuard;
|
SpinMutex filterGuard;
|
||||||
float sampleRate { config::defaultSampleRate };
|
float sampleRate { config::defaultSampleRate };
|
||||||
const MidiState& midiState;
|
const MidiState& midiState;
|
||||||
std::vector<FilterHolderPtr> filters;
|
std::vector<FilterHolderPtr> filters;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue