• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
Create(VideoFrameProvider * provider)11 scoped_refptr<VideoLayer> VideoLayer::Create(VideoFrameProvider* provider) {
12   return make_scoped_refptr(new VideoLayer(provider));
13 }
14 
VideoLayer(VideoFrameProvider * provider)15 VideoLayer::VideoLayer(VideoFrameProvider* provider) : provider_(provider) {
16   DCHECK(provider_);
17 }
18 
~VideoLayer()19 VideoLayer::~VideoLayer() {}
20 
CreateLayerImpl(LayerTreeImpl * tree_impl)21 scoped_ptr<LayerImpl> VideoLayer::CreateLayerImpl(LayerTreeImpl* tree_impl) {
22   return VideoLayerImpl::Create(tree_impl, id(), provider_).PassAs<LayerImpl>();
23 }
24 
Update(ResourceUpdateQueue * queue,const OcclusionTracker * occlusion)25 bool VideoLayer::Update(ResourceUpdateQueue* queue,
26                         const OcclusionTracker* occlusion) {
27   bool updated = Layer::Update(queue, occlusion);
28 
29   // Video layer doesn't update any resources from the main thread side,
30   // but repaint rects need to be sent to the VideoLayerImpl via commit.
31   //
32   // This is the inefficient legacy redraw path for videos.  It's better to
33   // communicate this directly to the VideoLayerImpl.
34   updated |= !update_rect_.IsEmpty();
35 
36   return updated;
37 }
38 
39 }  // namespace cc
40