| // Copyright 2013 The Flutter Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #include "flutter/flow/layers/cacheable_layer.h" | |
| #include "flutter/flow/raster_cache.h" | |
| #include "flutter/flow/raster_cache_item.h" | |
| namespace flutter { | |
| AutoCache::AutoCache(RasterCacheItem* raster_cache_item, | |
| PrerollContext* context, | |
| const SkMatrix& matrix) | |
| : raster_cache_item_(raster_cache_item), | |
| context_(context), | |
| matrix_(matrix) { | |
| if (IsCacheEnabled()) { | |
| raster_cache_item->PrerollSetup(context, matrix); | |
| } | |
| } | |
| bool AutoCache::IsCacheEnabled() { | |
| return raster_cache_item_ && context_ && context_->raster_cache; | |
| } | |
| AutoCache::~AutoCache() { | |
| if (IsCacheEnabled()) { | |
| raster_cache_item_->PrerollFinalize(context_, matrix_); | |
| } | |
| } | |
| CacheableContainerLayer::CacheableContainerLayer(int layer_cached_threshold, | |
| bool can_cache_children) { | |
| layer_raster_cache_item_ = LayerRasterCacheItem::Make( | |
| this, layer_cached_threshold, can_cache_children); | |
| } | |
| } // namespace flutter |