Home | History | Annotate | Download | only in cc
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef MOJO_CC_OUTPUT_SURFACE_MOJO_H_
      6 #define MOJO_CC_OUTPUT_SURFACE_MOJO_H_
      7 
      8 #include "cc/output/output_surface.h"
      9 #include "cc/surfaces/surface_id.h"
     10 #include "cc/surfaces/surface_id_allocator.h"
     11 #include "mojo/services/public/interfaces/surfaces/surfaces.mojom.h"
     12 
     13 namespace mojo {
     14 
     15 class OutputSurfaceMojoClient {
     16  public:
     17   virtual ~OutputSurfaceMojoClient() {}
     18 
     19   virtual void DidCreateSurface(cc::SurfaceId id) = 0;
     20 };
     21 
     22 class OutputSurfaceMojo : public cc::OutputSurface, public SurfaceClient {
     23  public:
     24   OutputSurfaceMojo(OutputSurfaceMojoClient* client,
     25                     const scoped_refptr<cc::ContextProvider>& context_provider,
     26                     SurfacePtr surface,
     27                     uint32_t id_namespace);
     28 
     29   // SurfaceClient implementation.
     30   virtual void ReturnResources(Array<ReturnedResourcePtr> resources) OVERRIDE;
     31 
     32   // cc::OutputSurface implementation.
     33   virtual void SwapBuffers(cc::CompositorFrame* frame) OVERRIDE;
     34   virtual bool BindToClient(cc::OutputSurfaceClient* client) OVERRIDE;
     35 
     36  protected:
     37   virtual ~OutputSurfaceMojo();
     38 
     39  private:
     40   OutputSurfaceMojoClient* output_surface_mojo_client_;
     41   SurfacePtr surface_;
     42   cc::SurfaceIdAllocator id_allocator_;
     43   cc::SurfaceId surface_id_;
     44   gfx::Size surface_size_;
     45 
     46   DISALLOW_COPY_AND_ASSIGN(OutputSurfaceMojo);
     47 };
     48 }
     49 
     50 #endif  // MOJO_CC_OUTPUT_SURFACE_MOJO_H_
     51