summaryrefslogtreecommitdiff
path: root/libs/hwui/RecordingCanvas.cpp
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2016-03-22 16:01:08 -0700
committerJohn Reck <jreck@google.com>2016-03-23 07:59:10 -0700
commit417ed6d4337e5409d52f58cc93677c8715193f32 (patch)
treee209754dcabdc52f6cae49fa78b42fd9e7241801 /libs/hwui/RecordingCanvas.cpp
parentdf1e2b1457690ccbd1302078cedafbfbb8918265 (diff)
Fix missing first frame
Bug: 26776366 Change-Id: I46258c0ff35fdefe5c9f2ee610c904b2dbe8c5d9
Diffstat (limited to 'libs/hwui/RecordingCanvas.cpp')
-rw-r--r--libs/hwui/RecordingCanvas.cpp12
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) {