Reviewed by Adam Barth.
[chromium] Accelerated Compositing: Artifacts/blink when enabling compositor.
https://bugs.webkit.org/show_bug.cgi?id=44196
If accelerated compositing enables after a page loads, the dirtied
portion of the screen will be only a subset of the full screen,
leading to artefacts. Avoid these artefacts by invalidating the
visible content rect on compositor initialization.
* src/WebViewImpl.cpp:
(WebKit::WebViewImpl::setIsAcceleratedCompositingActive):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@66450
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2010-08-30 Nat Duca <nduca@chromium.org>
+
+ Reviewed by Adam Barth.
+
+ [chromium] Accelerated Compositing: Artifacts/blink when enabling compositor.
+ https://bugs.webkit.org/show_bug.cgi?id=44196
+
+ If accelerated compositing enables after a page loads, the dirtied
+ portion of the screen will be only a subset of the full screen,
+ leading to artefacts. Avoid these artefacts by invalidating the
+ visible content rect on compositor initialization.
+
+ * src/WebViewImpl.cpp:
+ (WebKit::WebViewImpl::setIsAcceleratedCompositingActive):
+
2010-08-30 Kinuko Yasuda <kinuko@chromium.osrc>
Reviewed by Darin Fisher.
if (active) {
m_layerRenderer = LayerRendererChromium::create(getOnscreenGLES2Context());
- if (m_layerRenderer->hardwareCompositing())
+ if (m_layerRenderer->hardwareCompositing()) {
m_isAcceleratedCompositingActive = true;
- else {
+
+ // Force a redraw the entire view so that the compositor gets the entire view,
+ // rather than just the currently-dirty subset.
+ m_client->didInvalidateRect(IntRect(0, 0, m_size.width, m_size.height));
+ } else {
m_layerRenderer.clear();
m_isAcceleratedCompositingActive = false;
}