[Webkit-unassigned] [Bug 43992] [chromium] scrolling issues when accelerated compositor is enabled
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Mon Aug 16 17:23:48 PDT 2010
https://bugs.webkit.org/show_bug.cgi?id=43992
--- Comment #4 from Vangelis Kokkevis <vangelis at chromium.org> 2010-08-16 17:23:48 PST ---
(From update of attachment 64524)
> diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
> index 163f6c5..ef0d9a6 100644
> --- a/WebCore/ChangeLog
> +++ b/WebCore/ChangeLog
> @@ -1,3 +1,32 @@
> +2010-08-16 Alexey Marinichev <amarinichev at chromium.org>
> +
> + Reviewed by NOBODY (OOPS!).
> +
> + [chromium] scrolling issues when accelerated compositor is enabled
> + https://bugs.webkit.org/show_bug.cgi?id=43992
> +
> + No new tests. (OOPS!)
> +
> + * platform/graphics/chromium/LayerRendererChromium.cpp:
> + (WebCore::LayerRendererChromium::drawLayers):
> +
> +2010-08-16 Alexey Marinichev <amarinichev at chromium.org>
> +
> + Reviewed by NOBODY (OOPS!).
> +
> + [chromium] scrolling issues when accelerated compositor is enabled
> + https://bugs.webkit.org/show_bug.cgi?id=43992
> +
> + Corrected scroll position not being updated, and an off-by-half error.
> +
> + To test the former, follow instructions in the bug. To test the
> + latter, change GL_NEAREST to GL_LINEAR in LayerRendererChromium.cpp.
> + Scrolling should work properly for all window sizes, without blurring
> + images and shifting them to the left.
> +
> + * platform/graphics/chromium/LayerRendererChromium.cpp:
> + (WebCore::LayerRendererChromium::drawLayers):
> +
> 2010-08-16 Paul Sawaya <psawaya at apple.com>
>
> Reviewed by Chris Marrin.
> diff --git a/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp b/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp
> index 2f70efa..abaa274 100644
> --- a/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp
> +++ b/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp
> @@ -390,8 +390,8 @@ void LayerRendererChromium::drawLayers(const IntRect& updateRect, const IntRect&
> #error "Need to implement for your platform."
> #endif
>
> - scrolledLayerMatrix.translate3d((int)floorf(0.5 * visibleRect.width()) - scrollDelta.x(),
> - (int)floorf(0.5 * visibleRect.height()) + scaleFactor * scrollDelta.y(), 0);
> + scrolledLayerMatrix.translate3d((0.5 * visibleRect.width()) - scrollDelta.x(),
> + (0.5 * visibleRect.height()) + scaleFactor * scrollDelta.y(), 0);
> scrolledLayerMatrix.scale3d(1, -1, 1);
>
> // Switch shaders to avoid RGB swizzling.
> @@ -406,7 +406,10 @@ void LayerRendererChromium::drawLayers(const IntRect& updateRect, const IntRect&
>
> checkGLError();
> m_scrollPosition = scrollPosition;
> - }
> + } else if (abs(scrollDelta.y()) > contentRect.height() || abs(scrollDelta.x()) > contentRect.width())
> + // Scrolling larger than the contentRect size does not preserve any of the pixels, so there is
> + // no need to copy framebuffer pixels back into the texture.
> + m_scrollPosition = scrollPosition;
>
> // FIXME: The following check should go away when the compositor renders independently from its own thread.
> // Ignore a 1x1 update rect at (0, 0) as that's used a way to kick off a redraw for the compositor.
WebCore/ChangeLog:11
+ (WebCore::LayerRendererChromium::drawLayers):
There are two entries in the ChangeLog for this change.
WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:
+ scrolledLayerMatrix.translate3d((int)floorf(0.5 * visibleRect.width()) - scrollDelta.x(),
Maybe remove the parenthesis around the 0.5* .. expressions as they're not needed anymore?
--
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
More information about the webkit-unassigned
mailing list