From 6a4b84d2f4a84b5fd42cb439879f46407fcd51b2 Mon Sep 17 00:00:00 2001 From: Oleg Lyovin Date: Sat, 1 Jul 2023 14:39:59 +0300 Subject: bootanimation: do not create texture for parts with count=1 When bootanimation contains part that is played only once, there is no need to create a separate texture for its frames. Such an approach allows to reduce memory consumption for typical use case of such an animations, when a part consists of a lot of frames played only once. Actually, it was already implemented earlier, but part of it was lost in 'd711ac4858337539c2188f47ef015e5b88080830'. Moreover, the remained part leads to memory leak in current implementation on BootAnimation.cpp:1712. Test: play bootanimation with part.count=1 and a lot of frames, and check memory consumption. Change-Id: If3a0fa890f6f9e7abc0db2fe96b5635a1663fb8a Signed-off-by: Oleg Lyovin --- cmds/bootanimation/BootAnimation.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'cmds/bootanimation/BootAnimation.cpp') diff --git a/cmds/bootanimation/BootAnimation.cpp b/cmds/bootanimation/BootAnimation.cpp index 27dadda40407..5b9d989bdfe6 100644 --- a/cmds/bootanimation/BootAnimation.cpp +++ b/cmds/bootanimation/BootAnimation.cpp @@ -1525,6 +1525,7 @@ bool BootAnimation::playAnimation(const Animation& animation) { for (size_t i=0 ; i 0) { glBindTexture(GL_TEXTURE_2D, frame.tid); } else { - glGenTextures(1, &frame.tid); - glBindTexture(GL_TEXTURE_2D, frame.tid); + if (part.count != 1) { + glGenTextures(1, &frame.tid); + glBindTexture(GL_TEXTURE_2D, frame.tid); + } int w, h; // Set decoding option to alpha unpremultiplied so that the R, G, B channels // of transparent pixels are preserved. -- cgit v1.2.3-59-g8ed1b