Bug 88439 - [chromium] Fix race condition where animations start, finish and are deleted on the composite thread, all before the start even arrives on the main thread.
Summary: [chromium] Fix race condition where animations start, finish and are deleted ...
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKit Misc. (show other bugs)
Version: 528+ (Nightly build)
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: vollick
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-06-06 11:56 PDT by vollick
Modified: 2012-06-14 07:57 PDT (History)
6 users (show)

See Also:


Attachments
Patch (9.85 KB, patch)
2012-06-13 11:22 PDT, Eric Penner
no flags Details | Formatted Diff | Diff
IsFinished_Changes (9.37 KB, patch)
2012-06-13 16:05 PDT, Eric Penner
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description vollick 2012-06-06 11:56:52 PDT
An animation can currently finish on the impl thread and be disposed before the start event arrives on the main thread. Code needs to be put in place to address this.
Comment 1 Eric Penner 2012-06-13 11:22:16 PDT
Created attachment 147368 [details]
Patch
Comment 2 vollick 2012-06-13 12:34:41 PDT
Comment on attachment 147368 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=147368&action=review

LGTM, with a few nits. Looks like the original code duplicated the logic of isFinished in a couple of places. Thanks for doing this.

> Source/WebCore/platform/graphics/chromium/cc/CCActiveAnimation.cpp:87
> +    if (m_runState == Finished || m_runState == Aborted || m_runState == WaitingForDeletion)

if (isFinished())

> Source/WebCore/platform/graphics/chromium/cc/CCLayerAnimationController.cpp:193
> +                && m_activeAnimations[i]->runState() != CCActiveAnimation::WaitingForDeletion)

if (!m_activeAnimations[i]->isFinished())

> Source/WebCore/platform/graphics/chromium/cc/CCLayerAnimationController.cpp:256
> +                && m_activeAnimations[i]->runState() != CCActiveAnimation::WaitingForDeletion)

if (!m_activeAnimations[i]->isFinished())
Comment 3 Eric Penner 2012-06-13 16:05:00 PDT
Created attachment 147439 [details]
IsFinished_Changes
Comment 4 WebKit Review Bot 2012-06-14 07:57:24 PDT
Comment on attachment 147439 [details]
IsFinished_Changes

Clearing flags on attachment: 147439

Committed r120326: <http://trac.webkit.org/changeset/120326>
Comment 5 WebKit Review Bot 2012-06-14 07:57:29 PDT
All reviewed patches have been landed.  Closing bug.