OSDN Git Service

Remove ANativeWindow call to avoid blocking call
authorChris Craik <ccraik@google.com>
Thu, 11 Aug 2011 21:06:51 +0000 (14:06 -0700)
committerChris Craik <ccraik@google.com>
Thu, 11 Aug 2011 21:06:51 +0000 (14:06 -0700)
bug:5114637

Determine alpha blending through surface texture instead of ANativeWindow call.
Should no longer break the gpl build...

Change-Id: Iacc733c29413f0302304b78f378a003d690199f0

Source/WebCore/platform/graphics/android/MediaTexture.cpp

index 3fecfb5..96d136a 100644 (file)
@@ -104,10 +104,20 @@ 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)