[mpp_mem_pool]: Fix destruction error on Android

The Mutex is destroyed before MppMemService. Use get_lock() to avoid it.

Change-Id: Iba5852280ee2e5804fdfa45da008500fb1dc9225
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
This commit is contained in:
Herman Chen
2021-05-07 15:58:04 +08:00
parent b2bbadf045
commit cee0762db9

View File

@@ -48,10 +48,15 @@ class MppMemPoolService
{
public:
static MppMemPoolService* getInstance() {
AutoMutex auto_lock(mLock);
AutoMutex auto_lock(get_lock());
static MppMemPoolService pool_service;
return &pool_service;
}
static Mutex *get_lock() {
static Mutex lock;
return &lock;
}
MppMemPoolImpl *get_pool(size_t size);
void put_pool(MppMemPoolImpl *impl);
@@ -59,11 +64,8 @@ private:
MppMemPoolService();
~MppMemPoolService();
struct list_head mLink;
static Mutex mLock;
};
Mutex MppMemPoolService::mLock;
MppMemPoolService::MppMemPoolService()
{
INIT_LIST_HEAD(&mLink);
@@ -100,7 +102,7 @@ MppMemPoolImpl *MppMemPoolService::get_pool(size_t size)
INIT_LIST_HEAD(&pool->used);
INIT_LIST_HEAD(&pool->unused);
INIT_LIST_HEAD(&pool->service_link);
AutoMutex auto_lock(mLock);
AutoMutex auto_lock(get_lock());
list_add_tail(&pool->service_link, &mLink);
return pool;
@@ -136,7 +138,7 @@ void MppMemPoolService::put_pool(MppMemPoolImpl *impl)
mpp_assert(!impl->unused_count);
{
AutoMutex auto_lock(mLock);
AutoMutex auto_lock(get_lock());
list_del_init(&impl->service_link);
}