fix hang in AudioDevice

This commit is contained in:
oltolm 2024-03-28 21:37:31 +01:00 committed by Vicki Pfau
parent d1a6e6b747
commit 4bd09bdac2
2 changed files with 7 additions and 2 deletions

View File

@ -64,11 +64,15 @@ qint64 AudioDevice::writeData(const char*, qint64) {
} }
bool AudioDevice::atEnd() const { bool AudioDevice::atEnd() const {
return !bytesAvailable();
}
qint64 AudioDevice::bytesAvailable() const {
if (!m_context->core) { if (!m_context->core) {
return true; return true;
} }
mCoreSyncLockAudio(&m_context->impl->sync); mCoreSyncLockAudio(&m_context->impl->sync);
bool available = blip_samples_avail(m_context->core->getAudioChannel(m_context->core, 0)) == 0; int available = blip_samples_avail(m_context->core->getAudioChannel(m_context->core, 0));
mCoreSyncUnlockAudio(&m_context->impl->sync); mCoreSyncUnlockAudio(&m_context->impl->sync);
return available; return available * sizeof(mStereoSample);
} }

View File

@ -21,6 +21,7 @@ public:
void setInput(mCoreThread* input); void setInput(mCoreThread* input);
void setFormat(const QAudioFormat& format); void setFormat(const QAudioFormat& format);
bool atEnd() const override; bool atEnd() const override;
qint64 bytesAvailable() const override;
protected: protected:
virtual qint64 readData(char* data, qint64 maxSize) override; virtual qint64 readData(char* data, qint64 maxSize) override;