diff options
author | Nicolas Roard <nicolasroard@google.com> | 2011-11-23 14:50:19 -0800 |
---|---|---|
committer | Nicolas Roard <nicolasroard@google.com> | 2011-11-23 15:39:19 -0800 |
commit | 0f41c43617778ceae3a371d923719f446c0ad63c (patch) | |
tree | fad9cd74695e0b8994d00d4eeb71dd460570fe5e /Source/WebCore | |
parent | 3eaf0f8cdb150a43732c8391a73046811b3c378d (diff) | |
download | external_webkit-0f41c43617778ceae3a371d923719f446c0ad63c.zip external_webkit-0f41c43617778ceae3a371d923719f446c0ad63c.tar.gz external_webkit-0f41c43617778ceae3a371d923719f446c0ad63c.tar.bz2 |
Display media layers even if we ran out of layers textures
bug:5665482
Change-Id: Idd398d2adb7edcd5c782b9d6f019f448afadb21b
Diffstat (limited to 'Source/WebCore')
3 files changed, 10 insertions, 6 deletions
diff --git a/Source/WebCore/platform/graphics/android/BaseLayerAndroid.cpp b/Source/WebCore/platform/graphics/android/BaseLayerAndroid.cpp index 8358b2a..7ec2d78 100644 --- a/Source/WebCore/platform/graphics/android/BaseLayerAndroid.cpp +++ b/Source/WebCore/platform/graphics/android/BaseLayerAndroid.cpp @@ -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 diff --git a/Source/WebCore/platform/graphics/android/GLWebViewState.cpp b/Source/WebCore/platform/graphics/android/GLWebViewState.cpp index 5206b7a..a33c3d0 100644 --- a/Source/WebCore/platform/graphics/android/GLWebViewState.cpp +++ b/Source/WebCore/platform/graphics/android/GLWebViewState.cpp @@ -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; diff --git a/Source/WebCore/platform/graphics/android/LayerAndroid.cpp b/Source/WebCore/platform/graphics/android/LayerAndroid.cpp index 9e7626a..859973a 100644 --- a/Source/WebCore/platform/graphics/android/LayerAndroid.cpp +++ b/Source/WebCore/platform/graphics/android/LayerAndroid.cpp @@ -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(); |