diff options
author | Chris Robinson <[email protected]> | 2020-01-11 15:10:54 -0800 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2020-01-11 15:10:54 -0800 |
commit | 6f1c853397ae7a29e064cebe4d8988f192a28946 (patch) | |
tree | 5fd89dc5511dd5832869ecc064052620a03d11ec /alc/uiddefs.cpp | |
parent | e6e2f509f871061ec917951fb77021856a9a0263 (diff) |
Don't allocate the ring buffer for JACK before activation
It seems the JACK server can send buffer size change events during device reset
and wait on it, which causes a failure since the change event can't be
processed during a reset. It's otherwise impossible to safely disable the
change event callback during a reset since the lock is already held and the
callback can be waiting to acquire it. The only guarantee we seem to have is
the event callback won't be invoked after jack_activate succeeds.
So instead, the buffer size can be queried after jack_activate and the ring
buffer allocated then, instead of using an event callback. This does mean the
buffer size can change with a start() call, but it's better than a failure to
start.
Diffstat (limited to 'alc/uiddefs.cpp')
0 files changed, 0 insertions, 0 deletions