Home | History | Annotate | Download | only in layers
      1 // Copyright 2010 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 #include "cc/layers/video_layer.h"
      6 
      7 #include "cc/layers/video_layer_impl.h"
      8 
      9 namespace cc {
     10 
     11 scoped_refptr<VideoLayer> VideoLayer::Create(
     12     VideoFrameProvider* provider,
     13     media::VideoRotation video_rotation) {
     14   return make_scoped_refptr(new VideoLayer(provider, video_rotation));
     15 }
     16 
     17 VideoLayer::VideoLayer(VideoFrameProvider* provider,
     18                        media::VideoRotation video_rotation)
     19     : provider_(provider), video_rotation_(video_rotation) {
     20   DCHECK(provider_);
     21 }
     22 
     23 VideoLayer::~VideoLayer() {}
     24 
     25 scoped_ptr<LayerImpl> VideoLayer::CreateLayerImpl(LayerTreeImpl* tree_impl) {
     26   scoped_ptr<VideoLayerImpl> impl =
     27       VideoLayerImpl::Create(tree_impl, id(), provider_, video_rotation_);
     28   return impl.PassAs<LayerImpl>();
     29 }
     30 
     31 bool VideoLayer::Update(ResourceUpdateQueue* queue,
     32                         const OcclusionTracker<Layer>* occlusion) {
     33   bool updated = Layer::Update(queue, occlusion);
     34 
     35   // Video layer doesn't update any resources from the main thread side,
     36   // but repaint rects need to be sent to the VideoLayerImpl via commit.
     37   //
     38   // This is the inefficient legacy redraw path for videos.  It's better to
     39   // communicate this directly to the VideoLayerImpl.
     40   updated |= !update_rect_.IsEmpty();
     41 
     42   return updated;
     43 }
     44 
     45 }  // namespace cc
     46