Merge "Don't draw layers in buildLayer()"

This commit is contained in:
Michael Jurka
2012-03-07 11:25:20 -08:00
committed by Android (Google) Code Review
3 changed files with 7 additions and 32 deletions

View File

@@ -167,7 +167,7 @@ abstract class HardwareLayer {
/**
* Specifies the display list to use to refresh the layer.
*
*
* @param displayList The display list containing the drawing commands to
* execute in this layer
* @param dirtyRect The dirty region of the layer that needs to be redrawn

View File

@@ -315,7 +315,7 @@ public class TextureView extends View {
}
@Override
HardwareLayer getHardwareLayer(boolean immediateRefresh) {
HardwareLayer getHardwareLayer() {
if (mLayer == null) {
if (mAttachInfo == null || mAttachInfo.mHardwareRenderer == null) {
return null;

View File

@@ -10221,7 +10221,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
if (mAttachInfo.mHardwareRenderer != null &&
mAttachInfo.mHardwareRenderer.isEnabled() &&
mAttachInfo.mHardwareRenderer.validate()) {
getHardwareLayer(true);
getHardwareLayer();
}
break;
case LAYER_TYPE_SOFTWARE:
@@ -10243,7 +10243,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
*
* @return A HardwareLayer ready to render, or null if an error occurred.
*/
HardwareLayer getHardwareLayer(boolean immediateRefresh) {
HardwareLayer getHardwareLayer() {
if (mAttachInfo == null || mAttachInfo.mHardwareRenderer == null ||
!mAttachInfo.mHardwareRenderer.isEnabled()) {
return null;
@@ -10273,33 +10273,8 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
return null;
}
if (!immediateRefresh) {
mHardwareLayer.redraw(getDisplayList(), mLocalDirtyRect);
mLocalDirtyRect.setEmpty();
} else {
HardwareCanvas currentCanvas = mAttachInfo.mHardwareCanvas;
final HardwareCanvas canvas = mHardwareLayer.start(currentCanvas);
// Make sure all the GPU resources have been properly allocated
if (canvas == null) {
mHardwareLayer.end(currentCanvas);
return null;
}
mAttachInfo.mHardwareCanvas = canvas;
try {
canvas.setViewport(width, height);
canvas.onPreDraw(mLocalDirtyRect);
mLocalDirtyRect.setEmpty();
canvas.drawDisplayList(getDisplayList(), mRight - mLeft, mBottom - mTop, null,
DisplayList.FLAG_CLIP_CHILDREN);
} finally {
canvas.onPostDraw();
mHardwareLayer.end(currentCanvas);
mAttachInfo.mHardwareCanvas = currentCanvas;
}
}
mHardwareLayer.redraw(getDisplayList(), mLocalDirtyRect);
mLocalDirtyRect.setEmpty();
}
return mHardwareLayer;
@@ -11266,7 +11241,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
if (hasNoCache) {
boolean layerRendered = false;
if (layerType == LAYER_TYPE_HARDWARE) {
final HardwareLayer layer = getHardwareLayer(false);
final HardwareLayer layer = getHardwareLayer();
if (layer != null && layer.isValid()) {
mLayerPaint.setAlpha((int) (alpha * 255));
((HardwareCanvas) canvas).drawHardwareLayer(layer, 0, 0, mLayerPaint);