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 const LayerSettings
& settings
) {
13 return make_scoped_refptr(new IOSurfaceLayer(settings
));
16 IOSurfaceLayer::IOSurfaceLayer(const LayerSettings
& settings
)
17 : Layer(settings
), io_surface_id_(0) {
20 IOSurfaceLayer::~IOSurfaceLayer() {}
22 void IOSurfaceLayer::SetIOSurfaceProperties(uint32_t io_surface_id
,
23 const gfx::Size
& size
) {
24 io_surface_id_
= io_surface_id
;
25 io_surface_size_
= size
;
26 UpdateDrawsContent(HasDrawableContent());
30 scoped_ptr
<LayerImpl
> IOSurfaceLayer::CreateLayerImpl(
31 LayerTreeImpl
* tree_impl
) {
32 return IOSurfaceLayerImpl::Create(tree_impl
, layer_id_
);
35 bool IOSurfaceLayer::HasDrawableContent() const {
36 return io_surface_id_
&& Layer::HasDrawableContent();
39 void IOSurfaceLayer::PushPropertiesTo(LayerImpl
* layer
) {
40 Layer::PushPropertiesTo(layer
);
42 IOSurfaceLayerImpl
* io_surface_layer
=
43 static_cast<IOSurfaceLayerImpl
*>(layer
);
44 io_surface_layer
->SetIOSurfaceProperties(io_surface_id_
, io_surface_size_
);
47 bool IOSurfaceLayer::Update(ResourceUpdateQueue
* queue
,
48 const OcclusionTracker
<Layer
>* occlusion
) {
49 bool updated
= Layer::Update(queue
, occlusion
);
51 // This layer doesn't update any resources from the main thread side,
52 // but repaint rects need to be sent to the layer impl via commit.
53 return updated
|| !update_rect_
.IsEmpty();