Restore final canvas state after deferred flush

bug:8450062

- Fixes overdraw indication with DeferredDisplayList
- Fixes drawHardwareLayer called after flush

Additionally changes drawLayer to pass its paint to native via setLayerPaint

Wrap flush in save/restore so that reordering doesn't affect final
transform

Change-Id: I08befa42c28500da6387699eefd4be28aedf9f4c
This commit is contained in:
Chris Craik
2013-03-22 10:00:48 -07:00
parent 1edaff0709
commit a4e16c58c9
3 changed files with 12 additions and 7 deletions

View File

@ -399,12 +399,13 @@ class GLES20Canvas extends HardwareCanvas {
///////////////////////////////////////////////////////////////////////////
void drawHardwareLayer(HardwareLayer layer, float x, float y, Paint paint) {
layer.setLayerPaint(paint);
final GLES20Layer glLayer = (GLES20Layer) layer;
final int nativePaint = paint == null ? 0 : paint.mNativePaint;
nDrawLayer(mRenderer, glLayer.getLayer(), x, y, nativePaint);
nDrawLayer(mRenderer, glLayer.getLayer(), x, y);
}
private static native void nDrawLayer(int renderer, int layer, float x, float y, int paint);
private static native void nDrawLayer(int renderer, int layer, float x, float y);
void interrupt() {
nInterrupt(mRenderer);