diff options
author | Martijn van Beurden <mvanb1@gmail.com> | 2023-07-25 11:03:23 +0200 |
---|---|---|
committer | Martijn van Beurden <mvanb1@gmail.com> | 2023-09-22 21:10:15 +0200 |
commit | bcc37540aa8a627cf8b26cffb73040b19b9fff27 (patch) | |
tree | 1ccd27cb2fe6e4c1199e60859758cafb357a8cdb | |
parent | c4cddca3351ea96c9b426c5c1cbcdfdae04223f1 (diff) | |
download | flac-bcc37540aa8a627cf8b26cffb73040b19b9fff27.tar.gz |
Fix threads busy waiting for MD5
-rw-r--r-- | src/libFLAC/stream_encoder.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/libFLAC/stream_encoder.c b/src/libFLAC/stream_encoder.c index 0f39c3fe..025dc18e 100644 --- a/src/libFLAC/stream_encoder.c +++ b/src/libFLAC/stream_encoder.c @@ -3557,6 +3557,7 @@ void * process_frame_thread_(void * args) { pthread_cond_wait(&encoder->private_->cond_work_available, &encoder->private_->mutex_work_queue); } if(encoder->private_->md5_work_available && pthread_mutex_trylock(&encoder->private_->mutex_md5_active) == 0) { + encoder->private_->md5_work_available = false; if(encoder->protected_->do_md5) { uint32_t length = 0; pthread_mutex_lock(&encoder->private_->mutex_md5_fifo); @@ -3574,8 +3575,8 @@ void * process_frame_thread_(void * args) { memmove(&encoder->private_->md5_fifo.data[channel][0], &encoder->private_->md5_fifo.data[channel][length], encoder->private_->md5_fifo.tail * sizeof(encoder->private_->md5_fifo.data[0][0])); pthread_mutex_lock(&encoder->private_->mutex_work_queue); pthread_cond_signal(&encoder->private_->cond_md5_emptied); + encoder->private_->md5_work_available = false; } - encoder->private_->md5_work_available = false; pthread_mutex_unlock(&encoder->private_->mutex_work_queue); pthread_mutex_unlock(&encoder->private_->mutex_md5_fifo); pthread_mutex_unlock(&encoder->private_->mutex_md5_active); |