diff options
author | Chris Craik <ccraik@google.com> | 2012-01-10 15:10:06 -0800 |
---|---|---|
committer | Chris Craik <ccraik@google.com> | 2012-01-10 15:22:35 -0800 |
commit | b627d5bd0e9b9a4d02131ef694467bfb62b9fb7f (patch) | |
tree | ddd9cf45c1bad6c0886031332cf14640a7b8820d | |
parent | f62e398f3b87d76e44d18441fa090c18dcc8be82 (diff) | |
download | external_webkit-b627d5bd0e9b9a4d02131ef694467bfb62b9fb7f.zip external_webkit-b627d5bd0e9b9a4d02131ef694467bfb62b9fb7f.tar.gz external_webkit-b627d5bd0e9b9a4d02131ef694467bfb62b9fb7f.tar.bz2 |
Fully invalidate the pictureset when content size changes
bug:5759299
Webkit invals aren't correct when the content size changes (even simply growing
vertically), for now just repaint from scratch in that case.
Change-Id: I408b289bfee1139d6c8f3c7babd963d217cb5bc0
-rw-r--r-- | Source/WebKit/android/jni/WebViewCore.cpp | 35 |
1 files changed, 14 insertions, 21 deletions
diff --git a/Source/WebKit/android/jni/WebViewCore.cpp b/Source/WebKit/android/jni/WebViewCore.cpp index b998e99..1e406b1 100644 --- a/Source/WebKit/android/jni/WebViewCore.cpp +++ b/Source/WebKit/android/jni/WebViewCore.cpp @@ -673,10 +673,20 @@ void WebViewCore::recordPictureSet(PictureSet* content) content->clear(); #if USE(ACCELERATED_COMPOSITING) - // Detects if the content size has changed - bool contentSizeChanged = false; - if (content->width() != width || content->height() != height) - contentSizeChanged = true; + // The invals are not always correct when the content size has changed. For + // now, let's just reset the inval so that it invalidates the entire content + // -- the pictureset will be fully repainted, tiles will be marked dirty and + // will have to be repainted. + + // FIXME: the webkit invals ought to have been enough... + if (content->width() != width || content->height() != height) { + SkIRect r; + r.fLeft = 0; + r.fTop = 0; + r.fRight = width; + r.fBottom = height; + m_addInval.setRect(r); + } #endif content->setDimensions(width, height, &m_addInval); @@ -700,23 +710,6 @@ void WebViewCore::recordPictureSet(PictureSet* content) // Rebuild the pictureset (webkit repaint) rebuildPictureSet(content); - -#if USE(ACCELERATED_COMPOSITING) - // We repainted the pictureset, but the invals are not always correct when - // the content size did change. For now, let's just reset the - // inval we will pass to the UI so that it invalidates the entire - // content -- tiles will be marked dirty and will have to be repainted. - // FIXME: the webkit invals ought to have been enough... - if (contentSizeChanged) { - SkIRect r; - r.fLeft = 0; - r.fTop = 0; - r.fRight = width; - r.fBottom = height; - m_addInval.setRect(r); - } -#endif - } // WebViewCoreRecordTimeCounter WebCore::Node* oldFocusNode = currentFocus(); |