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