From a67d538881413c4b73e7c9854e293b71b407e9c2 Mon Sep 17 00:00:00 2001 From: Andreas Huber Date: Thu, 10 Dec 2009 15:32:12 -0800 Subject: [PATCH] remote destructors are not synchronously executed by the binder... --- media/libstagefright/AwesomePlayer.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) 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; } }