summaryrefslogtreecommitdiffstats
path: root/WebCore
diff options
context:
space:
mode:
authorShimeng (Simon) Wang <swang@google.com>2010-11-19 17:50:21 -0800
committerShimeng (Simon) Wang <swang@google.com>2010-11-22 14:04:34 -0800
commitac26ff1e3f26e75d7b21ffb87019984faee4e1cf (patch)
tree74ea6efa0c0b60c3bc152ad176dca52f93361d43 /WebCore
parent0150e284d85a95236481fa58c868892da3341bb0 (diff)
downloadexternal_webkit-ac26ff1e3f26e75d7b21ffb87019984faee4e1cf.zip
external_webkit-ac26ff1e3f26e75d7b21ffb87019984faee4e1cf.tar.gz
external_webkit-ac26ff1e3f26e75d7b21ffb87019984faee4e1cf.tar.bz2
Clear GL inside clear view.
issue: 3215000 Change-Id: I8668a857d840084c363b13c95efffc740a1451db
Diffstat (limited to 'WebCore')
-rw-r--r--WebCore/platform/graphics/android/BaseLayerAndroid.cpp6
-rw-r--r--WebCore/platform/graphics/android/GLWebViewState.cpp5
-rw-r--r--WebCore/platform/graphics/android/GLWebViewState.h2
3 files changed, 13 insertions, 0 deletions
diff --git a/WebCore/platform/graphics/android/BaseLayerAndroid.cpp b/WebCore/platform/graphics/android/BaseLayerAndroid.cpp
index 8d84827..f5ec9cd 100644
--- a/WebCore/platform/graphics/android/BaseLayerAndroid.cpp
+++ b/WebCore/platform/graphics/android/BaseLayerAndroid.cpp
@@ -210,6 +210,12 @@ bool BaseLayerAndroid::drawGL(IntRect& viewRect, SkRect& visibleRect,
glEnable(GL_SCISSOR_TEST);
glScissor(left, top, width, height);
+ if (!m_glWebViewState || !m_glWebViewState->hasContent()) {
+ glClearColor(1, 1, 1, 1);
+ glClear(GL_COLOR_BUFFER_BIT);
+ glBindBuffer(GL_ARRAY_BUFFER, 0);
+ return true;
+ }
glClearColor((float)m_color.red() / 255.0,
(float)m_color.green() / 255.0,
(float)m_color.blue() / 255.0, 1);
diff --git a/WebCore/platform/graphics/android/GLWebViewState.cpp b/WebCore/platform/graphics/android/GLWebViewState.cpp
index 4080a8a..58c7ab5 100644
--- a/WebCore/platform/graphics/android/GLWebViewState.cpp
+++ b/WebCore/platform/graphics/android/GLWebViewState.cpp
@@ -239,6 +239,11 @@ void GLWebViewState::setViewport(SkRect& viewport, float scale)
static_cast<int>(ceilf(viewport.fBottom * invTileContentHeight)));
}
+bool GLWebViewState::hasContent() {
+ android::Mutex::Autolock lock(m_baseLayerLock);
+ return m_baseLayer;
+}
+
} // namespace WebCore
#endif // USE(ACCELERATED_COMPOSITING)
diff --git a/WebCore/platform/graphics/android/GLWebViewState.h b/WebCore/platform/graphics/android/GLWebViewState.h
index 526061e..cc1834d 100644
--- a/WebCore/platform/graphics/android/GLWebViewState.h
+++ b/WebCore/platform/graphics/android/GLWebViewState.h
@@ -191,6 +191,8 @@ public:
unsigned int currentPictureCounter() const { return m_currentPictureCounter; }
+ bool hasContent();
+
private:
// Delay between scheduling a new page when the scale