summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@digia.com>2013-04-30 14:24:02 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-04-30 15:04:19 +0200
commitcd42b1505bdfcadd9135c7244342a13cbf34d5e7 (patch)
tree66183c95f323c0657817972102f340fd3daf6f80
parent648159cd3e311e08836fe1af5d1f614b992ea2ea (diff)
downloadqtwebkit-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.h1
-rw-r--r--Source/WebCore/rendering/RenderLayerCompositor.cpp3
-rw-r--r--Source/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp2
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;
}