summaryrefslogtreecommitdiffstats
path: root/Source/WebCore/platform/graphics/android/GLWebViewState.cpp
diff options
context:
space:
mode:
authorTeng-Hui Zhu <ztenghui@google.com>2012-02-28 10:29:36 -0800
committerTeng-Hui Zhu <ztenghui@google.com>2012-02-28 14:11:42 -0800
commit5965903d393505b9a49ac3a142aa0c17cd98bce8 (patch)
treee22fbaf86855f3805cd60bd5eba1d3a00a0a6812 /Source/WebCore/platform/graphics/android/GLWebViewState.cpp
parent7adab1830575d4438d058b5d7f6e932e97451c56 (diff)
downloadexternal_webkit-5965903d393505b9a49ac3a142aa0c17cd98bce8.zip
external_webkit-5965903d393505b9a49ac3a142aa0c17cd98bce8.tar.gz
external_webkit-5965903d393505b9a49ac3a142aa0c17cd98bce8.tar.bz2
Delete the GL shader resources in a cleaner way
bug:6079959 Change-Id: I55c96bb6abc90503c178607d0798c82e2c5ecaf1
Diffstat (limited to 'Source/WebCore/platform/graphics/android/GLWebViewState.cpp')
-rw-r--r--Source/WebCore/platform/graphics/android/GLWebViewState.cpp13
1 files changed, 5 insertions, 8 deletions
diff --git a/Source/WebCore/platform/graphics/android/GLWebViewState.cpp b/Source/WebCore/platform/graphics/android/GLWebViewState.cpp
index 86f33e0..a29ab82 100644
--- a/Source/WebCore/platform/graphics/android/GLWebViewState.cpp
+++ b/Source/WebCore/platform/graphics/android/GLWebViewState.cpp
@@ -353,19 +353,16 @@ double GLWebViewState::setupDrawing(const IntRect& viewRect, const SkRect& visib
int height = viewRect.height();
TilesManager* tilesManager = TilesManager::instance();
- // Make sure the GL Context has not changed, otherwise, re-create all GL
- // resources. Only check this after onTrimMemory happens.
- bool contextChanged = tilesManager->contextChanged();
- tilesManager->setContextChanged(false);
-
// Make sure GL resources are created on the UI thread.
+ // They are created either for the first time, or after EGL context
+ // recreation caused by onTrimMemory in the framework.
ShaderProgram* shader = tilesManager->shader();
- if (shader->needsInit() || contextChanged) {
+ if (shader->needsInit()) {
XLOGC("Reinit shader");
- shader->init();
+ shader->initGLResources();
}
TransferQueue* transferQueue = tilesManager->transferQueue();
- if (transferQueue->needsInit() || contextChanged) {
+ if (transferQueue->needsInit()) {
XLOGC("Reinit transferQueue");
transferQueue->initGLResources(TilesManager::tileWidth(),
TilesManager::tileHeight());