Index: third_party/WebKit/Source/platform/animation/CompositorAnimationPlayer.cpp |
diff --git a/third_party/WebKit/Source/platform/animation/CompositorAnimationPlayer.cpp b/third_party/WebKit/Source/platform/animation/CompositorAnimationPlayer.cpp |
index 91228292138fdabc01313d00a2fc77de7bce7dcd..819727c41f3610115dc8780307f95a4255c635ce 100644 |
--- a/third_party/WebKit/Source/platform/animation/CompositorAnimationPlayer.cpp |
+++ b/third_party/WebKit/Source/platform/animation/CompositorAnimationPlayer.cpp |
@@ -5,6 +5,7 @@ |
#include "platform/animation/CompositorAnimationPlayer.h" |
#include "cc/animation/animation_id_provider.h" |
+#include "cc/animation/animation_timeline.h" |
#include "platform/animation/CompositorAnimation.h" |
#include "platform/animation/CompositorAnimationDelegate.h" |
#include "public/platform/WebLayer.h" |
@@ -19,6 +20,11 @@ CompositorAnimationPlayer::CompositorAnimationPlayer() |
CompositorAnimationPlayer::~CompositorAnimationPlayer() |
{ |
+ setAnimationDelegate(nullptr); |
+ // Detach player from timeline, otherwise it stays there (leaks) until |
+ // compositor shutdown. |
+ if (m_animationPlayer->animation_timeline()) |
+ m_animationPlayer->animation_timeline()->DetachPlayer(m_animationPlayer); |
} |
cc::AnimationPlayer* CompositorAnimationPlayer::animationPlayer() const |