Loading core/java/android/view/GLES20Canvas.java +12 −6 Original line number Diff line number Diff line Loading @@ -452,12 +452,15 @@ class GLES20Canvas extends HardwareCanvas { @Override public int saveLayer(float left, float top, float right, float bottom, Paint paint, int saveFlags) { if (left < right && top < bottom) { boolean hasColorFilter = paint != null && setupColorFilter(paint); final int nativePaint = paint == null ? 0 : paint.mNativePaint; int count = nSaveLayer(mRenderer, left, top, right, bottom, nativePaint, saveFlags); if (hasColorFilter) nResetModifiers(mRenderer); return count; } return save(saveFlags); } private native int nSaveLayer(int renderer, float left, float top, float right, float bottom, int paint, int saveFlags); Loading @@ -471,8 +474,11 @@ class GLES20Canvas extends HardwareCanvas { @Override public int saveLayerAlpha(float left, float top, float right, float bottom, int alpha, int saveFlags) { if (left < right && top < bottom) { return nSaveLayerAlpha(mRenderer, left, top, right, bottom, alpha, saveFlags); } return save(saveFlags); } private native int nSaveLayerAlpha(int renderer, float left, float top, float right, float bottom, int alpha, int saveFlags); Loading libs/hwui/FontRenderer.cpp +13 −5 Original line number Diff line number Diff line Loading @@ -298,8 +298,10 @@ Font* Font::create(FontRenderer* state, uint32_t fontId, float fontSize, // FontRenderer /////////////////////////////////////////////////////////////////////////////// static bool sLogFontRendererCreate = true; FontRenderer::FontRenderer() { LOGD("Creating FontRenderer"); if (sLogFontRendererCreate) LOGD("Creating FontRenderer"); mGammaTable = NULL; mInitialized = false; Loading @@ -317,20 +319,26 @@ FontRenderer::FontRenderer() { char property[PROPERTY_VALUE_MAX]; if (property_get(PROPERTY_TEXT_CACHE_WIDTH, property, NULL) > 0) { LOGD(" Setting text cache width to %s pixels", property); if (sLogFontRendererCreate) LOGD(" Setting text cache width to %s pixels", property); mCacheWidth = atoi(property); } else { if (sLogFontRendererCreate) { LOGD(" Using default text cache width of %i pixels", mCacheWidth); } } if (property_get(PROPERTY_TEXT_CACHE_HEIGHT, property, NULL) > 0) { LOGD(" Setting text cache width to %s pixels", property); if (sLogFontRendererCreate) LOGD(" Setting text cache width to %s pixels", property); mCacheHeight = atoi(property); } else { if (sLogFontRendererCreate) { LOGD(" Using default text cache height of %i pixels", mCacheHeight); } } sLogFontRendererCreate = false; } FontRenderer::~FontRenderer() { for (uint32_t i = 0; i < mCacheLines.size(); i++) { delete mCacheLines[i]; Loading libs/hwui/OpenGLRenderer.cpp +15 −13 Original line number Diff line number Diff line Loading @@ -430,7 +430,7 @@ bool OpenGLRenderer::createLayer(sp<Snapshot> snapshot, float left, float top, } else { // Copy the framebuffer into the layer glBindTexture(GL_TEXTURE_2D, layer->texture); if (!bounds.isEmpty()) { if (layer->empty) { glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, bounds.left, snapshot->height - bounds.bottom, layer->width, layer->height, 0); Loading @@ -439,10 +439,10 @@ bool OpenGLRenderer::createLayer(sp<Snapshot> snapshot, float left, float top, glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, bounds.left, snapshot->height - bounds.bottom, bounds.getWidth(), bounds.getHeight()); } // Enqueue the buffer coordinates to clear the corresponding region later mLayers.push(new Rect(bounds)); } } return true; } Loading Loading @@ -565,9 +565,11 @@ void OpenGLRenderer::composeLayer(sp<Snapshot> current, sp<Snapshot> previous) { resetColorFilter(); } } else { if (!rect.isEmpty()) { dirtyLayer(rect.left, rect.top, rect.right, rect.bottom); composeLayerRect(layer, rect, true); } } if (fboLayer) { // Detach the texture from the FBO Loading Loading
core/java/android/view/GLES20Canvas.java +12 −6 Original line number Diff line number Diff line Loading @@ -452,12 +452,15 @@ class GLES20Canvas extends HardwareCanvas { @Override public int saveLayer(float left, float top, float right, float bottom, Paint paint, int saveFlags) { if (left < right && top < bottom) { boolean hasColorFilter = paint != null && setupColorFilter(paint); final int nativePaint = paint == null ? 0 : paint.mNativePaint; int count = nSaveLayer(mRenderer, left, top, right, bottom, nativePaint, saveFlags); if (hasColorFilter) nResetModifiers(mRenderer); return count; } return save(saveFlags); } private native int nSaveLayer(int renderer, float left, float top, float right, float bottom, int paint, int saveFlags); Loading @@ -471,8 +474,11 @@ class GLES20Canvas extends HardwareCanvas { @Override public int saveLayerAlpha(float left, float top, float right, float bottom, int alpha, int saveFlags) { if (left < right && top < bottom) { return nSaveLayerAlpha(mRenderer, left, top, right, bottom, alpha, saveFlags); } return save(saveFlags); } private native int nSaveLayerAlpha(int renderer, float left, float top, float right, float bottom, int alpha, int saveFlags); Loading
libs/hwui/FontRenderer.cpp +13 −5 Original line number Diff line number Diff line Loading @@ -298,8 +298,10 @@ Font* Font::create(FontRenderer* state, uint32_t fontId, float fontSize, // FontRenderer /////////////////////////////////////////////////////////////////////////////// static bool sLogFontRendererCreate = true; FontRenderer::FontRenderer() { LOGD("Creating FontRenderer"); if (sLogFontRendererCreate) LOGD("Creating FontRenderer"); mGammaTable = NULL; mInitialized = false; Loading @@ -317,20 +319,26 @@ FontRenderer::FontRenderer() { char property[PROPERTY_VALUE_MAX]; if (property_get(PROPERTY_TEXT_CACHE_WIDTH, property, NULL) > 0) { LOGD(" Setting text cache width to %s pixels", property); if (sLogFontRendererCreate) LOGD(" Setting text cache width to %s pixels", property); mCacheWidth = atoi(property); } else { if (sLogFontRendererCreate) { LOGD(" Using default text cache width of %i pixels", mCacheWidth); } } if (property_get(PROPERTY_TEXT_CACHE_HEIGHT, property, NULL) > 0) { LOGD(" Setting text cache width to %s pixels", property); if (sLogFontRendererCreate) LOGD(" Setting text cache width to %s pixels", property); mCacheHeight = atoi(property); } else { if (sLogFontRendererCreate) { LOGD(" Using default text cache height of %i pixels", mCacheHeight); } } sLogFontRendererCreate = false; } FontRenderer::~FontRenderer() { for (uint32_t i = 0; i < mCacheLines.size(); i++) { delete mCacheLines[i]; Loading
libs/hwui/OpenGLRenderer.cpp +15 −13 Original line number Diff line number Diff line Loading @@ -430,7 +430,7 @@ bool OpenGLRenderer::createLayer(sp<Snapshot> snapshot, float left, float top, } else { // Copy the framebuffer into the layer glBindTexture(GL_TEXTURE_2D, layer->texture); if (!bounds.isEmpty()) { if (layer->empty) { glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, bounds.left, snapshot->height - bounds.bottom, layer->width, layer->height, 0); Loading @@ -439,10 +439,10 @@ bool OpenGLRenderer::createLayer(sp<Snapshot> snapshot, float left, float top, glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, bounds.left, snapshot->height - bounds.bottom, bounds.getWidth(), bounds.getHeight()); } // Enqueue the buffer coordinates to clear the corresponding region later mLayers.push(new Rect(bounds)); } } return true; } Loading Loading @@ -565,9 +565,11 @@ void OpenGLRenderer::composeLayer(sp<Snapshot> current, sp<Snapshot> previous) { resetColorFilter(); } } else { if (!rect.isEmpty()) { dirtyLayer(rect.left, rect.top, rect.right, rect.bottom); composeLayerRect(layer, rect, true); } } if (fboLayer) { // Detach the texture from the FBO Loading