diff options
author | James Dong <jdong@google.com> | 2011-01-10 08:55:02 -0800 |
---|---|---|
committer | James Dong <jdong@google.com> | 2011-01-10 08:57:50 -0800 |
commit | 681e89c08264af948735d00552c4bd08180b06b4 (patch) | |
tree | 411b93b4f29c85ca922bbb6544320a54fab08fcb /include/media | |
parent | aa6b9f55d60702211dd2d08403c7296347f0bd7d (diff) | |
download | frameworks_base-681e89c08264af948735d00552c4bd08180b06b4.zip frameworks_base-681e89c08264af948735d00552c4bd08180b06b4.tar.gz frameworks_base-681e89c08264af948735d00552c4bd08180b06b4.tar.bz2 |
Avoid deadlock in OMX::freeNode by making sure OMXCodecObserver does not hold the last reference of OMXCodec object
bug - 3336424
Change-Id: I4c79b66a900c527e3ae6a833f76d5da1b75c5a89
Diffstat (limited to 'include/media')
-rw-r--r-- | include/media/stagefright/OMXCodec.h | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/include/media/stagefright/OMXCodec.h b/include/media/stagefright/OMXCodec.h index bba5b53..f8daa4f 100644 --- a/include/media/stagefright/OMXCodec.h +++ b/include/media/stagefright/OMXCodec.h @@ -70,8 +70,6 @@ struct OMXCodec : public MediaSource, virtual status_t pause(); - void on_message(const omx_message &msg); - // from MediaBufferObserver virtual void signalBufferReturned(MediaBuffer *buffer); @@ -79,6 +77,13 @@ protected: virtual ~OMXCodec(); private: + + // Make sure mLock is accessible to OMXCodecObserver + friend class OMXCodecObserver; + + // Call this with mLock hold + void on_message(const omx_message &msg); + enum State { DEAD, LOADED, |