Index: cc/layers/surface_layer.h |
diff --git a/cc/layers/surface_layer.h b/cc/layers/surface_layer.h |
index 0b886ebe2c98c780f70db2b1cbd2ce3aac426e1e..429254967052d774fd4ec1ba30a76f60abdddfe4 100644 |
--- a/cc/layers/surface_layer.h |
+++ b/cc/layers/surface_layer.h |
@@ -8,6 +8,7 @@ |
#include "cc/base/cc_export.h" |
#include "cc/layers/layer.h" |
#include "cc/surfaces/surface_id.h" |
+#include "cc/surfaces/surface_sequence.h" |
namespace cc { |
@@ -15,22 +16,40 @@ namespace cc { |
// instance or client. |
class CC_EXPORT SurfaceLayer : public Layer { |
public: |
- static scoped_refptr<SurfaceLayer> Create(); |
+ // This callback is run when a SurfaceSequence needs to be satisfied, but |
+ // the parent compositor is unable to. It can be called on either the main |
+ // or impl threads. |
+ using SatisfyCallback = base::Callback<void(SurfaceSequence)>; |
+ |
+ // This callback is run to require that a specific SurfaceSequence is |
+ // received before a SurfaceId is destroyed. |
+ using RequireCallback = base::Callback<void(SurfaceId, SurfaceSequence)>; |
+ |
+ static scoped_refptr<SurfaceLayer> Create( |
+ const SatisfyCallback& satisfy_callback, |
+ const RequireCallback& require_callback); |
void SetSurfaceId(SurfaceId surface_id); |
// Layer overrides. |
scoped_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl) override; |
+ void SetLayerTreeHost(LayerTreeHost* host) override; |
void PushPropertiesTo(LayerImpl* layer) override; |
protected: |
- SurfaceLayer(); |
+ SurfaceLayer(const SatisfyCallback& satisfy_callback, |
+ const RequireCallback& require_callback); |
bool HasDrawableContent() const override; |
private: |
~SurfaceLayer() override; |
+ void CreateNewDestroySequence(); |
+ void SatisfyDestroySequence(); |
SurfaceId surface_id_; |
+ SurfaceSequence destroy_sequence_; |
+ SatisfyCallback satisfy_callback_; |
+ RequireCallback require_callback_; |
DISALLOW_COPY_AND_ASSIGN(SurfaceLayer); |
}; |