summaryrefslogtreecommitdiff
path: root/chromium/cc/layers/video_layer.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/cc/layers/video_layer.cc')
-rw-r--r--chromium/cc/layers/video_layer.cc39
1 files changed, 39 insertions, 0 deletions
diff --git a/chromium/cc/layers/video_layer.cc b/chromium/cc/layers/video_layer.cc
new file mode 100644
index 00000000000..8d728e0a8e0
--- /dev/null
+++ b/chromium/cc/layers/video_layer.cc
@@ -0,0 +1,39 @@
+// Copyright 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "cc/layers/video_layer.h"
+
+#include "cc/layers/video_layer_impl.h"
+
+namespace cc {
+
+scoped_refptr<VideoLayer> VideoLayer::Create(VideoFrameProvider* provider) {
+ return make_scoped_refptr(new VideoLayer(provider));
+}
+
+VideoLayer::VideoLayer(VideoFrameProvider* provider) : provider_(provider) {
+ DCHECK(provider_);
+}
+
+VideoLayer::~VideoLayer() {}
+
+scoped_ptr<LayerImpl> VideoLayer::CreateLayerImpl(LayerTreeImpl* tree_impl) {
+ return VideoLayerImpl::Create(tree_impl, id(), provider_).PassAs<LayerImpl>();
+}
+
+bool VideoLayer::Update(ResourceUpdateQueue* queue,
+ const OcclusionTracker* occlusion) {
+ bool updated = Layer::Update(queue, occlusion);
+
+ // Video layer doesn't update any resources from the main thread side,
+ // but repaint rects need to be sent to the VideoLayerImpl via commit.
+ //
+ // This is the inefficient legacy redraw path for videos. It's better to
+ // communicate this directly to the VideoLayerImpl.
+ updated |= !update_rect_.IsEmpty();
+
+ return updated;
+}
+
+} // namespace cc