From 6328185b6cc632f85ff640f6e854ab33815ae97f Mon Sep 17 00:00:00 2001 From: James Dong Date: Mon, 10 Jan 2011 08:55:02 -0800 Subject: Avoid deadlock in OMX::freeNode by making sure OMXCodecObserver does not hold the last reference of OMXCodec object - do not merge cherry-picked from: I4c79b66a900c527e3ae6a833f76d5da1b75c5a89 bug - 3336424 Change-Id: I2d8ecb79a5422342988c195c012c9e6327ac457a --- include/media/stagefright/OMXCodec.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/media/stagefright/OMXCodec.h b/include/media/stagefright/OMXCodec.h index fed67613ae52..8274dfbf9577 100644 --- a/include/media/stagefright/OMXCodec.h +++ b/include/media/stagefright/OMXCodec.h @@ -60,8 +60,6 @@ struct OMXCodec : public MediaSource, virtual status_t pause(); - void on_message(const omx_message &msg); - // from MediaBufferObserver virtual void signalBufferReturned(MediaBuffer *buffer); @@ -69,6 +67,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, -- cgit v1.2.3-59-g8ed1b