diff options
| -rw-r--r-- | media/libstagefright/AwesomePlayer.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/media/libstagefright/AwesomePlayer.cpp b/media/libstagefright/AwesomePlayer.cpp index a7a0a1212862..973815b1a521 100644 --- a/media/libstagefright/AwesomePlayer.cpp +++ b/media/libstagefright/AwesomePlayer.cpp @@ -20,6 +20,7 @@ #include "include/AwesomePlayer.h" +#include <binder/IPCThreadState.h> #include <media/stagefright/AudioPlayer.h> #include <media/stagefright/DataSource.h> #include <media/stagefright/FileSource.h> @@ -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; } } |