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 |
index 3d5b6e25627455e308754504b1d68bec4aafd518..c06f17c9dcd680b90e0db7ed5e5506d06a9b5658 100644 |
--- a/cc/surfaces/sequence_surface_reference_factory.cc |
+++ b/cc/surfaces/sequence_surface_reference_factory.cc |
@@ -4,29 +4,20 @@ |
#include "cc/surfaces/sequence_surface_reference_factory.h" |
+#include "base/bind.h" |
#include "base/memory/ptr_util.h" |
-#include "cc/surfaces/sequence_surface_reference.h" |
+ |
+#include "cc/surfaces/surface_sequence.h" |
namespace cc { |
-std::unique_ptr<SurfaceReferenceBase> |
-SequenceSurfaceReferenceFactory::CreateReference( |
+base::Closure 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) const { |
- // This method can only be called by a SurfaceReferenceBase because it's |
- // private and only SurfaceReferenceBase is a friend. The reference only |
- // calls this method on the factory that created it. So it's safe to cast |
- // the passed reference to the type returned by CreateReference. |
- auto ref = static_cast<SequenceSurfaceReference*>(surface_ref); |
- SatisfySequence(ref->sequence()); |
+ return base::Bind(&SequenceSurfaceReferenceFactory::SatisfySequence, this, |
danakj
2017/01/10 21:12:06
This still binds the lifetime of |this| to the cal
|
+ seq); |
} |
} // namespace cc |