diff options
author | Allan Sandfeld Jensen <allan.jensen@digia.com> | 2013-04-30 14:24:02 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-04-30 15:04:19 +0200 |
commit | cd42b1505bdfcadd9135c7244342a13cbf34d5e7 (patch) | |
tree | 66183c95f323c0657817972102f340fd3daf6f80 | |
parent | 648159cd3e311e08836fe1af5d1f614b992ea2ea (diff) | |
download | qtwebkit-cd42b1505bdfcadd9135c7244342a13cbf34d5e7.tar.gz |
[Qt] Animated opacity does not trigger accelerated compositing
https://bugs.webkit.org/show_bug.cgi?id=115107
Reviewed by Simon Fraser.
Source/WebCore:
Add extra option to also trigger compositing on animated opacity.
* page/ChromeClient.h:
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::requiresCompositingForAnimation):
Source/WebKit/qt:
We should trigger compositing on animated opacity as it is always faster on Qt.
* WebCoreSupport/ChromeClientQt.cpp:
VideoTrigger removed because we have already disabled AC for video in qwebsettings.
Change-Id: I811a9175d96a57621345d2225d6930669a487aa5
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@149123 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
-rw-r--r-- | Source/WebCore/page/ChromeClient.h | 1 | ||||
-rw-r--r-- | Source/WebCore/rendering/RenderLayerCompositor.cpp | 3 | ||||
-rw-r--r-- | Source/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp | 2 |
3 files changed, 4 insertions, 2 deletions
diff --git a/Source/WebCore/page/ChromeClient.h b/Source/WebCore/page/ChromeClient.h index 35c32328c..ad6eb1fb1 100644 --- a/Source/WebCore/page/ChromeClient.h +++ b/Source/WebCore/page/ChromeClient.h @@ -275,6 +275,7 @@ namespace WebCore { CanvasTrigger = 1 << 3, AnimationTrigger = 1 << 4, FilterTrigger = 1 << 5, + AnimatedOpacityTrigger = 1 << 6, AllTriggers = 0xFFFFFFFF }; typedef unsigned CompositingTriggerFlags; diff --git a/Source/WebCore/rendering/RenderLayerCompositor.cpp b/Source/WebCore/rendering/RenderLayerCompositor.cpp index 3ddfe4538..badb782c4 100644 --- a/Source/WebCore/rendering/RenderLayerCompositor.cpp +++ b/Source/WebCore/rendering/RenderLayerCompositor.cpp @@ -1884,7 +1884,8 @@ bool RenderLayerCompositor::requiresCompositingForAnimation(RenderObject* render return false; if (AnimationController* animController = renderer->animation()) { - return (animController->isRunningAnimationOnRenderer(renderer, CSSPropertyOpacity) && inCompositingMode()) + return (animController->isRunningAnimationOnRenderer(renderer, CSSPropertyOpacity) + && (inCompositingMode() || (m_compositingTriggers & ChromeClient::AnimatedOpacityTrigger))) #if ENABLE(CSS_FILTERS) #if !PLATFORM(MAC) || (!PLATFORM(IOS) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1080) // <rdar://problem/10907251> - WebKit2 doesn't support CA animations of CI filters on Lion and below diff --git a/Source/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp b/Source/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp index 71b45d6dd..58dad5b76 100644 --- a/Source/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp +++ b/Source/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp @@ -654,7 +654,7 @@ void ChromeClientQt::scheduleCompositingLayerFlush() ChromeClient::CompositingTriggerFlags ChromeClientQt::allowedCompositingTriggers() const { if (allowsAcceleratedCompositing()) - return ThreeDTransformTrigger | VideoTrigger | CanvasTrigger | AnimationTrigger; + return ThreeDTransformTrigger | CanvasTrigger | AnimationTrigger | AnimatedOpacityTrigger; return 0; } |