summaryrefslogtreecommitdiff
path: root/libs/hwui/renderthread/CanvasContext.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/hwui/renderthread/CanvasContext.cpp')
-rw-r--r--libs/hwui/renderthread/CanvasContext.cpp25
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() {