glib uses TryEnterCriticalSection on windows which will return true
if the lock as able to be locked *or* is already locked by the current
thread.
int
IO::ensure_ports_locked (ChanCount count, bool clear, bool& changed)
{
int
IO::ensure_ports_locked (ChanCount count, bool clear, bool& changed)
{
assert (!AudioEngine::instance()->process_lock().trylock());
assert (!AudioEngine::instance()->process_lock().trylock());
boost::shared_ptr<Port> port;
boost::shared_ptr<Port> port;
int
IO::ensure_ports (ChanCount count, bool clear, void* src)
{
int
IO::ensure_ports (ChanCount count, bool clear, void* src)
{
assert (!AudioEngine::instance()->process_lock().trylock());
assert (!AudioEngine::instance()->process_lock().trylock());
int
IO::ensure_io (ChanCount count, bool clear, void* src)
{
int
IO::ensure_io (ChanCount count, bool clear, void* src)
{
assert (!AudioEngine::instance()->process_lock().trylock());
assert (!AudioEngine::instance()->process_lock().trylock());
return ensure_ports (count, clear, src);
}
return ensure_ports (count, clear, src);
}
bool
PortInsert::configure_io (ChanCount in, ChanCount out)
{
bool
PortInsert::configure_io (ChanCount in, ChanCount out)
{
assert (!AudioEngine::instance()->process_lock().trylock());
assert (!AudioEngine::instance()->process_lock().trylock());
/* for an insert, processor input corresponds to IO output, and vice versa */
/* for an insert, processor input corresponds to IO output, and vice versa */
int
Route::configure_processors (ProcessorStreams* err)
{
int
Route::configure_processors (ProcessorStreams* err)
{
assert (!AudioEngine::instance()->process_lock().trylock());
assert (!AudioEngine::instance()->process_lock().trylock());
if (!_in_configure_processors) {
Glib::Threads::RWLock::WriterLock lm (_processor_lock);
if (!_in_configure_processors) {
Glib::Threads::RWLock::WriterLock lm (_processor_lock);
int
Route::configure_processors_unlocked (ProcessorStreams* err)
{
int
Route::configure_processors_unlocked (ProcessorStreams* err)
{
assert (!AudioEngine::instance()->process_lock().trylock());
assert (!AudioEngine::instance()->process_lock().trylock());
if (_in_configure_processors) {
return 0;
if (_in_configure_processors) {
return 0;