diff options
author | John Reck <jreck@google.com> | 2016-03-22 16:01:08 -0700 |
---|---|---|
committer | John Reck <jreck@google.com> | 2016-03-23 07:59:10 -0700 |
commit | 417ed6d4337e5409d52f58cc93677c8715193f32 (patch) | |
tree | e209754dcabdc52f6cae49fa78b42fd9e7241801 /libs/hwui/RecordingCanvas.cpp | |
parent | df1e2b1457690ccbd1302078cedafbfbb8918265 (diff) |
Fix missing first frame
Bug: 26776366
Change-Id: I46258c0ff35fdefe5c9f2ee610c904b2dbe8c5d9
Diffstat (limited to 'libs/hwui/RecordingCanvas.cpp')
-rw-r--r-- | libs/hwui/RecordingCanvas.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/libs/hwui/RecordingCanvas.cpp b/libs/hwui/RecordingCanvas.cpp index cf78781e8f81..4eeadb7ad30f 100644 --- a/libs/hwui/RecordingCanvas.cpp +++ b/libs/hwui/RecordingCanvas.cpp @@ -574,15 +574,19 @@ void RecordingCanvas::drawLayer(DeferredLayerUpdater* layerHandle) { // We ref the DeferredLayerUpdater due to its thread-safe ref-counting semantics. mDisplayList->ref(layerHandle); - Layer* layer = layerHandle->backingLayer(); + // Note that the backing layer has *not* yet been updated, so don't trust + // its width, height, transform, etc...! Matrix4 totalTransform(*(mState.currentSnapshot()->transform)); - totalTransform.multiply(layer->getTransform()); + if (layerHandle->getTransform()) { + Matrix4 layerTransform(*layerHandle->getTransform()); + totalTransform.multiply(layerTransform); + } addOp(alloc().create_trivial<TextureLayerOp>( - Rect(layer->getWidth(), layer->getHeight()), + Rect(layerHandle->getWidth(), layerHandle->getHeight()), totalTransform, getRecordedClip(), - layer)); + layerHandle->backingLayer())); } void RecordingCanvas::callDrawGLFunction(Functor* functor) { |