Index: cc/surfaces/compositor_frame_sink_support.h |
diff --git a/cc/surfaces/compositor_frame_sink_support.h b/cc/surfaces/compositor_frame_sink_support.h |
index 8471bbd15c6b186b1c4678f6f64a7246ab41fd18..d2fa5d6d83d0f92c625e08eccf3da6d425345b0e 100644 |
--- a/cc/surfaces/compositor_frame_sink_support.h |
+++ b/cc/surfaces/compositor_frame_sink_support.h |
@@ -8,6 +8,8 @@ |
#include "base/compiler_specific.h" |
#include "base/memory/weak_ptr.h" |
#include "cc/output/compositor_frame.h" |
+#include "cc/output/copy_output_request.h" |
+#include "cc/output/copy_output_result.h" |
#include "cc/scheduler/begin_frame_source.h" |
#include "cc/surfaces/display.h" |
#include "cc/surfaces/display_client.h" |
@@ -46,12 +48,19 @@ class CC_SURFACES_EXPORT CompositorFrameSinkSupport |
void Satisfy(const SurfaceSequence& sequence); |
void AddChildFrameSink(const FrameSinkId& child_frame_sink_id); |
void RemoveChildFrameSink(const FrameSinkId& child_frame_sink_id); |
+ void RequestCopyOfSurface(std::unique_ptr<CopyOutputRequest> request); |
+ void ReleaseCopyOfSurface(const gpu::Mailbox& mailbox, |
+ const gpu::SyncToken& sync_token, |
+ bool is_lost); |
Display* display() { return display_.get(); } |
private: |
void DidReceiveCompositorFrameAck(); |
+ void OnTextureReceived(CopyOutputRequest::CopyOutputRequestCallback callback, |
+ std::unique_ptr<CopyOutputResult> result); |
+ |
// DisplayClient implementation. |
void DisplayOutputSurfaceLost() override; |
void DisplayWillDrawAndSwap(bool will_draw_and_swap, |
@@ -104,6 +113,9 @@ class CC_SURFACES_EXPORT CompositorFrameSinkSupport |
// The set of BeginFrame children of this CompositorFrameSink. |
std::unordered_set<FrameSinkId, FrameSinkIdHash> child_frame_sinks_; |
+ std::map<gpu::Mailbox, std::unique_ptr<SingleReleaseCallback>> |
+ release_callbacks_; |
+ |
base::WeakPtrFactory<CompositorFrameSinkSupport> weak_factory_; |
DISALLOW_COPY_AND_ASSIGN(CompositorFrameSinkSupport); |