]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/pthread_slice.c
ffmpeg: notify when the thread message queue blocks.
[ffmpeg] / libavcodec / pthread_slice.c
index b948e16d24ac001d9ed4c61bacbddf4516ea8b68..c8e69f0a9a52bb97a0e92cdad7604b0d13d35108 100644 (file)
@@ -112,14 +112,26 @@ void ff_slice_thread_free(AVCodecContext *avctx)
     pthread_mutex_lock(&c->current_job_lock);
     c->done = 1;
     pthread_cond_broadcast(&c->current_job_cond);
+    for (i = 0; i < c->thread_count; i++)
+        pthread_cond_broadcast(&c->progress_cond[i]);
     pthread_mutex_unlock(&c->current_job_lock);
 
     for (i=0; i<avctx->thread_count; i++)
          pthread_join(c->workers[i], NULL);
 
+    for (i = 0; i < c->thread_count; i++) {
+        pthread_mutex_destroy(&c->progress_mutex[i]);
+        pthread_cond_destroy(&c->progress_cond[i]);
+    }
+
     pthread_mutex_destroy(&c->current_job_lock);
     pthread_cond_destroy(&c->current_job_cond);
     pthread_cond_destroy(&c->last_job_cond);
+
+    av_freep(&c->entries);
+    av_freep(&c->progress_mutex);
+    av_freep(&c->progress_cond);
+
     av_freep(&c->workers);
     av_freep(&avctx->internal->thread_ctx);
 }