diff options
author | volzhs <volzhs@gmail.com> | 2019-10-27 21:29:43 +0900 |
---|---|---|
committer | volzhs <volzhs@gmail.com> | 2019-10-27 21:29:43 +0900 |
commit | 074d421dca94ec4ddadfbfa62268bda219bab46c (patch) | |
tree | acec76662c787a9275c04d437fd463734ae5d4dd /thirdparty/libwebp/src/utils/thread_utils.c | |
parent | 9e572b5bacdaeb5079415d276bbf5b8462cac9e3 (diff) | |
download | redot-engine-074d421dca94ec4ddadfbfa62268bda219bab46c.tar.gz |
Update libwebp to 1.0.3
Diffstat (limited to 'thirdparty/libwebp/src/utils/thread_utils.c')
-rw-r--r-- | thirdparty/libwebp/src/utils/thread_utils.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/thirdparty/libwebp/src/utils/thread_utils.c b/thirdparty/libwebp/src/utils/thread_utils.c index 2052b6b006..438296b45f 100644 --- a/thirdparty/libwebp/src/utils/thread_utils.c +++ b/thirdparty/libwebp/src/utils/thread_utils.c @@ -217,8 +217,12 @@ static THREADFN ThreadLoop(void* ptr) { done = 1; } // signal to the main thread that we're done (for Sync()) - pthread_cond_signal(&impl->condition_); + // Note the associated mutex does not need to be held when signaling the + // condition. Unlocking the mutex first may improve performance in some + // implementations, avoiding the case where the waiting thread can't + // reacquire the mutex when woken. pthread_mutex_unlock(&impl->mutex_); + pthread_cond_signal(&impl->condition_); } return THREAD_RETURN(NULL); // Thread is finished } @@ -240,7 +244,13 @@ static void ChangeState(WebPWorker* const worker, WebPWorkerStatus new_status) { // assign new status and release the working thread if needed if (new_status != OK) { worker->status_ = new_status; + // Note the associated mutex does not need to be held when signaling the + // condition. Unlocking the mutex first may improve performance in some + // implementations, avoiding the case where the waiting thread can't + // reacquire the mutex when woken. + pthread_mutex_unlock(&impl->mutex_); pthread_cond_signal(&impl->condition_); + return; } } pthread_mutex_unlock(&impl->mutex_); |