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