Loading libs/hwui/PathCache.cpp +1 −3 Original line number Diff line number Diff line Loading @@ -446,9 +446,7 @@ void PathCache::precache(const SkPath* path, const SkPaint* paint) { if (mProcessor == nullptr) { mProcessor = new PathProcessor(Caches::getInstance()); } if (!mProcessor->add(task)) { mProcessor->process(task); } mProcessor->add(task); } } Loading libs/hwui/TessellationCache.cpp +2 −7 Original line number Diff line number Diff line Loading @@ -386,10 +386,7 @@ void TessellationCache::precacheShadows(const Matrix4* drawTransform, const Rect if (mShadowProcessor == nullptr) { mShadowProcessor = new ShadowProcessor(Caches::getInstance()); } if (!mShadowProcessor->add(task)) { mShadowProcessor->process(task); } mShadowProcessor->add(task); task->incStrong(nullptr); // not using sp<>s, so manually ref while in the cache mShadowCache.put(key, task.get()); } Loading Loading @@ -424,9 +421,7 @@ TessellationCache::Buffer* TessellationCache::getOrCreateBuffer( if (mProcessor == nullptr) { mProcessor = new TessellationProcessor(Caches::getInstance()); } if (!mProcessor->add(task)) { mProcessor->process(task); } mProcessor->add(task); mCache.put(entry, buffer); } return buffer; Loading libs/hwui/thread/TaskProcessor.h +12 −4 Original line number Diff line number Diff line Loading @@ -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()); Loading @@ -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); Loading Loading
libs/hwui/PathCache.cpp +1 −3 Original line number Diff line number Diff line Loading @@ -446,9 +446,7 @@ void PathCache::precache(const SkPath* path, const SkPaint* paint) { if (mProcessor == nullptr) { mProcessor = new PathProcessor(Caches::getInstance()); } if (!mProcessor->add(task)) { mProcessor->process(task); } mProcessor->add(task); } } Loading
libs/hwui/TessellationCache.cpp +2 −7 Original line number Diff line number Diff line Loading @@ -386,10 +386,7 @@ void TessellationCache::precacheShadows(const Matrix4* drawTransform, const Rect if (mShadowProcessor == nullptr) { mShadowProcessor = new ShadowProcessor(Caches::getInstance()); } if (!mShadowProcessor->add(task)) { mShadowProcessor->process(task); } mShadowProcessor->add(task); task->incStrong(nullptr); // not using sp<>s, so manually ref while in the cache mShadowCache.put(key, task.get()); } Loading Loading @@ -424,9 +421,7 @@ TessellationCache::Buffer* TessellationCache::getOrCreateBuffer( if (mProcessor == nullptr) { mProcessor = new TessellationProcessor(Caches::getInstance()); } if (!mProcessor->add(task)) { mProcessor->process(task); } mProcessor->add(task); mCache.put(entry, buffer); } return buffer; Loading
libs/hwui/thread/TaskProcessor.h +12 −4 Original line number Diff line number Diff line Loading @@ -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()); Loading @@ -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); Loading