diff --git a/media/libstagefright/AwesomePlayer.cpp b/media/libstagefright/AwesomePlayer.cpp index a7a0a12128626..973815b1a5214 100644 --- a/media/libstagefright/AwesomePlayer.cpp +++ b/media/libstagefright/AwesomePlayer.cpp @@ -20,6 +20,7 @@ #include "include/AwesomePlayer.h" +#include #include #include #include @@ -313,6 +314,12 @@ void AwesomePlayer::initRenderer_l() { CHECK(meta->findInt32(kKeyWidth, &decodedWidth)); CHECK(meta->findInt32(kKeyHeight, &decodedHeight)); + mVideoRenderer.clear(); + + // Must ensure that mVideoRenderer's destructor is actually executed + // before creating a new one. + IPCThreadState::self()->flushCommands(); + mVideoRenderer = mClient.interface()->createRenderer( mISurface, component, @@ -530,6 +537,12 @@ void AwesomePlayer::onEvent(int32_t code) { return; } + if (mVideoBuffer->range_length() == 0) { + mVideoBuffer->release(); + mVideoBuffer = NULL; + continue; + } + break; } }