mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-10-11 03:50:03 +08:00
[mpp_buffer]: fix issue of destroy external commit frame buffer group twice
Change-Id: I496f493fbeb038ca72425d946c65a4e7cce6b684 Signed-off-by: herman.chen <herman.chen@rock-chips.com>
This commit is contained in:
@@ -683,6 +683,7 @@ void MppBufferService::destroy_group(MppBufferGroupImpl *group)
|
||||
mpp_assert(group->log_count == 0);
|
||||
}
|
||||
|
||||
mpp_assert(group->allocator);
|
||||
mpp_allocator_put(&group->allocator);
|
||||
list_del_init(&group->list_group);
|
||||
mpp_free(group);
|
||||
|
12
mpp/mpp.cpp
12
mpp/mpp.cpp
@@ -45,6 +45,7 @@ Mpp::Mpp()
|
||||
mTaskGetCount(0),
|
||||
mPacketGroup(NULL),
|
||||
mFrameGroup(NULL),
|
||||
mExternalFrameGroup(0),
|
||||
mInputPort(NULL),
|
||||
mOutputPort(NULL),
|
||||
mInputTaskQueue(NULL),
|
||||
@@ -213,11 +214,8 @@ void Mpp::clear()
|
||||
mpp_buffer_group_put(mPacketGroup);
|
||||
mPacketGroup = NULL;
|
||||
}
|
||||
if (mFrameGroup) {
|
||||
MppBufferMode mode = mpp_buffer_group_mode(mFrameGroup);
|
||||
if (MPP_BUFFER_INTERNAL == mode) {
|
||||
if (mFrameGroup && !mExternalFrameGroup) {
|
||||
mpp_buffer_group_put(mFrameGroup);
|
||||
}
|
||||
mFrameGroup = NULL;
|
||||
}
|
||||
}
|
||||
@@ -607,8 +605,14 @@ MPP_RET Mpp::control_dec(MpiCmd cmd, MppParam param)
|
||||
} break;
|
||||
case MPP_DEC_SET_EXT_BUF_GROUP: {
|
||||
mFrameGroup = (MppBufferGroup)param;
|
||||
if (param) {
|
||||
mExternalFrameGroup = 1;
|
||||
ret = mpp_buffer_group_set_listener((MppBufferGroupImpl *)param, (void *)mThreadCodec);
|
||||
mThreadCodec->signal();
|
||||
} else {
|
||||
mExternalFrameGroup = 0;
|
||||
ret = mpp_buffer_group_set_listener(NULL, (void *)mThreadCodec);
|
||||
}
|
||||
} break;
|
||||
case MPP_DEC_SET_INFO_CHANGE_READY: {
|
||||
ret = mpp_buf_slot_ready(mDec->frame_slots);
|
||||
|
Reference in New Issue
Block a user