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
;
23 UpdateDrawsContent(HasDrawableContent());
27 scoped_ptr
<LayerImpl
> IOSurfaceLayer::CreateLayerImpl(
28 LayerTreeImpl
* tree_impl
) {
29 return IOSurfaceLayerImpl::Create(tree_impl
, layer_id_
);
32 bool IOSurfaceLayer::HasDrawableContent() const {
33 return io_surface_id_
&& Layer::HasDrawableContent();
36 void IOSurfaceLayer::PushPropertiesTo(LayerImpl
* layer
) {
37 Layer::PushPropertiesTo(layer
);
39 IOSurfaceLayerImpl
* io_surface_layer
=
40 static_cast<IOSurfaceLayerImpl
*>(layer
);
41 io_surface_layer
->SetIOSurfaceProperties(io_surface_id_
, io_surface_size_
);
44 bool IOSurfaceLayer::Update(ResourceUpdateQueue
* queue
,
45 const OcclusionTracker
<Layer
>* occlusion
) {
46 bool updated
= Layer::Update(queue
, occlusion
);
48 // This layer doesn't update any resources from the main thread side,
49 // but repaint rects need to be sent to the layer impl via commit.
50 return updated
|| !update_rect_
.IsEmpty();