| Index: third_party/WebKit/Source/web/CompositorMutatorImpl.cpp
|
| diff --git a/third_party/WebKit/Source/web/CompositorMutatorImpl.cpp b/third_party/WebKit/Source/web/CompositorMutatorImpl.cpp
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..27d9d0777fef3377dcd861f776d0c619a2a71661
|
| --- /dev/null
|
| +++ b/third_party/WebKit/Source/web/CompositorMutatorImpl.cpp
|
| @@ -0,0 +1,56 @@
|
| +// Copyright 2016 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "web/CompositorMutatorImpl.h"
|
| +
|
| +#include "core/animation/CustomCompositorAnimationManager.h"
|
| +#include "core/dom/CompositorProxy.h"
|
| +#include "platform/TraceEvent.h"
|
| +#include "platform/graphics/CompositorMutationsTarget.h"
|
| +#include "platform/graphics/CompositorMutatorClient.h"
|
| +#include "platform/heap/Handle.h"
|
| +#include "web/CompositorProxyClientImpl.h"
|
| +
|
| +namespace blink {
|
| +
|
| +CompositorMutatorImpl::CompositorMutatorImpl()
|
| + : m_animationManager(adoptPtr(new CustomCompositorAnimationManager))
|
| + , m_client(nullptr)
|
| +{
|
| +}
|
| +
|
| +CompositorMutatorImpl* CompositorMutatorImpl::create()
|
| +{
|
| + return new CompositorMutatorImpl();
|
| +}
|
| +
|
| +bool CompositorMutatorImpl::mutate(double monotonicTimeNow)
|
| +{
|
| + TRACE_EVENT0("compositor-worker", "CompositorMutatorImpl::mutate");
|
| + bool needToReinvoke = false;
|
| + // TODO(vollick): we should avoid executing the animation frame
|
| + // callbacks if none of the proxies in the global scope are affected by
|
| + // m_mutations.
|
| + for (CompositorProxyClientImpl* client : m_proxyClients) {
|
| + if (client->mutate(monotonicTimeNow))
|
| + needToReinvoke = true;
|
| + }
|
| +
|
| + return needToReinvoke;
|
| +}
|
| +
|
| +void CompositorMutatorImpl::registerProxyClient(CompositorProxyClientImpl* client)
|
| +{
|
| + TRACE_EVENT0("compositor-worker", "CompositorMutatorImpl::registerClient");
|
| + m_proxyClients.add(client);
|
| + setNeedsMutate();
|
| +}
|
| +
|
| +void CompositorMutatorImpl::setNeedsMutate()
|
| +{
|
| + TRACE_EVENT0("compositor-worker", "CompositorMutatorImpl::setNeedsMutate");
|
| + m_client->setNeedsMutate();
|
| +}
|
| +
|
| +} // namespace blink
|
|
|