summaryrefslogtreecommitdiffstats
path: root/cmds/bootanimation
diff options
context:
space:
mode:
authorMykola Kondratenko <mykola.kondratenko@sonymobile.com>2014-04-15 09:35:44 +0200
committerNarayan Kamath <narayan@google.com>2014-04-30 10:58:20 +0000
commit0c1eeb3c8ab53954218d3b8f4be08ff21be3e985 (patch)
tree3a59dbad3788ed44780ea728f306e3eb84d915fe /cmds/bootanimation
parentade631eed0df228e343f2a00db653058ff588846 (diff)
downloadframeworks_base-0c1eeb3c8ab53954218d3b8f4be08ff21be3e985.zip
frameworks_base-0c1eeb3c8ab53954218d3b8f4be08ff21be3e985.tar.gz
frameworks_base-0c1eeb3c8ab53954218d3b8f4be08ff21be3e985.tar.bz2
Freeing frame map
FileMap memory is never released until application exit Release it now as the texture is already loaded and the memory used for the packed resource can be released. Change-Id: Id08a1e466337b3a0179684eb6a444e18147ee343
Diffstat (limited to 'cmds/bootanimation')
-rw-r--r--cmds/bootanimation/BootAnimation.cpp14
-rw-r--r--cmds/bootanimation/BootAnimation.h2
2 files changed, 10 insertions, 6 deletions
diff --git a/cmds/bootanimation/BootAnimation.cpp b/cmds/bootanimation/BootAnimation.cpp
index 1a2ab81..7f7ae2c 100644
--- a/cmds/bootanimation/BootAnimation.cpp
+++ b/cmds/bootanimation/BootAnimation.cpp
@@ -156,12 +156,12 @@ status_t BootAnimation::initTexture(Texture* texture, AssetManager& assets,
return NO_ERROR;
}
-status_t BootAnimation::initTexture(void* buffer, size_t len)
+status_t BootAnimation::initTexture(const Animation::Frame& frame)
{
//StopWatch watch("blah");
SkBitmap bitmap;
- SkMemoryStream stream(buffer, len);
+ SkMemoryStream stream(frame.map->getDataPtr(), frame.map->getDataLength());
SkImageDecoder* codec = SkImageDecoder::Factory(&stream);
if (codec) {
codec->setDitherImage(false);
@@ -171,6 +171,11 @@ status_t BootAnimation::initTexture(void* buffer, size_t len)
delete codec;
}
+ // FileMap memory is never released until application exit.
+ // Release it now as the texture is already loaded and the memory used for
+ // the packed resource can be released.
+ frame.map->release();
+
// ensure we can call getPixels(). No need to call unlock, since the
// bitmap will go out of scope when we return from this method.
bitmap.lockPixels();
@@ -406,6 +411,7 @@ bool BootAnimation::movie()
String8 desString((char const*)descMap->getDataPtr(),
descMap->getDataLength());
+ descMap->release();
char const* s = desString.string();
Animation animation;
@@ -530,9 +536,7 @@ bool BootAnimation::movie()
glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
}
- initTexture(
- frame.map->getDataPtr(),
- frame.map->getDataLength());
+ initTexture(frame);
}
if (!clearReg.isEmpty()) {
diff --git a/cmds/bootanimation/BootAnimation.h b/cmds/bootanimation/BootAnimation.h
index 22963c2..ba1c507 100644
--- a/cmds/bootanimation/BootAnimation.h
+++ b/cmds/bootanimation/BootAnimation.h
@@ -79,7 +79,7 @@ private:
};
status_t initTexture(Texture* texture, AssetManager& asset, const char* name);
- status_t initTexture(void* buffer, size_t len);
+ status_t initTexture(const Animation::Frame& frame);
bool android();
bool movie();