| Index: cc/surfaces/sequence_surface_reference_factory.cc
|
| diff --git a/cc/surfaces/sequence_surface_reference_factory.cc b/cc/surfaces/sequence_surface_reference_factory.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..1ba82e8edefd266c119c737625289bd77295f01e
|
| --- /dev/null
|
| +++ b/cc/surfaces/sequence_surface_reference_factory.cc
|
| @@ -0,0 +1,38 @@
|
| +// 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 "cc/surfaces/sequence_surface_reference_factory.h"
|
| +
|
| +#include "cc/surfaces/sequence_surface_reference.h"
|
| +
|
| +namespace cc {
|
| +
|
| +std::unique_ptr<SurfaceReferenceBase>
|
| +SequenceSurfaceReferenceFactory::CreateReference(
|
| + SurfaceReferenceOwner* owner,
|
| + const SurfaceId& surface_id) const {
|
| + auto seq = owner->GetSurfaceSequenceGenerator()->CreateSurfaceSequence();
|
| + RequireSequence(surface_id, seq);
|
| + return base::MakeUnique<SequenceSurfaceReference>(make_scoped_refptr(this),
|
| + seq);
|
| +}
|
| +
|
| +void SequenceSurfaceReferenceFactory::DestroyReference(
|
| + SurfaceReferenceBase* surface_ref,
|
| + CompositorFrameMetadata* metadata) const {
|
| + // The surface reference was generated by this factory, so we can cast it
|
| + // to the type we returned in CreateReference.
|
| + auto ref = static_cast<SequenceSurfaceReference*>(surface_ref);
|
| + metadata->satisfies_sequences.push_back(ref->sequence().sequence);
|
| +}
|
| +
|
| +void SequenceSurfaceReferenceFactory::DestroyReference(
|
| + SurfaceReferenceBase* surface_ref) const {
|
| + // The surface reference was generated by this factory, so we can cast it
|
| + // to the type we returned in CreateReference.
|
| + auto ref = static_cast<SequenceSurfaceReference*>(surface_ref);
|
| + SatisfySequence(ref->sequence());
|
| +}
|
| +
|
| +} // namespace cc
|
|
|