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. 4 5#include "cc/layers/io_surface_layer.h" 6 7#include "cc/layers/io_surface_layer_impl.h" 8 9namespace cc { 10 11scoped_refptr<IOSurfaceLayer> IOSurfaceLayer::Create() { 12 return make_scoped_refptr(new IOSurfaceLayer()); 13} 14 15IOSurfaceLayer::IOSurfaceLayer() : Layer(), io_surface_id_(0) {} 16 17IOSurfaceLayer::~IOSurfaceLayer() {} 18 19void IOSurfaceLayer::SetIOSurfaceProperties(uint32_t io_surface_id, 20 gfx::Size size) { 21 io_surface_id_ = io_surface_id; 22 io_surface_size_ = size; 23 SetNeedsCommit(); 24} 25 26scoped_ptr<LayerImpl> IOSurfaceLayer::CreateLayerImpl( 27 LayerTreeImpl* tree_impl) { 28 return IOSurfaceLayerImpl::Create(tree_impl, layer_id_).PassAs<LayerImpl>(); 29} 30 31bool IOSurfaceLayer::DrawsContent() const { 32 return io_surface_id_ && Layer::DrawsContent(); 33} 34 35void IOSurfaceLayer::PushPropertiesTo(LayerImpl* layer) { 36 Layer::PushPropertiesTo(layer); 37 38 IOSurfaceLayerImpl* io_surface_layer = 39 static_cast<IOSurfaceLayerImpl*>(layer); 40 io_surface_layer->SetIOSurfaceProperties(io_surface_id_, io_surface_size_); 41} 42 43bool IOSurfaceLayer::Update(ResourceUpdateQueue* queue, 44 const OcclusionTracker* occlusion) { 45 bool updated = Layer::Update(queue, occlusion); 46 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(); 50} 51 52} // namespace cc 53