diff options
| author | Chris Craik <ccraik@google.com> | 2011-12-02 13:42:02 -0800 | 
|---|---|---|
| committer | Chris Craik <ccraik@google.com> | 2011-12-02 13:56:44 -0800 | 
| commit | 7962416088590b8449c81a02f0a882ad29840cbe (patch) | |
| tree | 9c081486acd394ad72b6aa8313b0b9388220ef3e | |
| parent | 243f1a9f7a19e951afa11a656b273cd4da03ef38 (diff) | |
| download | external_webkit-7962416088590b8449c81a02f0a882ad29840cbe.zip external_webkit-7962416088590b8449c81a02f0a882ad29840cbe.tar.gz external_webkit-7962416088590b8449c81a02f0a882ad29840cbe.tar.bz2 | |
Maintain UI-side start times for animations in SW rendering mode
bug:5704428
Change-Id: I1d1d1f214642b6ff868e8425778565686bfe8b69
| -rw-r--r-- | Source/WebCore/platform/graphics/android/LayerAndroid.cpp | 14 | ||||
| -rw-r--r-- | Source/WebCore/platform/graphics/android/LayerAndroid.h | 2 | ||||
| -rw-r--r-- | Source/WebKit/android/nav/WebView.cpp | 3 | 
3 files changed, 19 insertions, 0 deletions
| diff --git a/Source/WebCore/platform/graphics/android/LayerAndroid.cpp b/Source/WebCore/platform/graphics/android/LayerAndroid.cpp index 1cd2b1a..0557847 100644 --- a/Source/WebCore/platform/graphics/android/LayerAndroid.cpp +++ b/Source/WebCore/platform/graphics/android/LayerAndroid.cpp @@ -902,6 +902,20 @@ void LayerAndroid::setIsPainting(Layer* drawingTree)      obtainTextureForPainting(drawingLayer);  } +void LayerAndroid::copyAnimationStartTimesRecursive(LayerAndroid* oldTree) +{ +    // used for copying UI-side animation start times in software rendering mode +    if (!oldTree) +        return; + +    for (int i = 0; i < countChildren(); i++) +        this->getChild(i)->copyAnimationStartTimesRecursive(oldTree); + +    LayerAndroid* layer = oldTree->findById(uniqueId()); +    if (layer) +        copyAnimationStartTimes(layer); +} +  void LayerAndroid::copyAnimationStartTimes(LayerAndroid* oldLayer)  {      if (!oldLayer) diff --git a/Source/WebCore/platform/graphics/android/LayerAndroid.h b/Source/WebCore/platform/graphics/android/LayerAndroid.h index cc96fae..5c13899 100644 --- a/Source/WebCore/platform/graphics/android/LayerAndroid.h +++ b/Source/WebCore/platform/graphics/android/LayerAndroid.h @@ -303,6 +303,8 @@ public:      bool hasText() { return m_hasText; }      void checkTextPresence(); +    void copyAnimationStartTimesRecursive(LayerAndroid* oldTree); +  // rendering asset management      void swapTiles();      void setIsDrawing(bool isDrawing); diff --git a/Source/WebKit/android/nav/WebView.cpp b/Source/WebKit/android/nav/WebView.cpp index 300b58e..fa25c46 100644 --- a/Source/WebKit/android/nav/WebView.cpp +++ b/Source/WebKit/android/nav/WebView.cpp @@ -1465,8 +1465,11 @@ void setBaseLayer(BaseLayerAndroid* layer, SkRegion& inval, bool showVisualIndic  #if ENABLE(ANDROID_OVERFLOW_SCROLL)      if (layer) { +        // TODO: the below tree copies are only necessary in software rendering          LayerAndroid* newCompositeRoot = static_cast<LayerAndroid*>(layer->getChild(0));          copyScrollPositionRecursive(compositeRoot(), newCompositeRoot); +        if (newCompositeRoot) +            newCompositeRoot->copyAnimationStartTimesRecursive(compositeRoot());      }  #endif      SkSafeUnref(m_baseLayer); | 
