diff options
| author | 2015-10-01 10:16:44 +0000 | |
|---|---|---|
| committer | 2015-10-01 10:16:44 +0000 | |
| commit | 6706b71d7cfb9a916fd482189c04a0d59c19c103 (patch) | |
| tree | b093743b40e61d3bf82bc18f20d538d28c3ae124 | |
| parent | 05420e77f5358fc7a8996b39daf3aa976b826b53 (diff) | |
| parent | 86e67d708d738807c843850a3b6c9170e514ff8f (diff) | |
am 86e67d70: Merge "frameworks/base: delete TinyHashMap"
* commit '86e67d708d738807c843850a3b6c9170e514ff8f':
frameworks/base: delete TinyHashMap
| -rw-r--r-- | libs/hwui/DeferredDisplayList.cpp | 9 | ||||
| -rw-r--r-- | libs/hwui/DeferredDisplayList.h | 5 | ||||
| -rw-r--r-- | libs/hwui/utils/TinyHashMap.h | 70 |
3 files changed, 10 insertions, 74 deletions
diff --git a/libs/hwui/DeferredDisplayList.cpp b/libs/hwui/DeferredDisplayList.cpp index f05857c43a35..03aecd42d16a 100644 --- a/libs/hwui/DeferredDisplayList.cpp +++ b/libs/hwui/DeferredDisplayList.cpp @@ -536,7 +536,11 @@ void DeferredDisplayList::addDrawOp(OpenGLRenderer& renderer, DrawOp* op) { if (deferInfo.mergeable) { // Try to merge with any existing batch with same mergeId. - if (mMergingBatches[deferInfo.batchId].get(deferInfo.mergeId, targetBatch)) { + std::unordered_map<mergeid_t, DrawBatch*>& mergingBatch + = mMergingBatches[deferInfo.batchId]; + auto getResult = mergingBatch.find(deferInfo.mergeId); + if (getResult != mergingBatch.end()) { + targetBatch = getResult->second; if (!((MergingDrawBatch*) targetBatch)->canMergeWith(op, state)) { targetBatch = nullptr; } @@ -580,7 +584,8 @@ void DeferredDisplayList::addDrawOp(OpenGLRenderer& renderer, DrawOp* op) { if (deferInfo.mergeable) { targetBatch = new MergingDrawBatch(deferInfo, renderer.getViewportWidth(), renderer.getViewportHeight()); - mMergingBatches[deferInfo.batchId].put(deferInfo.mergeId, targetBatch); + mMergingBatches[deferInfo.batchId].insert( + std::make_pair(deferInfo.mergeId, targetBatch)); } else { targetBatch = new DrawBatch(deferInfo); mBatchLookup[deferInfo.batchId] = targetBatch; diff --git a/libs/hwui/DeferredDisplayList.h b/libs/hwui/DeferredDisplayList.h index 160c1ad2d1f6..3bc4904d6921 100644 --- a/libs/hwui/DeferredDisplayList.h +++ b/libs/hwui/DeferredDisplayList.h @@ -17,10 +17,11 @@ #ifndef ANDROID_HWUI_DEFERRED_DISPLAY_LIST_H #define ANDROID_HWUI_DEFERRED_DISPLAY_LIST_H +#include <unordered_map> + #include <utils/Errors.h> #include <utils/LinearAllocator.h> #include <utils/Vector.h> -#include <utils/TinyHashMap.h> #include "Matrix.h" #include "OpenGLRenderer.h" @@ -176,7 +177,7 @@ private: * MergingDrawBatch of that id. These ids are unique per draw type and guaranteed to not * collide, which avoids the need to resolve mergeid collisions. */ - TinyHashMap<mergeid_t, DrawBatch*> mMergingBatches[kOpBatch_Count]; + std::unordered_map<mergeid_t, DrawBatch*> mMergingBatches[kOpBatch_Count]; LinearAllocator mAllocator; }; diff --git a/libs/hwui/utils/TinyHashMap.h b/libs/hwui/utils/TinyHashMap.h deleted file mode 100644 index 4ff9a42f6d5d..000000000000 --- a/libs/hwui/utils/TinyHashMap.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (C) 2013 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef ANDROID_HWUI_TINYHASHMAP_H -#define ANDROID_HWUI_TINYHASHMAP_H - -#include <utils/BasicHashtable.h> - -namespace android { -namespace uirenderer { - -/** - * A very simple hash map that doesn't allow duplicate keys, overwriting the older entry. - */ -template <typename TKey, typename TValue> -class TinyHashMap { -public: - typedef key_value_pair_t<TKey, TValue> TEntry; - - /** - * Puts an entry in the hash, removing any existing entry with the same key - */ - void put(TKey key, TValue value) { - hash_t hash = android::hash_type(key); - - ssize_t index = mTable.find(-1, hash, key); - if (index != -1) { - mTable.removeAt(index); - } - - TEntry initEntry(key, value); - mTable.add(hash, initEntry); - } - - /** - * Return true if key is in the map, in which case stores the value in the output ref - */ - bool get(TKey key, TValue& outValue) { - hash_t hash = android::hash_type(key); - ssize_t index = mTable.find(-1, hash, key); - if (index == -1) { - return false; - } - outValue = mTable.entryAt(index).value; - return true; - } - - void clear() { mTable.clear(); } - -private: - BasicHashtable<TKey, TEntry> mTable; -}; - -}; // namespace uirenderer -}; // namespace android - -#endif // ANDROID_HWUI_TINYHASHMAP_H |