diff options
Diffstat (limited to 'libs/hwui/renderthread/CanvasContext.cpp')
-rw-r--r-- | libs/hwui/renderthread/CanvasContext.cpp | 25 |
1 files changed, 5 insertions, 20 deletions
diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp index 091775dbe790..baa41c1ec698 100644 --- a/libs/hwui/renderthread/CanvasContext.cpp +++ b/libs/hwui/renderthread/CanvasContext.cpp @@ -27,8 +27,10 @@ #include "pipeline/skia/SkiaOpenGLPipeline.h" #include "pipeline/skia/SkiaPipeline.h" #include "pipeline/skia/SkiaVulkanPipeline.h" +#include "thread/CommonPool.h" #include "utils/GLUtils.h" #include "utils/TimeUtils.h" +#include "utils/TraceUtils.h" #include "../Properties.h" #include <cutils/properties.h> @@ -103,7 +105,7 @@ CanvasContext::CanvasContext(RenderThread& thread, bool translucent, RenderNode* , mOpaque(!translucent) , mAnimationContext(contextFactory->createAnimationContext(mRenderThread.timeLord())) , mJankTracker(&thread.globalProfileData(), thread.mainDisplayInfo()) - , mProfiler(mJankTracker.frames()) + , mProfiler(mJankTracker.frames(), thread.timeLord().frameIntervalNanos()) , mContentDrawBounds(0, 0, 0, 0) , mRenderPipeline(std::move(renderPipeline)) { rootRenderNode->makeRoot(); @@ -603,31 +605,14 @@ void CanvasContext::waitOnFences() { if (mFrameFences.size()) { ATRACE_CALL(); for (auto& fence : mFrameFences) { - fence->getResult(); + fence.get(); } mFrameFences.clear(); } } -class CanvasContext::FuncTaskProcessor : public TaskProcessor<bool> { -public: - explicit FuncTaskProcessor(TaskManager* taskManager) : TaskProcessor<bool>(taskManager) {} - - virtual void onProcess(const sp<Task<bool> >& task) override { - FuncTask* t = static_cast<FuncTask*>(task.get()); - t->func(); - task->setResult(true); - } -}; - void CanvasContext::enqueueFrameWork(std::function<void()>&& func) { - if (!mFrameWorkProcessor.get()) { - mFrameWorkProcessor = new FuncTaskProcessor(mRenderPipeline->getTaskManager()); - } - sp<FuncTask> task(new FuncTask()); - task->func = func; - mFrameFences.push_back(task); - mFrameWorkProcessor->add(task); + mFrameFences.push_back(CommonPool::async(std::move(func))); } int64_t CanvasContext::getFrameNumber() { |