// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef MOJO_CC_OUTPUT_SURFACE_MOJO_H_ #define MOJO_CC_OUTPUT_SURFACE_MOJO_H_ #include "base/macros.h" #include "cc/output/output_surface.h" #include "cc/surfaces/surface_id.h" #include "cc/surfaces/surface_id_allocator.h" #include "mojo/services/public/interfaces/surfaces/surfaces.mojom.h" namespace mojo { class OutputSurfaceMojoClient { public: virtual ~OutputSurfaceMojoClient() {} virtual void DidCreateSurface(cc::SurfaceId id) = 0; }; class OutputSurfaceMojo : public cc::OutputSurface, public SurfaceClient { public: OutputSurfaceMojo(OutputSurfaceMojoClient* client, const scoped_refptr& context_provider, SurfacePtr surface, uint32_t id_namespace); // SurfaceClient implementation. void ReturnResources(Array resources) override; // cc::OutputSurface implementation. void SwapBuffers(cc::CompositorFrame* frame) override; bool BindToClient(cc::OutputSurfaceClient* client) override; protected: ~OutputSurfaceMojo() override; private: OutputSurfaceMojoClient* output_surface_mojo_client_; SurfacePtr surface_; cc::SurfaceIdAllocator id_allocator_; cc::SurfaceId surface_id_; gfx::Size surface_size_; DISALLOW_COPY_AND_ASSIGN(OutputSurfaceMojo); }; } #endif // MOJO_CC_OUTPUT_SURFACE_MOJO_H_