1 // Copyright 2012 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 CC_OUTPUT_OUTPUT_SURFACE_CLIENT_H_ 6 #define CC_OUTPUT_OUTPUT_SURFACE_CLIENT_H_ 7 8 #include "base/callback.h" 9 #include "base/memory/ref_counted.h" 10 #include "base/time/time.h" 11 #include "cc/base/cc_export.h" 12 #include "cc/output/begin_frame_args.h" 13 #include "cc/output/context_provider.h" 14 #include "ui/gfx/rect.h" 15 16 namespace gfx { 17 class Transform; 18 } 19 20 namespace cc { 21 22 class CompositorFrameAck; 23 struct ManagedMemoryPolicy; 24 25 class CC_EXPORT OutputSurfaceClient { 26 public: 27 // Called to synchronously re-initialize using the Context3D. Upon returning 28 // the compositor should be able to draw using GL what was previously 29 // committed. 30 virtual void DeferredInitialize() = 0; 31 // Must call OutputSurface::ReleaseContextProvider inside this call. 32 virtual void ReleaseGL() = 0; 33 virtual void CommitVSyncParameters(base::TimeTicks timebase, 34 base::TimeDelta interval) = 0; 35 virtual void SetNeedsRedrawRect(const gfx::Rect& damage_rect) = 0; 36 virtual void BeginFrame(const BeginFrameArgs& args) = 0; 37 virtual void DidSwapBuffers() = 0; 38 virtual void DidSwapBuffersComplete() = 0; 39 virtual void ReclaimResources(const CompositorFrameAck* ack) = 0; 40 virtual void DidLoseOutputSurface() = 0; 41 virtual void SetExternalDrawConstraints( 42 const gfx::Transform& transform, 43 const gfx::Rect& viewport, 44 const gfx::Rect& clip, 45 const gfx::Rect& viewport_rect_for_tile_priority, 46 const gfx::Transform& transform_for_tile_priority, 47 bool resourceless_software_draw) = 0; 48 virtual void SetMemoryPolicy(const ManagedMemoryPolicy& policy) = 0; 49 // If set, |callback| will be called subsequent to each new tree activation, 50 // regardless of the compositor visibility or damage. |callback| must remain 51 // valid for the lifetime of the OutputSurfaceClient or until unregisted -- 52 // use SetTreeActivationCallback(base::Closure()) to unregister it. 53 virtual void SetTreeActivationCallback(const base::Closure& callback) = 0; 54 55 protected: 56 virtual ~OutputSurfaceClient() {} 57 }; 58 59 } // namespace cc 60 61 #endif // CC_OUTPUT_OUTPUT_SURFACE_CLIENT_H_ 62