mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-10-11 12:00:07 +08:00
[base]: Disable default print on exit
Use finalizing flag to disable print on MppBufferService destroy. Change-Id: I8f17a6b8ed77101cf4f240dad05f8e886968c3c6 Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
This commit is contained in:
@@ -24,8 +24,9 @@
|
|||||||
#define MPP_BUF_DBG_FUNCTION (0x00000001)
|
#define MPP_BUF_DBG_FUNCTION (0x00000001)
|
||||||
#define MPP_BUF_DBG_OPS_RUNTIME (0x00000002)
|
#define MPP_BUF_DBG_OPS_RUNTIME (0x00000002)
|
||||||
#define MPP_BUF_DBG_OPS_HISTORY (0x00000004)
|
#define MPP_BUF_DBG_OPS_HISTORY (0x00000004)
|
||||||
#define MPP_BUF_DBG_CLR_ON_EXIT (0x00000008)
|
#define MPP_BUF_DBG_CLR_ON_EXIT (0x00000010)
|
||||||
#define MPP_BUF_DBG_CHECK_SIZE (0x00000010)
|
#define MPP_BUF_DBG_DUMP_ON_EXIT (0x00000020)
|
||||||
|
#define MPP_BUF_DBG_CHECK_SIZE (0x00000100)
|
||||||
|
|
||||||
#define mpp_buf_dbg(flag, fmt, ...) _mpp_dbg(mpp_buffer_debug, flag, fmt, ## __VA_ARGS__)
|
#define mpp_buf_dbg(flag, fmt, ...) _mpp_dbg(mpp_buffer_debug, flag, fmt, ## __VA_ARGS__)
|
||||||
#define mpp_buf_dbg_f(flag, fmt, ...) _mpp_dbg_f(mpp_buffer_debug, flag, fmt, ## __VA_ARGS__)
|
#define mpp_buf_dbg_f(flag, fmt, ...) _mpp_dbg_f(mpp_buffer_debug, flag, fmt, ## __VA_ARGS__)
|
||||||
|
@@ -71,6 +71,7 @@ private:
|
|||||||
RK_U32 get_group_id();
|
RK_U32 get_group_id();
|
||||||
RK_U32 group_id;
|
RK_U32 group_id;
|
||||||
RK_U32 group_count;
|
RK_U32 group_count;
|
||||||
|
RK_U32 finalizing;
|
||||||
|
|
||||||
// misc group for internal / externl buffer with different type
|
// misc group for internal / externl buffer with different type
|
||||||
MppBufferGroupImpl *misc[MPP_BUFFER_MODE_BUTT][MPP_BUFFER_TYPE_BUTT];
|
MppBufferGroupImpl *misc[MPP_BUFFER_MODE_BUTT][MPP_BUFFER_TYPE_BUTT];
|
||||||
@@ -96,6 +97,7 @@ public:
|
|||||||
void put_group(MppBufferGroupImpl *group);
|
void put_group(MppBufferGroupImpl *group);
|
||||||
MppBufferGroupImpl *get_group_by_id(RK_U32 id);
|
MppBufferGroupImpl *get_group_by_id(RK_U32 id);
|
||||||
void dump_misc_group();
|
void dump_misc_group();
|
||||||
|
RK_U32 is_finalizing();
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char *mode2str[MPP_BUFFER_MODE_BUTT] = {
|
static const char *mode2str[MPP_BUFFER_MODE_BUTT] = {
|
||||||
@@ -183,11 +185,14 @@ static void buffer_group_dump_log(MppBufferGroupImpl *group)
|
|||||||
|
|
||||||
static MPP_RET deinit_buffer_no_lock(MppBufferImpl *buffer, const char *caller)
|
static MPP_RET deinit_buffer_no_lock(MppBufferImpl *buffer, const char *caller)
|
||||||
{
|
{
|
||||||
|
if (!MppBufferService::get_instance()->is_finalizing()) {
|
||||||
mpp_assert(buffer->ref_count == 0);
|
mpp_assert(buffer->ref_count == 0);
|
||||||
mpp_assert(buffer->used == 0);
|
mpp_assert(buffer->used == 0);
|
||||||
|
}
|
||||||
|
|
||||||
list_del_init(&buffer->list_status);
|
list_del_init(&buffer->list_status);
|
||||||
MppBufferGroupImpl *group = SEARCH_GROUP_BY_ID(buffer->group_id);
|
MppBufferGroupImpl *group = SEARCH_GROUP_BY_ID(buffer->group_id);
|
||||||
|
if (group) {
|
||||||
BufferOp func = (group->mode == MPP_BUFFER_INTERNAL) ?
|
BufferOp func = (group->mode == MPP_BUFFER_INTERNAL) ?
|
||||||
(group->alloc_api->free) :
|
(group->alloc_api->free) :
|
||||||
(group->alloc_api->release);
|
(group->alloc_api->release);
|
||||||
@@ -200,6 +205,9 @@ static MPP_RET deinit_buffer_no_lock(MppBufferImpl *buffer, const char *caller)
|
|||||||
if (group->is_orphan && !group->usage) {
|
if (group->is_orphan && !group->usage) {
|
||||||
MppBufferService::get_instance()->put_group(group);
|
MppBufferService::get_instance()->put_group(group);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
mpp_assert(MppBufferService::get_instance()->is_finalizing());
|
||||||
|
}
|
||||||
|
|
||||||
mpp_free(buffer);
|
mpp_free(buffer);
|
||||||
|
|
||||||
@@ -555,7 +563,8 @@ MppBufferGroupImpl *mpp_buffer_get_misc_group(MppBufferMode mode, MppBufferType
|
|||||||
|
|
||||||
MppBufferService::MppBufferService()
|
MppBufferService::MppBufferService()
|
||||||
: group_id(0),
|
: group_id(0),
|
||||||
group_count(0)
|
group_count(0),
|
||||||
|
finalizing(0)
|
||||||
{
|
{
|
||||||
RK_S32 i, j;
|
RK_S32 i, j;
|
||||||
|
|
||||||
@@ -572,14 +581,7 @@ MppBufferService::~MppBufferService()
|
|||||||
{
|
{
|
||||||
RK_S32 i, j;
|
RK_S32 i, j;
|
||||||
|
|
||||||
// first remove legacy group
|
finalizing = 1;
|
||||||
for (i = 0; i < MPP_BUFFER_MODE_BUTT; i++)
|
|
||||||
for (j = 0; j < MPP_BUFFER_TYPE_BUTT; j++) {
|
|
||||||
if (misc[i][j]) {
|
|
||||||
put_group(misc[i][j]);
|
|
||||||
misc[i][j] = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// then remove the remaining group
|
// then remove the remaining group
|
||||||
if (!list_empty(&mListGroup)) {
|
if (!list_empty(&mListGroup)) {
|
||||||
@@ -589,6 +591,15 @@ MppBufferService::~MppBufferService()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// first remove legacy group
|
||||||
|
for (i = 0; i < MPP_BUFFER_MODE_BUTT; i++)
|
||||||
|
for (j = 0; j < MPP_BUFFER_TYPE_BUTT; j++) {
|
||||||
|
if (misc[i][j]) {
|
||||||
|
put_group(misc[i][j]);
|
||||||
|
misc[i][j] = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// remove all orphan buffer
|
// remove all orphan buffer
|
||||||
if (!list_empty(&mListOrphan)) {
|
if (!list_empty(&mListOrphan)) {
|
||||||
MppBufferImpl *pos, *n;
|
MppBufferImpl *pos, *n;
|
||||||
@@ -688,10 +699,13 @@ void MppBufferService::put_group(MppBufferGroupImpl *p)
|
|||||||
if (list_empty(&p->list_used)) {
|
if (list_empty(&p->list_used)) {
|
||||||
destroy_group(p);
|
destroy_group(p);
|
||||||
} else {
|
} else {
|
||||||
|
if (!finalizing ||
|
||||||
|
(finalizing && (mpp_buffer_debug & MPP_BUF_DBG_DUMP_ON_EXIT))) {
|
||||||
mpp_err("mpp_group %p tag %s caller %s mode %s type %s deinit with %d bytes not released\n",
|
mpp_err("mpp_group %p tag %s caller %s mode %s type %s deinit with %d bytes not released\n",
|
||||||
p, p->tag, p->caller, mode2str[p->mode], type2str[p->type], p->usage);
|
p, p->tag, p->caller, mode2str[p->mode], type2str[p->type], p->usage);
|
||||||
|
|
||||||
mpp_buffer_group_dump(p);
|
mpp_buffer_group_dump(p);
|
||||||
|
}
|
||||||
|
|
||||||
/* if clear on exit we need to release remaining buffer */
|
/* if clear on exit we need to release remaining buffer */
|
||||||
if (p->clear_on_exit) {
|
if (p->clear_on_exit) {
|
||||||
@@ -794,3 +808,8 @@ void MppBufferService::dump_misc_group()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RK_U32 MppBufferService::is_finalizing()
|
||||||
|
{
|
||||||
|
return finalizing;
|
||||||
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user