summaryrefslogtreecommitdiff
path: root/libs/hwui/thread
diff options
context:
space:
mode:
authorChris Craik <ccraik@google.com>2015-04-20 14:54:49 -0700
committerChris Craik <ccraik@google.com>2015-04-20 14:54:49 -0700
commitdee66b6d99dec8bc97843542d5388e50ebd0f6ee (patch)
treeb11d6264cd3fa93e6f7ba9806642109facd233d5 /libs/hwui/thread
parent19f1faa376c08edbd2c7e19ad33107e1b9520777 (diff)
Simplify TaskManager fallback path
Change-Id: Ie3833449f7fe6aa69b9f71eb8bab1bef0fe434aa
Diffstat (limited to 'libs/hwui/thread')
-rw-r--r--libs/hwui/thread/TaskProcessor.h16
1 files changed, 12 insertions, 4 deletions
diff --git a/libs/hwui/thread/TaskProcessor.h b/libs/hwui/thread/TaskProcessor.h
index ec6519cf85ad..82538e9c7342 100644
--- a/libs/hwui/thread/TaskProcessor.h
+++ b/libs/hwui/thread/TaskProcessor.h
@@ -39,7 +39,17 @@ public:
TaskProcessor(TaskManager* manager): mManager(manager) { }
virtual ~TaskProcessor() { }
- bool add(const sp<Task<T> >& task);
+ void add(const sp<Task<T> >& task) {
+ if (!addImpl(task)) {
+ // fall back to immediate execution
+ process(task);
+ }
+ }
+
+ virtual void onProcess(const sp<Task<T> >& task) = 0;
+
+private:
+ bool addImpl(const sp<Task<T> >& task);
virtual void process(const sp<TaskBase>& task) override {
sp<Task<T> > realTask = static_cast<Task<T>* >(task.get());
@@ -48,13 +58,11 @@ public:
onProcess(realTask);
}
- virtual void onProcess(const sp<Task<T> >& task) = 0;
-
TaskManager* mManager;
};
template<typename T>
-bool TaskProcessor<T>::add(const sp<Task<T> >& task) {
+bool TaskProcessor<T>::addImpl(const sp<Task<T> >& task) {
if (mManager) {
sp<TaskProcessor<T> > self(this);
return mManager->addTask(task, self);