viewport_surface.h revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
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_SERVICES_NATIVE_VIEWPORT_VIEWPORT_SURFACE_H_ 6#define MOJO_SERVICES_NATIVE_VIEWPORT_VIEWPORT_SURFACE_H_ 7 8#include "base/memory/scoped_ptr.h" 9#include "base/memory/weak_ptr.h" 10#include "cc/surfaces/surface_id.h" 11#include "mojo/services/public/interfaces/gpu/gpu.mojom.h" 12#include "mojo/services/public/interfaces/surfaces/surfaces.mojom.h" 13#include "mojo/services/public/interfaces/surfaces/surfaces_service.mojom.h" 14#include "ui/gfx/native_widget_types.h" 15#include "ui/gfx/size.h" 16 17namespace cc { 18class SurfaceIdAllocator; 19} 20 21namespace mojo { 22 23// This manages the surface that draws to a particular NativeViewport instance. 24class ViewportSurface : public SurfaceClient { 25 public: 26 ViewportSurface(SurfacesService* surfaces_service, 27 Gpu* gpu_service, 28 const gfx::Size& size, 29 cc::SurfaceId child_id); 30 virtual ~ViewportSurface(); 31 32 void SetWidgetId(uint64_t widget_id); 33 void SetSize(const gfx::Size& size); 34 void SetChildId(cc::SurfaceId child_id); 35 36 private: 37 void OnSurfaceConnectionCreated(SurfacePtr surface, uint32_t id_namespace); 38 void BindSurfaceToNativeViewport(); 39 void SubmitFrame(); 40 41 // SurfaceClient implementation. 42 virtual void ReturnResources(Array<ReturnedResourcePtr> resources) OVERRIDE; 43 44 SurfacePtr surface_; 45 Gpu* gpu_service_; 46 uint64_t widget_id_; 47 gfx::Size size_; 48 scoped_ptr<cc::SurfaceIdAllocator> id_allocator_; 49 cc::SurfaceId id_; 50 cc::SurfaceId child_id_; 51 base::WeakPtrFactory<ViewportSurface> weak_factory_; 52 53 DISALLOW_COPY_AND_ASSIGN(ViewportSurface); 54}; 55 56} // namespace mojo 57 58#endif // MOJO_SERVICES_NATIVE_VIEWPORT_VIEWPORT_SURFACE_H_ 59