diff options
author | Tom Cherry <tomcherry@google.com> | 2017-02-28 14:07:09 -0800 |
---|---|---|
committer | Tom Cherry <tomcherry@google.com> | 2017-02-28 14:19:44 -0800 |
commit | 298a146754e35cbc650aa991ebff1a41eefdbe80 (patch) | |
tree | 8c1c847d9c42f13460e3d09e84435f9d4ce2195e /libs/hwui/renderthread/RenderTask.h | |
parent | 3e64003641c376573f4809aae79febd0187be81e (diff) |
Check for spurious wake ups
Condition::wait() can spuriously wake up, so we must guard it with
another check to ensure that a given wake was truly due to having
been signaled.
Bug: 34592766
Test: Boot bullhead
Change-Id: Iaa5a0ca6186aea50c51e2c402ef95d7ba861be92
Diffstat (limited to 'libs/hwui/renderthread/RenderTask.h')
-rw-r--r-- | libs/hwui/renderthread/RenderTask.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/libs/hwui/renderthread/RenderTask.h b/libs/hwui/renderthread/RenderTask.h index 9ea671be5b86..a7acf91cbdb1 100644 --- a/libs/hwui/renderthread/RenderTask.h +++ b/libs/hwui/renderthread/RenderTask.h @@ -60,13 +60,15 @@ class SignalingRenderTask : public RenderTask { public: // Takes ownership of task, caller owns lock and signal SignalingRenderTask(RenderTask* task, Mutex* lock, Condition* signal) - : mTask(task), mLock(lock), mSignal(signal) {} + : mTask(task), mLock(lock), mSignal(signal), mHasRun(false) {} virtual void run() override; + bool hasRun() const { return mHasRun; } private: RenderTask* mTask; Mutex* mLock; Condition* mSignal; + bool mHasRun; }; typedef void* (*RunnableMethod)(void* data); |