mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-15 18:59:54 +00:00
lottie/optimization: reserve() memory ahead before calling path api
to optimize the number of allocation. Change-Id: Iab0b8db715c868de0a0f4a0c688421cc11be4b01
This commit is contained in:
parent
f6658ae623
commit
6d5d456d0f
@ -904,23 +904,7 @@ LOTShapeItem::LOTShapeItem(LOTShapeData *data):LOTPathDataItem(data->isStatic())
|
||||
|
||||
VPath LOTShapeItem::getPath(int frameNo)
|
||||
{
|
||||
LottieShapeData shapeData = mData->mShape.value(frameNo);
|
||||
|
||||
if (shapeData.mPoints.empty())
|
||||
return VPath();
|
||||
|
||||
VPath path;
|
||||
|
||||
int size = shapeData.mPoints.size();
|
||||
const VPointF *points = shapeData.mPoints.data();
|
||||
path.moveTo(points[0]);
|
||||
for (int i = 1 ; i < size; i+=3) {
|
||||
path.cubicTo(points[i], points[i+1], points[i+2]);
|
||||
}
|
||||
if (shapeData.mClosed)
|
||||
path.close();
|
||||
|
||||
return path;
|
||||
return mData->mShape.value(frameNo).toPath();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -109,6 +109,11 @@ public:
|
||||
VPath path;
|
||||
int size = mPoints.size();
|
||||
const VPointF *points = mPoints.data();
|
||||
/* reserve exact memory requirement at once
|
||||
* ptSize = size + 1(size + close)
|
||||
* elmSize = size/3 cubic + 1 move + 1 close
|
||||
*/
|
||||
path.reserve(size + 1 , size/3 + 2);
|
||||
path.moveTo(points[0]);
|
||||
for (int i = 1 ; i < size; i+=3) {
|
||||
path.cubicTo(points[i], points[i+1], points[i+2]);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user