Merge "Create HintSessionWrapper right after CanvasContext"
This commit is contained in:
@@ -180,8 +180,6 @@ void CanvasContext::setSurface(ANativeWindow* window, bool enableTimeout) {
|
||||
ATRACE_CALL();
|
||||
|
||||
if (window) {
|
||||
// Ensure the hint session is running here, away from any critical paths
|
||||
mHintSessionWrapper.init();
|
||||
mNativeSurface = std::make_unique<ReliableSurface>(window);
|
||||
mNativeSurface->init();
|
||||
if (enableTimeout) {
|
||||
@@ -1050,6 +1048,10 @@ void CanvasContext::setSyncDelayDuration(nsecs_t duration) {
|
||||
mSyncDelayDuration = duration;
|
||||
}
|
||||
|
||||
void CanvasContext::startHintSession() {
|
||||
mHintSessionWrapper.init();
|
||||
}
|
||||
|
||||
} /* namespace renderthread */
|
||||
} /* namespace uirenderer */
|
||||
} /* namespace android */
|
||||
|
||||
@@ -224,6 +224,8 @@ public:
|
||||
|
||||
void setSyncDelayDuration(nsecs_t duration);
|
||||
|
||||
void startHintSession();
|
||||
|
||||
private:
|
||||
CanvasContext(RenderThread& thread, bool translucent, RenderNode* rootRenderNode,
|
||||
IContextFactory* contextFactory, std::unique_ptr<IRenderPipeline> renderPipeline,
|
||||
|
||||
@@ -45,8 +45,12 @@ RenderProxy::RenderProxy(bool translucent, RenderNode* rootRenderNode,
|
||||
pid_t uiThreadId = pthread_gettid_np(pthread_self());
|
||||
pid_t renderThreadId = getRenderThreadTid();
|
||||
mContext = mRenderThread.queue().runSync([=, this]() -> CanvasContext* {
|
||||
return CanvasContext::create(mRenderThread, translucent, rootRenderNode, contextFactory,
|
||||
uiThreadId, renderThreadId);
|
||||
CanvasContext* context = CanvasContext::create(mRenderThread, translucent, rootRenderNode,
|
||||
contextFactory, uiThreadId, renderThreadId);
|
||||
if (context != nullptr) {
|
||||
mRenderThread.queue().post([=] { context->startHintSession(); });
|
||||
}
|
||||
return context;
|
||||
});
|
||||
mDrawFrameTask.setContext(&mRenderThread, mContext, rootRenderNode);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user