summaryrefslogtreecommitdiff
path: root/vp9/common
diff options
context:
space:
mode:
authorJames Zern <jzern@google.com>2014-07-09 12:45:21 -0700
committerJames Zern <jzern@google.com>2014-07-10 12:20:54 -0700
commit8701ed0270dd8da44efff5e19f3b0b6d3cac5b8b (patch)
tree0ab28cafd5e4bd0bf646638ad2b587274ed03ef2 /vp9/common
parentf6bf614b2f77616e00d34a2503aa7d2bed4b61de (diff)
downloadlibvpx-8701ed0270dd8da44efff5e19f3b0b6d3cac5b8b.tar
libvpx-8701ed0270dd8da44efff5e19f3b0b6d3cac5b8b.tar.gz
libvpx-8701ed0270dd8da44efff5e19f3b0b6d3cac5b8b.tar.bz2
libvpx-8701ed0270dd8da44efff5e19f3b0b6d3cac5b8b.zip
update vp9_thread.c
pull the latest from libwebp. Original source: http://git.chromium.org/webm/libwebp.git 100644 blob 264210ba2807e4da47eb5d18c04cf869d89b9784 src/utils/thread.c commit 46fd44c1042c9903b2f1ab87e9f200a13c7e702d Author: James Zern <jzern@google.com> Date: Tue Jul 8 19:53:28 2014 -0700 thread: remove harmless race on status_ in End() if a thread was still doing work when End() was called there'd be a race on worker->status_. in these cases, however, the specific value is meaningless as it would be >= OK and the thread would have been shut down properly, but we'll check 'impl_' instead to avoid any potential TSan/DRD reports. Change-Id: Ib93cbc226a099f07761f7bad765549dffb8054b1 Change-Id: Ib0ef25737b3c6d017fa74822e21ed58508230b91
Diffstat (limited to 'vp9/common')
-rw-r--r--vp9/common/vp9_thread.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/vp9/common/vp9_thread.c b/vp9/common/vp9_thread.c
index 348bdf6db..1c6aec032 100644
--- a/vp9/common/vp9_thread.c
+++ b/vp9/common/vp9_thread.c
@@ -11,7 +11,7 @@
//
// Original source:
// http://git.chromium.org/webm/libwebp.git
-// 100644 blob 08ad4e1fecba302bf1247645e84a7d2779956bc3 src/utils/thread.c
+// 100644 blob 264210ba2807e4da47eb5d18c04cf869d89b9784 src/utils/thread.c
#include <assert.h>
#include <string.h> // for memset()
@@ -144,18 +144,19 @@ static void launch(VP9Worker *const worker) {
}
static void end(VP9Worker *const worker) {
- if (worker->status_ >= OK) {
#if CONFIG_MULTITHREAD
+ if (worker->impl_ != NULL) {
change_state(worker, NOT_OK);
pthread_join(worker->impl_->thread_, NULL);
pthread_mutex_destroy(&worker->impl_->mutex_);
pthread_cond_destroy(&worker->impl_->condition_);
+ vpx_free(worker->impl_);
+ worker->impl_ = NULL;
+ }
#else
- worker->status_ = NOT_OK;
+ worker->status_ = NOT_OK;
+ assert(worker->impl_ == NULL);
#endif
- }
- vpx_free(worker->impl_);
- worker->impl_ = NULL;
assert(worker->status_ == NOT_OK);
}