diff options
author | Chris Craik <ccraik@google.com> | 2011-08-09 15:40:21 -0700 |
---|---|---|
committer | Chris Craik <ccraik@google.com> | 2011-08-09 15:40:21 -0700 |
commit | aa809ca82529a9d546f50918830d075daea08a91 (patch) | |
tree | e4ac8d69a1fd120586571167833ad33fc21e95b6 /Source | |
parent | 02359bf4229259d3576f987ee8b843e7229d66eb (diff) | |
download | external_webkit-aa809ca82529a9d546f50918830d075daea08a91.zip external_webkit-aa809ca82529a9d546f50918830d075daea08a91.tar.gz external_webkit-aa809ca82529a9d546f50918830d075daea08a91.tar.bz2 |
Remove ANativeWindow call to avoid blocking call
bug:5114637
Determine alpha blending through surface texture instead of ANativeWindow call.
Change-Id: I5a56178047b7f7782bbd3b736e98f0d5965c1c2b
Diffstat (limited to 'Source')
-rw-r--r-- | Source/WebCore/platform/graphics/android/MediaTexture.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/Source/WebCore/platform/graphics/android/MediaTexture.cpp b/Source/WebCore/platform/graphics/android/MediaTexture.cpp index 3fecfb5..b9c640d 100644 --- a/Source/WebCore/platform/graphics/android/MediaTexture.cpp +++ b/Source/WebCore/platform/graphics/android/MediaTexture.cpp @@ -104,10 +104,19 @@ void MediaTexture::drawContent(const TransformationMatrix& matrix) m_surfaceTexture->updateTexImage(); - bool forceBlending = ANativeWindow_getFormat(m_surfaceTextureClient.get()) == WINDOW_FORMAT_RGB_565; + sp<GraphicBuffer> buf = m_surfaceTexture->getCurrentBuffer(); + PixelFormat f = buf->getPixelFormat(); + + // only attempt to use alpha blending if alpha channel exists + bool forceAlphaBlending = !( + PIXEL_FORMAT_RGBX_8888 == f || + PIXEL_FORMAT_RGB_888 == f || + PIXEL_FORMAT_RGB_565 == f || + PIXEL_FORMAT_RGB_332 == f); + TilesManager::instance()->shader()->drawLayerQuad(matrix, m_dimensions, m_textureId, 1.0f, - forceBlending, GL_TEXTURE_EXTERNAL_OES); + forceAlphaBlending, GL_TEXTURE_EXTERNAL_OES); } void MediaTexture::drawVideo(const TransformationMatrix& matrix, const SkRect& parentBounds) |