Merge "Fix performance issue in Launcher Bug #3515248" into honeycomb-mr1

This commit is contained in:
Romain Guy
2011-03-15 18:23:48 -07:00
committed by Android (Google) Code Review
3 changed files with 12 additions and 0 deletions

View File

@@ -92,7 +92,11 @@ Region* LayerRenderer::getRegion() {
void LayerRenderer::generateMesh() {
#if RENDER_LAYERS_AS_REGIONS
#if RENDER_LAYERS_RECT_AS_RECT
if (mLayer->region.isRect() || mLayer->region.isEmpty()) {
#else
if (mLayer->region.isEmpty()) {
#endif
if (mLayer->mesh) {
delete mLayer->mesh;
delete mLayer->meshIndices;

View File

@@ -636,11 +636,13 @@ void OpenGLRenderer::composeLayerRect(Layer* layer, const Rect& rect, bool swap)
void OpenGLRenderer::composeLayerRegion(Layer* layer, const Rect& rect) {
#if RENDER_LAYERS_AS_REGIONS
#if RENDER_LAYERS_RECT_AS_RECT
if (layer->region.isRect()) {
composeLayerRect(layer, rect);
layer->region.clear();
return;
}
#endif
if (!layer->region.isEmpty()) {
size_t count;
@@ -1646,10 +1648,14 @@ void OpenGLRenderer::drawLayer(Layer* layer, float x, float y, SkPaint* paint) {
#if RENDER_LAYERS_AS_REGIONS
if (!layer->region.isEmpty()) {
#if RENDER_LAYERS_RECT_AS_RECT
if (layer->region.isRect()) {
const Rect r(x, y, x + layer->layer.getWidth(), y + layer->layer.getHeight());
composeLayerRect(layer, r);
} else if (layer->mesh) {
#else
if (layer->mesh) {
#endif
const float a = alpha / 255.0f;
const Rect& rect = layer->layer;

View File

@@ -27,6 +27,8 @@
// If turned on, layers drawn inside FBOs are optimized with regions
#define RENDER_LAYERS_AS_REGIONS 1
// If turned on, layers that map to a single rect are drawn as a rect
#define RENDER_LAYERS_RECT_AS_RECT 0
/**
* Debug level for app developers.