diff options
author | Ronghua Wu <ronghuawu@google.com> | 2015-07-21 09:50:48 -0700 |
---|---|---|
committer | Ronghua Wu <ronghuawu@google.com> | 2015-07-21 19:04:41 -0700 |
commit | 68845c14ebf2c7282800b1abffde38d8e9a57aab (patch) | |
tree | c4e924999d0ed48ae4c1a08d44777cbc5b161906 /media/libstagefright/MediaCodec.cpp | |
parent | f8f669d7a727e4ad5505cd85741f4d50dbaffbf9 (diff) | |
download | frameworks_av-68845c14ebf2c7282800b1abffde38d8e9a57aab.zip frameworks_av-68845c14ebf2c7282800b1abffde38d8e9a57aab.tar.gz frameworks_av-68845c14ebf2c7282800b1abffde38d8e9a57aab.tar.bz2 |
libmediaplayerservice: propagate caller pid to MediaCodec.
Bug: 22630317
Change-Id: I0337d74f4ef04bf96f2de83f33d98d0d7da47c12
Diffstat (limited to 'media/libstagefright/MediaCodec.cpp')
-rw-r--r-- | media/libstagefright/MediaCodec.cpp | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/media/libstagefright/MediaCodec.cpp b/media/libstagefright/MediaCodec.cpp index b444687..cd59709 100644 --- a/media/libstagefright/MediaCodec.cpp +++ b/media/libstagefright/MediaCodec.cpp @@ -104,8 +104,11 @@ private: DISALLOW_EVIL_CONSTRUCTORS(ResourceManagerClient); }; -MediaCodec::ResourceManagerServiceProxy::ResourceManagerServiceProxy() - : mPid(IPCThreadState::self()->getCallingPid()) { +MediaCodec::ResourceManagerServiceProxy::ResourceManagerServiceProxy(pid_t pid) + : mPid(pid) { + if (mPid == MediaCodec::kNoPid) { + mPid = IPCThreadState::self()->getCallingPid(); + } } MediaCodec::ResourceManagerServiceProxy::~ResourceManagerServiceProxy() { @@ -161,8 +164,8 @@ bool MediaCodec::ResourceManagerServiceProxy::reclaimResource( // static sp<MediaCodec> MediaCodec::CreateByType( - const sp<ALooper> &looper, const char *mime, bool encoder, status_t *err) { - sp<MediaCodec> codec = new MediaCodec(looper); + const sp<ALooper> &looper, const char *mime, bool encoder, status_t *err, pid_t pid) { + sp<MediaCodec> codec = new MediaCodec(looper, pid); const status_t ret = codec->init(mime, true /* nameIsType */, encoder); if (err != NULL) { @@ -173,8 +176,8 @@ sp<MediaCodec> MediaCodec::CreateByType( // static sp<MediaCodec> MediaCodec::CreateByComponentName( - const sp<ALooper> &looper, const char *name, status_t *err) { - sp<MediaCodec> codec = new MediaCodec(looper); + const sp<ALooper> &looper, const char *name, status_t *err, pid_t pid) { + sp<MediaCodec> codec = new MediaCodec(looper, pid); const status_t ret = codec->init(name, false /* nameIsType */, false /* encoder */); if (err != NULL) { @@ -232,7 +235,7 @@ sp<PersistentSurface> MediaCodec::CreatePersistentInputSurface() { return new PersistentSurface(bufferProducer, bufferConsumer); } -MediaCodec::MediaCodec(const sp<ALooper> &looper) +MediaCodec::MediaCodec(const sp<ALooper> &looper, pid_t pid) : mState(UNINITIALIZED), mReleasedByResourceManager(false), mLooper(looper), @@ -242,7 +245,7 @@ MediaCodec::MediaCodec(const sp<ALooper> &looper) mStickyError(OK), mSoftRenderer(NULL), mResourceManagerClient(new ResourceManagerClient(this)), - mResourceManagerService(new ResourceManagerServiceProxy()), + mResourceManagerService(new ResourceManagerServiceProxy(pid)), mBatteryStatNotified(false), mIsVideo(false), mVideoWidth(0), |