summaryrefslogtreecommitdiffstats
path: root/include/media
diff options
context:
space:
mode:
authorJames Dong <jdong@google.com>2011-01-10 08:55:02 -0800
committerJames Dong <jdong@google.com>2011-01-10 08:57:50 -0800
commit681e89c08264af948735d00552c4bd08180b06b4 (patch)
tree411b93b4f29c85ca922bbb6544320a54fab08fcb /include/media
parentaa6b9f55d60702211dd2d08403c7296347f0bd7d (diff)
downloadframeworks_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.h9
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,