diff options
author | Behdad Esfahbod <behdad@google.com> | 2014-08-22 18:36:40 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-08-22 18:36:40 +0000 |
commit | 10d07727cf81c86352493e2241e17a0008c04bb5 (patch) | |
tree | 3361de4c23dd85f442c32b37ef039044c7dc80a8 /libs/minikin/Layout.cpp | |
parent | c01aa1e323e078a3103219f3646b369c73126f2b (diff) | |
parent | 56c7fb8c0633f1b02115bb4370854016f8c84fb4 (diff) | |
download | android_frameworks_minikin-10d07727cf81c86352493e2241e17a0008c04bb5.tar.gz android_frameworks_minikin-10d07727cf81c86352493e2241e17a0008c04bb5.tar.bz2 android_frameworks_minikin-10d07727cf81c86352493e2241e17a0008c04bb5.zip |
am 56c7fb8c: Allocate font vector on stack
* commit '56c7fb8c0633f1b02115bb4370854016f8c84fb4':
Allocate font vector on stack
Diffstat (limited to 'libs/minikin/Layout.cpp')
-rw-r--r-- | libs/minikin/Layout.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/libs/minikin/Layout.cpp b/libs/minikin/Layout.cpp index 897d85f..cfca18e 100644 --- a/libs/minikin/Layout.cpp +++ b/libs/minikin/Layout.cpp @@ -754,11 +754,16 @@ void Layout::doLayoutRun(const uint16_t* buf, size_t start, size_t count, size_t } void Layout::appendLayout(Layout* src, size_t start) { - // Note: size==1 is by far most common, should have specialized vector for this - std::vector<int> fontMap; + int fontMapStack[16]; + int* fontMap; + if (src->mFaces.size() < sizeof(fontMapStack) / sizeof(fontMapStack[0])) { + fontMap = fontMapStack; + } else { + fontMap = new int[src->mFaces.size()]; + } for (size_t i = 0; i < src->mFaces.size(); i++) { int font_ix = findFace(src->mFaces[i], NULL); - fontMap.push_back(font_ix); + fontMap[i] = font_ix; } int x0 = mAdvance; for (size_t i = 0; i < src->mGlyphs.size(); i++) { @@ -777,6 +782,10 @@ void Layout::appendLayout(Layout* src, size_t start) { srcBounds.offset(x0, 0); mBounds.join(srcBounds); mAdvance += src->mAdvance; + + if (fontMap != fontMapStack) { + delete[] fontMap; + } } void Layout::draw(Bitmap* surface, int x0, int y0, float size) const { |