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 <ovlevin@sberdevices.ru>
diff --git a/cmds/bootanimation/BootAnimation.cpp b/cmds/bootanimation/BootAnimation.cpp
index 27dadda..5b9d989 100644
--- a/cmds/bootanimation/BootAnimation.cpp
+++ b/cmds/bootanimation/BootAnimation.cpp
@@ -1525,6 +1525,7 @@
     for (size_t i=0 ; i<pcount ; i++) {
         const Animation::Part& part(animation.parts[i]);
         const size_t fcount = part.frames.size();
+        glBindTexture(GL_TEXTURE_2D, 0);
 
         // Handle animation package
         if (part.animation != nullptr) {
@@ -1601,8 +1602,10 @@
                 if (r > 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.