summaryrefslogtreecommitdiffstats
path: root/media/libmediaplayerservice/nuplayer/HTTPLiveSource.cpp
diff options
context:
space:
mode:
authorChong Zhang <chz@google.com>2014-08-12 21:25:48 -0700
committerChong Zhang <chz@google.com>2014-08-14 12:18:48 -0700
commit1228d6b175de8b21787cbe0c6c4bb5642f4d555e (patch)
tree187b3da8fd4c4d8b8131f3c3095f0d894863861a /media/libmediaplayerservice/nuplayer/HTTPLiveSource.cpp
parente6e18e8de729316b3fac7733f9ebc7f1b3feba95 (diff)
downloadframeworks_av-1228d6b175de8b21787cbe0c6c4bb5642f4d555e.zip
frameworks_av-1228d6b175de8b21787cbe0c6c4bb5642f4d555e.tar.gz
frameworks_av-1228d6b175de8b21787cbe0c6c4bb5642f4d555e.tar.bz2
use dedicated looper for GenericSource
- handle setVideoSurface in deferred action, and return to client immediately - handle GenericSource's prepareAsync on its own looper, instead of sharing looper with NuPlayer - let HTTPLiveSource share looper with LiveSession, instead of NuPlayer - remove reflector in RTSPSource Bug: 16892748 Change-Id: I1aed557320052012065f5a90adbcb03c238da988
Diffstat (limited to 'media/libmediaplayerservice/nuplayer/HTTPLiveSource.cpp')
-rw-r--r--media/libmediaplayerservice/nuplayer/HTTPLiveSource.cpp15
1 files changed, 11 insertions, 4 deletions
diff --git a/media/libmediaplayerservice/nuplayer/HTTPLiveSource.cpp b/media/libmediaplayerservice/nuplayer/HTTPLiveSource.cpp
index c713d39..a003c81 100644
--- a/media/libmediaplayerservice/nuplayer/HTTPLiveSource.cpp
+++ b/media/libmediaplayerservice/nuplayer/HTTPLiveSource.cpp
@@ -62,17 +62,24 @@ NuPlayer::HTTPLiveSource::HTTPLiveSource(
NuPlayer::HTTPLiveSource::~HTTPLiveSource() {
if (mLiveSession != NULL) {
mLiveSession->disconnect();
- mLiveSession.clear();
+ mLiveLooper->unregisterHandler(mLiveSession->id());
+ mLiveLooper->unregisterHandler(id());
mLiveLooper->stop();
+
+ mLiveSession.clear();
mLiveLooper.clear();
}
}
void NuPlayer::HTTPLiveSource::prepareAsync() {
- mLiveLooper = new ALooper;
- mLiveLooper->setName("http live");
- mLiveLooper->start();
+ if (mLiveLooper == NULL) {
+ mLiveLooper = new ALooper;
+ mLiveLooper->setName("http live");
+ mLiveLooper->start();
+
+ mLiveLooper->registerHandler(this);
+ }
sp<AMessage> notify = new AMessage(kWhatSessionNotify, id());