Loading libs/hwui/PathCache.cpp +3 −1 Original line number Diff line number Diff line Loading @@ -493,7 +493,9 @@ void PathCache::precache(const SkPath* path, const SkPaint* paint) { if (mProcessor == NULL) { mProcessor = new PathProcessor(Caches::getInstance()); } mProcessor->add(task); if (!mProcessor->add(task)) { mProcessor->process(task); } } } Loading libs/hwui/TessellationCache.cpp +6 −2 Original line number Diff line number Diff line Loading @@ -385,7 +385,9 @@ void TessellationCache::precacheShadows(const Matrix4* drawTransform, const Rect if (mShadowProcessor == NULL) { mShadowProcessor = new ShadowProcessor(Caches::getInstance()); } mShadowProcessor->add(task); if (!mShadowProcessor->add(task)) { mShadowProcessor->process(task); } task->incStrong(NULL); // not using sp<>s, so manually ref while in the cache mShadowCache.put(key, task.get()); Loading Loading @@ -421,7 +423,9 @@ TessellationCache::Buffer* TessellationCache::getOrCreateBuffer( if (mProcessor == NULL) { mProcessor = new TessellationProcessor(Caches::getInstance()); } mProcessor->add(task); if (!mProcessor->add(task)) { mProcessor->process(task); } mCache.put(entry, buffer); } return buffer; Loading libs/hwui/thread/TaskManager.cpp +2 −4 Original line number Diff line number Diff line Loading @@ -105,6 +105,8 @@ bool TaskManager::WorkerThread::threadLoop() { bool TaskManager::WorkerThread::addTask(TaskWrapper task) { if (!isRunning()) { run(mName.string(), PRIORITY_DEFAULT); } else if (exitPending()) { return false; } Mutex::Autolock l(mLock); Loading @@ -120,10 +122,6 @@ size_t TaskManager::WorkerThread::getTaskCount() const { } void TaskManager::WorkerThread::exit() { { Mutex::Autolock l(mLock); mTasks.clear(); } requestExit(); mSignal.signal(); } Loading libs/hwui/thread/TaskProcessor.h +2 −6 Original line number Diff line number Diff line Loading @@ -30,9 +30,6 @@ public: TaskProcessorBase() { } virtual ~TaskProcessorBase() { }; private: friend class TaskManager; virtual void process(const sp<TaskBase>& task) = 0; }; Loading @@ -44,9 +41,6 @@ public: bool add(const sp<Task<T> >& task); virtual void onProcess(const sp<Task<T> >& task) = 0; private: virtual void process(const sp<TaskBase>& task) { sp<Task<T> > realTask = static_cast<Task<T>* >(task.get()); // This is the right way to do it but sp<> doesn't play nice Loading @@ -54,6 +48,8 @@ private: onProcess(realTask); } virtual void onProcess(const sp<Task<T> >& task) = 0; TaskManager* mManager; }; Loading Loading
libs/hwui/PathCache.cpp +3 −1 Original line number Diff line number Diff line Loading @@ -493,7 +493,9 @@ void PathCache::precache(const SkPath* path, const SkPaint* paint) { if (mProcessor == NULL) { mProcessor = new PathProcessor(Caches::getInstance()); } mProcessor->add(task); if (!mProcessor->add(task)) { mProcessor->process(task); } } } Loading
libs/hwui/TessellationCache.cpp +6 −2 Original line number Diff line number Diff line Loading @@ -385,7 +385,9 @@ void TessellationCache::precacheShadows(const Matrix4* drawTransform, const Rect if (mShadowProcessor == NULL) { mShadowProcessor = new ShadowProcessor(Caches::getInstance()); } mShadowProcessor->add(task); if (!mShadowProcessor->add(task)) { mShadowProcessor->process(task); } task->incStrong(NULL); // not using sp<>s, so manually ref while in the cache mShadowCache.put(key, task.get()); Loading Loading @@ -421,7 +423,9 @@ TessellationCache::Buffer* TessellationCache::getOrCreateBuffer( if (mProcessor == NULL) { mProcessor = new TessellationProcessor(Caches::getInstance()); } mProcessor->add(task); if (!mProcessor->add(task)) { mProcessor->process(task); } mCache.put(entry, buffer); } return buffer; Loading
libs/hwui/thread/TaskManager.cpp +2 −4 Original line number Diff line number Diff line Loading @@ -105,6 +105,8 @@ bool TaskManager::WorkerThread::threadLoop() { bool TaskManager::WorkerThread::addTask(TaskWrapper task) { if (!isRunning()) { run(mName.string(), PRIORITY_DEFAULT); } else if (exitPending()) { return false; } Mutex::Autolock l(mLock); Loading @@ -120,10 +122,6 @@ size_t TaskManager::WorkerThread::getTaskCount() const { } void TaskManager::WorkerThread::exit() { { Mutex::Autolock l(mLock); mTasks.clear(); } requestExit(); mSignal.signal(); } Loading
libs/hwui/thread/TaskProcessor.h +2 −6 Original line number Diff line number Diff line Loading @@ -30,9 +30,6 @@ public: TaskProcessorBase() { } virtual ~TaskProcessorBase() { }; private: friend class TaskManager; virtual void process(const sp<TaskBase>& task) = 0; }; Loading @@ -44,9 +41,6 @@ public: bool add(const sp<Task<T> >& task); virtual void onProcess(const sp<Task<T> >& task) = 0; private: virtual void process(const sp<TaskBase>& task) { sp<Task<T> > realTask = static_cast<Task<T>* >(task.get()); // This is the right way to do it but sp<> doesn't play nice Loading @@ -54,6 +48,8 @@ private: onProcess(realTask); } virtual void onProcess(const sp<Task<T> >& task) = 0; TaskManager* mManager; }; Loading