Merge "Fix flicker from multiwindow resize" into oc-mr1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
facdce3ab2
@@ -162,8 +162,8 @@ public:
|
||||
void addRenderNode(RenderNode* node, bool placeFront);
|
||||
void removeRenderNode(RenderNode* node);
|
||||
|
||||
void setContentDrawBounds(int left, int top, int right, int bottom) {
|
||||
mContentDrawBounds.set(left, top, right, bottom);
|
||||
void setContentDrawBounds(const Rect& bounds) {
|
||||
mContentDrawBounds = bounds;
|
||||
}
|
||||
|
||||
RenderState& getRenderState() {
|
||||
|
||||
@@ -32,6 +32,7 @@ namespace renderthread {
|
||||
DrawFrameTask::DrawFrameTask()
|
||||
: mRenderThread(nullptr)
|
||||
, mContext(nullptr)
|
||||
, mContentDrawBounds(0, 0, 0, 0)
|
||||
, mSyncResult(SyncResult::OK) {
|
||||
}
|
||||
|
||||
@@ -123,6 +124,7 @@ bool DrawFrameTask::syncFrameState(TreeInfo& info) {
|
||||
mLayers[i]->apply();
|
||||
}
|
||||
mLayers.clear();
|
||||
mContext->setContentDrawBounds(mContentDrawBounds);
|
||||
mContext->prepareTree(info, mFrameInfo, mSyncQueued, mTargetNode);
|
||||
|
||||
// This is after the prepareTree so that any pending operations
|
||||
|
||||
@@ -61,6 +61,9 @@ public:
|
||||
virtual ~DrawFrameTask();
|
||||
|
||||
void setContext(RenderThread* thread, CanvasContext* context, RenderNode* targetNode);
|
||||
void setContentDrawBounds(int left, int top, int right, int bottom) {
|
||||
mContentDrawBounds.set(left, top, right, bottom);
|
||||
}
|
||||
|
||||
void pushLayerUpdate(DeferredLayerUpdater* layer);
|
||||
void removeLayerUpdate(DeferredLayerUpdater* layer);
|
||||
@@ -82,6 +85,7 @@ private:
|
||||
RenderThread* mRenderThread;
|
||||
CanvasContext* mContext;
|
||||
RenderNode* mTargetNode = nullptr;
|
||||
Rect mContentDrawBounds;
|
||||
|
||||
/*********************************************
|
||||
* Single frame data
|
||||
|
||||
@@ -551,20 +551,8 @@ void RenderProxy::drawRenderNode(RenderNode* node) {
|
||||
staticPostAndWait(task);
|
||||
}
|
||||
|
||||
CREATE_BRIDGE5(setContentDrawBounds, CanvasContext* context, int left, int top,
|
||||
int right, int bottom) {
|
||||
args->context->setContentDrawBounds(args->left, args->top, args->right, args->bottom);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void RenderProxy::setContentDrawBounds(int left, int top, int right, int bottom) {
|
||||
SETUP_TASK(setContentDrawBounds);
|
||||
args->context = mContext;
|
||||
args->left = left;
|
||||
args->top = top;
|
||||
args->right = right;
|
||||
args->bottom = bottom;
|
||||
staticPostAndWait(task);
|
||||
mDrawFrameTask.setContentDrawBounds(left, top, right, bottom);
|
||||
}
|
||||
|
||||
CREATE_BRIDGE1(serializeDisplayListTree, CanvasContext* context) {
|
||||
|
||||
Reference in New Issue
Block a user