summaryrefslogtreecommitdiffstats
path: root/include
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
commit14c858e80dfe2030c9f343dc0c6e2048e030731b (patch)
treef78e159783fddbf670cf2a2d1d582653adb7709c /include
parenteb0d0c48ebfcee5e8141ae25fe42a9eac6aae230 (diff)
downloadframeworks_av-14c858e80dfe2030c9f343dc0c6e2048e030731b.zip
frameworks_av-14c858e80dfe2030c9f343dc0c6e2048e030731b.tar.gz
frameworks_av-14c858e80dfe2030c9f343dc0c6e2048e030731b.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')
-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,