summaryrefslogtreecommitdiffstats
path: root/cmds
diff options
context:
space:
mode:
authorNarayan Kamath <narayan@google.com>2014-04-30 15:12:58 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-04-30 15:12:58 +0000
commitdbbf431b289bb7a01b43db3412ecab00abe18362 (patch)
tree4f5d00c79726901706cd534547d4d4707b2e9e42 /cmds
parent9a76e9ba1adbdf7cc431b1e6fe454cf0c5d900de (diff)
parentd0f7f41828493b0679e908f7bb3ed3b8e838c463 (diff)
downloadframeworks_base-dbbf431b289bb7a01b43db3412ecab00abe18362.zip
frameworks_base-dbbf431b289bb7a01b43db3412ecab00abe18362.tar.gz
frameworks_base-dbbf431b289bb7a01b43db3412ecab00abe18362.tar.bz2
am d0f7f418: Merge "Freeing frame map"
* commit 'd0f7f41828493b0679e908f7bb3ed3b8e838c463': Freeing frame map
Diffstat (limited to 'cmds')
-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();