// Copyright 2012 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. #ifndef CC_LAYERS_DELEGATED_RENDERER_LAYER_H_ #define CC_LAYERS_DELEGATED_RENDERER_LAYER_H_ #include "base/containers/hash_tables.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "base/synchronization/lock.h" #include "cc/base/cc_export.h" #include "cc/layers/delegated_frame_provider.h" #include "cc/layers/layer.h" #include "cc/resources/returned_resource.h" namespace cc { class CC_EXPORT DelegatedRendererLayer : public Layer { public: static scoped_refptr Create( const scoped_refptr& frame_provider); scoped_ptr CreateLayerImpl(LayerTreeImpl* tree_impl) override; void SetLayerTreeHost(LayerTreeHost* host) override; bool Update(ResourceUpdateQueue* queue, const OcclusionTracker* occlusion) override; void PushPropertiesTo(LayerImpl* impl) override; // Called by the DelegatedFrameProvider when a new frame is available to be // picked up. void ProviderHasNewFrame(); bool HasDelegatedContent() const override; protected: DelegatedRendererLayer( const scoped_refptr& frame_provider); ~DelegatedRendererLayer() override; private: scoped_refptr frame_provider_; bool should_collect_new_frame_; DelegatedFrameData* frame_data_; gfx::RectF frame_damage_; base::WeakPtrFactory weak_ptrs_; DISALLOW_COPY_AND_ASSIGN(DelegatedRendererLayer); }; } // namespace cc #endif // CC_LAYERS_DELEGATED_RENDERER_LAYER_H_