am d0f7f418: Merge "Freeing frame map"

* commit 'd0f7f41828493b0679e908f7bb3ed3b8e838c463':
  Freeing frame map
This commit is contained in:
Narayan Kamath
2014-04-30 15:12:58 +00:00
committed by Android Git Automerger
2 changed files with 10 additions and 6 deletions

View File

@ -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()) {

View File

@ -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();