OSDN Git Service

Display media layers even if we ran out of layers textures
authorNicolas Roard <nicolasroard@google.com>
Wed, 23 Nov 2011 22:50:19 +0000 (14:50 -0800)
committerNicolas Roard <nicolasroard@google.com>
Wed, 23 Nov 2011 23:39:19 +0000 (15:39 -0800)
bug:5665482

Change-Id: Idd398d2adb7edcd5c782b9d6f019f448afadb21b

Source/WebCore/platform/graphics/android/BaseLayerAndroid.cpp
Source/WebCore/platform/graphics/android/GLWebViewState.cpp
Source/WebCore/platform/graphics/android/LayerAndroid.cpp

index 8358b2a..7ec2d78 100644 (file)
@@ -370,8 +370,7 @@ bool BaseLayerAndroid::drawGL(IntRect& viewRect, SkRect& visibleRect,
         updateLayerPositions(visibleRect);
         // For now, we render layers only if the rendering mode
         // is kAllTextures or kClippedTextures
-        if (m_state->layersRenderingMode() < GLWebViewState::kScrollableAndFixedLayers
-            && compositedRoot->drawGL()) {
+        if (compositedRoot->drawGL()) {
             if (TilesManager::instance()->layerTexturesRemain()) {
                 // only try redrawing for layers if layer textures remain,
                 // otherwise we'll repaint without getting anything done
index 5206b7a..a33c3d0 100644 (file)
@@ -379,6 +379,9 @@ bool GLWebViewState::setLayersRenderingMode(TexturesResult& nbTexturesNeeded)
     if (nbTexturesNeeded.full < maxTextures)
         m_layersRenderingMode = kAllTextures;
 
+    if (!maxTextures && !nbTexturesNeeded.full)
+        m_layersRenderingMode = kAllTextures;
+
     if (m_layersRenderingMode < layersRenderingMode
         && m_layersRenderingMode != kAllTextures)
         invalBase = true;
index 9e7626a..859973a 100644 (file)
@@ -1115,11 +1115,13 @@ bool LayerAndroid::drawGL()
 
     bool askScreenUpdate = false;
 
-    if (m_texture)
-        askScreenUpdate |= m_texture->draw();
+    if (m_state->layersRenderingMode() < GLWebViewState::kScrollableAndFixedLayers) {
+        if (m_texture)
+            askScreenUpdate |= m_texture->draw();
 
-    if (m_imageTexture)
-        m_imageTexture->drawGL(this);
+        if (m_imageTexture)
+            m_imageTexture->drawGL(this);
+    }
 
     // When the layer is dirty, the UI thread should be notified to redraw.
     askScreenUpdate |= drawChildrenGL();