Index: cc/surfaces/surface_manager.h |
diff --git a/cc/surfaces/surface_manager.h b/cc/surfaces/surface_manager.h |
index 202dfe3dde68bbda1fa92368683f56237bdec81b..9cd15caf551ac40ffe0ead4894bdbfa0280696b6 100644 |
--- a/cc/surfaces/surface_manager.h |
+++ b/cc/surfaces/surface_manager.h |
@@ -5,11 +5,15 @@ |
#ifndef CC_SURFACES_SURFACE_MANAGER_H_ |
#define CC_SURFACES_SURFACE_MANAGER_H_ |
+#include <list> |
+#include <set> |
jamesr
2014/09/12 01:08:55
#include <vector> since you use it on line 48 and
jbauman
2014/09/23 01:58:05
Done.
|
+ |
#include "base/containers/hash_tables.h" |
#include "base/macros.h" |
#include "base/observer_list.h" |
#include "cc/surfaces/surface_damage_observer.h" |
#include "cc/surfaces/surface_id.h" |
+#include "cc/surfaces/surface_sequence.h" |
#include "cc/surfaces/surfaces_export.h" |
namespace cc { |
@@ -24,6 +28,10 @@ class CC_SURFACES_EXPORT SurfaceManager { |
void RegisterSurface(Surface* surface); |
void DeregisterSurface(SurfaceId surface_id); |
+ // Destroy the Surface once a set of sequence numbers has been received. |
jamesr
2014/09/12 01:08:55
terminology nit: s/received/satisfied/
jbauman
2014/09/23 01:58:05
Done.
|
+ void DestroyOnSequence(scoped_ptr<Surface> surface, |
+ const std::set<SurfaceSequence>& dependency_set); |
+ |
Surface* GetSurfaceForId(SurfaceId surface_id); |
void AddObserver(SurfaceDamageObserver* obs) { |
@@ -36,11 +44,26 @@ class CC_SURFACES_EXPORT SurfaceManager { |
void SurfaceModified(SurfaceId surface_id); |
+ // A frame for a surface satisfies a set of sequence numbers. |
+ void SatisfiesSequence(SurfaceId id, std::vector<uint32_t>* sequence); |
+ |
private: |
+ void AttemptSatisfyDestroy(); |
jamesr
2014/09/12 01:08:55
i feel like this name could be a bit better. This
jbauman
2014/09/23 01:58:05
Done.
|
+ |
typedef base::hash_map<SurfaceId, Surface*> SurfaceMap; |
SurfaceMap surface_map_; |
ObserverList<SurfaceDamageObserver> observer_list_; |
+ // List of surfaces to be destroyed, along with what sequences they're still |
+ // waiting on. |
+ typedef std::list<std::pair<Surface*, std::set<SurfaceSequence> > > |
jamesr
2014/09/12 01:08:55
we can do >>> now
|
+ SurfaceDestroyList; |
+ SurfaceDestroyList surfaces_to_destroy_; |
+ |
+ // Set of SurfaceSequences that have been satisfied by a frame but not yet |
+ // waited on. |
+ std::set<SurfaceSequence> satisfied_sequences_; |
+ |
DISALLOW_COPY_AND_ASSIGN(SurfaceManager); |
}; |