Home | History | Annotate | Download | only in layers
      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_LAYERS_TEXTURE_LAYER_CLIENT_H_
      6 #define CC_LAYERS_TEXTURE_LAYER_CLIENT_H_
      7 
      8 namespace WebKit { class WebGraphicsContext3D; }
      9 
     10 namespace cc {
     11 class ResourceUpdateQueue;
     12 class TextureMailbox;
     13 
     14 class TextureLayerClient {
     15  public:
     16   // Called to prepare this layer's texture for compositing.
     17   // Returns the texture ID to be used for compositing.
     18   virtual unsigned PrepareTexture() = 0;
     19 
     20   // Returns the context that is providing the texture. Used for rate limiting
     21   // and detecting lost context.
     22   virtual WebKit::WebGraphicsContext3D* Context3d() = 0;
     23 
     24   // Returns true and provides a mailbox if a new frame is available.
     25   // Returns false if no new data is available
     26   // and the old mailbox is to be reused.
     27   virtual bool PrepareTextureMailbox(TextureMailbox* mailbox,
     28                                      bool use_shared_memory) = 0;
     29 
     30  protected:
     31   virtual ~TextureLayerClient() {}
     32 };
     33 
     34 }  // namespace cc
     35 
     36 #endif  // CC_LAYERS_TEXTURE_LAYER_CLIENT_H_
     37