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.
5 #include "cc/layers/io_surface_layer.h"
7 #include "cc/layers/io_surface_layer_impl.h"
11 scoped_refptr
<IOSurfaceLayer
> IOSurfaceLayer::Create() {
12 return make_scoped_refptr(new IOSurfaceLayer());
15 IOSurfaceLayer::IOSurfaceLayer() : Layer(), io_surface_id_(0) {}
17 IOSurfaceLayer::~IOSurfaceLayer() {}
19 void IOSurfaceLayer::SetIOSurfaceProperties(uint32_t io_surface_id
,
20 const gfx::Size
& size
) {
21 io_surface_id_
= io_surface_id
;
22 io_surface_size_
= size
;
26 scoped_ptr
<LayerImpl
> IOSurfaceLayer::CreateLayerImpl(
27 LayerTreeImpl
* tree_impl
) {
28 return IOSurfaceLayerImpl::Create(tree_impl
, layer_id_
).PassAs
<LayerImpl
>();
31 bool IOSurfaceLayer::DrawsContent() const {
32 return io_surface_id_
&& Layer::DrawsContent();
35 void IOSurfaceLayer::PushPropertiesTo(LayerImpl
* layer
) {
36 Layer::PushPropertiesTo(layer
);
38 IOSurfaceLayerImpl
* io_surface_layer
=
39 static_cast<IOSurfaceLayerImpl
*>(layer
);
40 io_surface_layer
->SetIOSurfaceProperties(io_surface_id_
, io_surface_size_
);
43 bool IOSurfaceLayer::Update(ResourceUpdateQueue
* queue
,
44 const OcclusionTracker
<Layer
>* occlusion
) {
45 bool updated
= Layer::Update(queue
, occlusion
);
47 // This layer doesn't update any resources from the main thread side,
48 // but repaint rects need to be sent to the layer impl via commit.
49 return updated
|| !update_rect_
.IsEmpty();