diff options
author | Narayan Kamath <narayan@google.com> | 2014-02-21 14:15:44 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2014-02-21 14:15:44 +0000 |
commit | 2fb1fa6c88901fd16f1756a744a5f066f95c9253 (patch) | |
tree | e66a0ccfa6af89235457acb7a01379b70d9630df /libs | |
parent | 52382757753b54be7d5ed4c2cc8496cab36192d8 (diff) | |
parent | 17ab38f8a87bc90eab11373f878f220ce3031de6 (diff) | |
download | frameworks_base-2fb1fa6c88901fd16f1756a744a5f066f95c9253.zip frameworks_base-2fb1fa6c88901fd16f1756a744a5f066f95c9253.tar.gz frameworks_base-2fb1fa6c88901fd16f1756a744a5f066f95c9253.tar.bz2 |
Merge "AArch64: Make AssetAtlasService 64-bit compatible"
Diffstat (limited to 'libs')
-rw-r--r-- | libs/hwui/AssetAtlas.cpp | 15 | ||||
-rw-r--r-- | libs/hwui/AssetAtlas.h | 4 |
2 files changed, 12 insertions, 7 deletions
diff --git a/libs/hwui/AssetAtlas.cpp b/libs/hwui/AssetAtlas.cpp index fddfe90..fc86e4f 100644 --- a/libs/hwui/AssetAtlas.cpp +++ b/libs/hwui/AssetAtlas.cpp @@ -28,7 +28,7 @@ namespace uirenderer { // Lifecycle /////////////////////////////////////////////////////////////////////////////// -void AssetAtlas::init(sp<GraphicBuffer> buffer, int* map, int count) { +void AssetAtlas::init(sp<GraphicBuffer> buffer, int64_t* map, int count) { if (mImage) { return; } @@ -108,14 +108,19 @@ private: /** * TODO: This method does not take the rotation flag into account */ -void AssetAtlas::createEntries(Caches& caches, int* map, int count) { +void AssetAtlas::createEntries(Caches& caches, int64_t* map, int count) { const float width = float(mTexture->width); const float height = float(mTexture->height); for (int i = 0; i < count; ) { - SkBitmap* bitmap = (SkBitmap*) map[i++]; - int x = map[i++]; - int y = map[i++]; + SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(map[i++]); + // NOTE: We're converting from 64 bit signed values to 32 bit + // signed values. This is guaranteed to be safe because the "x" + // and "y" coordinate values are guaranteed to be representable + // with 32 bits. The array is 64 bits wide so that it can carry + // pointers on 64 bit architectures. + const int x = static_cast<int>(map[i++]); + const int y = static_cast<int>(map[i++]); bool rotated = map[i++] > 0; // Bitmaps should never be null, we're just extra paranoid diff --git a/libs/hwui/AssetAtlas.h b/libs/hwui/AssetAtlas.h index 57c8a60..2ec556e 100644 --- a/libs/hwui/AssetAtlas.h +++ b/libs/hwui/AssetAtlas.h @@ -121,7 +121,7 @@ public: * initialized. To re-initialize the atlas, you must * first call terminate(). */ - ANDROID_API void init(sp<GraphicBuffer> buffer, int* map, int count); + ANDROID_API void init(sp<GraphicBuffer> buffer, int64_t* map, int count); /** * Destroys the atlas texture. This object can be @@ -176,7 +176,7 @@ public: } private: - void createEntries(Caches& caches, int* map, int count); + void createEntries(Caches& caches, int64_t* map, int count); Texture* mTexture; Image* mImage; |