Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1627)

Unified Diff: cc/surfaces/surface_reference_factory.h

Issue 2616403003: Replacing SurfaceReferenceBase and SequenceSurfaceReference with Closures (Closed)
Patch Set: c Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/surfaces/surface_reference_base.cc ('k') | ui/aura/mus/client_surface_embedder.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/surfaces/surface_reference_factory.h
diff --git a/cc/surfaces/surface_reference_factory.h b/cc/surfaces/surface_reference_factory.h
index a4a32afa5667029acdef1c326bc267fbc5f76e92..ab0a430a3b4dc1f228a3cb94452691c657468461 100644
--- a/cc/surfaces/surface_reference_factory.h
+++ b/cc/surfaces/surface_reference_factory.h
@@ -5,24 +5,22 @@
#ifndef CC_SURFACES_SURFACE_REFERENCE_FACTORY_H_
#define CC_SURFACES_SURFACE_REFERENCE_FACTORY_H_
+#include "base/callback_forward.h"
#include "base/memory/ref_counted.h"
#include "cc/surfaces/surface_id.h"
#include "cc/surfaces/surface_reference_owner.h"
namespace cc {
-class SurfaceReferenceBase;
-
-// Creates surface references. Returns an object of type
-// SurfaceReferenceBase which holds on to its corresponding
-// surface reference until destruction. The referenced surface
-// will be kept alive as long as there is a reference to it.
+// Creates surface references. The referenced surface will be kept alive as
+// long as there is a reference to it.
class SurfaceReferenceFactory
: public base::RefCountedThreadSafe<SurfaceReferenceFactory> {
public:
- virtual std::unique_ptr<SurfaceReferenceBase> CreateReference(
- SurfaceReferenceOwner* owner,
- const SurfaceId& surface_id) const = 0;
+ // Creates a reference to the surface with the given surface id and returns
+ // a closure that must be called exactly once to remove the reference.
+ virtual base::Closure CreateReference(SurfaceReferenceOwner* owner,
+ const SurfaceId& surface_id) const = 0;
SurfaceReferenceFactory() = default;
@@ -30,11 +28,8 @@ class SurfaceReferenceFactory
virtual ~SurfaceReferenceFactory() = default;
private:
- friend class SurfaceReferenceBase;
friend class base::RefCountedThreadSafe<SurfaceReferenceFactory>;
- virtual void DestroyReference(SurfaceReferenceBase* surface_ref) const = 0;
-
DISALLOW_COPY_AND_ASSIGN(SurfaceReferenceFactory);
};
« no previous file with comments | « cc/surfaces/surface_reference_base.cc ('k') | ui/aura/mus/client_surface_embedder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698