2 * Copyright (C) 2013 The Android Open Source Project
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 #define ATRACE_TAG ATRACE_TAG_VIEW
22 #include <utils/Trace.h>
25 #include "DisplayList.h"
26 #include "DisplayListOp.h"
27 #include "DisplayListLogBuffer.h"
30 namespace uirenderer {
32 DisplayListData::DisplayListData()
33 : projectionReceiveIndex(-1)
37 DisplayListData::~DisplayListData() {
41 void DisplayListData::cleanupResources() {
42 Caches& caches = Caches::getInstance();
43 caches.unregisterFunctors(functors.size());
44 caches.resourceCache.lock();
46 for (size_t i = 0; i < bitmapResources.size(); i++) {
47 caches.resourceCache.decrementRefcountLocked(bitmapResources.itemAt(i));
50 for (size_t i = 0; i < ownedBitmapResources.size(); i++) {
51 const SkBitmap* bitmap = ownedBitmapResources.itemAt(i);
52 caches.resourceCache.decrementRefcountLocked(bitmap);
53 caches.resourceCache.destructorLocked(bitmap);
56 for (size_t i = 0; i < patchResources.size(); i++) {
57 caches.resourceCache.decrementRefcountLocked(patchResources.itemAt(i));
60 for (size_t i = 0; i < sourcePaths.size(); i++) {
61 caches.resourceCache.decrementRefcountLocked(sourcePaths.itemAt(i));
64 for (size_t i = 0; i < layers.size(); i++) {
65 caches.resourceCache.decrementRefcountLocked(layers.itemAt(i));
68 caches.resourceCache.unlock();
70 for (size_t i = 0; i < paints.size(); i++) {
71 delete paints.itemAt(i);
74 for (size_t i = 0; i < regions.size(); i++) {
75 delete regions.itemAt(i);
78 for (size_t i = 0; i < paths.size(); i++) {
79 delete paths.itemAt(i);
82 bitmapResources.clear();
83 ownedBitmapResources.clear();
84 patchResources.clear();
92 void DisplayListData::addChild(DrawRenderNodeOp* op) {
93 LOG_ALWAYS_FATAL_IF(!op->renderNode(), "DrawRenderNodeOp with no render node!");
96 mReferenceHolders.push(op->renderNode());
99 }; // namespace uirenderer
100 }; // namespace android