From ab3f8c2e3277af88935c8fa3bb7a36470d2b0116 Mon Sep 17 00:00:00 2001 From: sergeyv Date: Wed, 1 Jun 2016 14:53:35 -0700 Subject: HWUI: do not call glCopyTexSubImage2D on empty area. Previous check .isEmpty() is not sufficient, because getWidth() may have value 0.5, so technically it is not empty, but when this size is passed to texture calls it is converted to uint_32 and it becomes zero. bug:28941093 Change-Id: Ia7c2bf0340466d5376f235fb5da54ad2ddfa0a03 --- libs/hwui/BakedOpRenderer.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'libs/hwui') diff --git a/libs/hwui/BakedOpRenderer.cpp b/libs/hwui/BakedOpRenderer.cpp index eed012636bb4..ea2e15b54b2f 100644 --- a/libs/hwui/BakedOpRenderer.cpp +++ b/libs/hwui/BakedOpRenderer.cpp @@ -96,15 +96,15 @@ void BakedOpRenderer::endLayer() { } OffscreenBuffer* BakedOpRenderer::copyToLayer(const Rect& area) { - OffscreenBuffer* buffer = mRenderState.layerPool().get(mRenderState, - area.getWidth(), area.getHeight()); - if (!area.isEmpty()) { + const uint32_t width = area.getWidth(); + const uint32_t height = area.getHeight(); + OffscreenBuffer* buffer = mRenderState.layerPool().get(mRenderState, width, height); + if (!area.isEmpty() && width != 0 && height != 0) { mCaches.textureState().activateTexture(0); mCaches.textureState().bindTexture(buffer->texture.id()); glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, - area.left, mRenderTarget.viewportHeight - area.bottom, - area.getWidth(), area.getHeight()); + area.left, mRenderTarget.viewportHeight - area.bottom, width, height); } return buffer; } -- cgit v1.2.3-59-g8ed1b