[mpp_list]: Add more wait functions

Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: Icc8457ce1bff75eee7e5b8b8cc34360a339571a8
This commit is contained in:
Herman Chen
2022-04-29 09:52:22 +08:00
parent 793acb6f66
commit da3fc7c4a8
2 changed files with 34 additions and 0 deletions

View File

@@ -67,7 +67,9 @@ public:
// for list wait // for list wait
MPP_RET wait_lt(RK_S64 timeout, RK_S32 val); MPP_RET wait_lt(RK_S64 timeout, RK_S32 val);
MPP_RET wait_le(RK_S64 timeout, RK_S32 val);
MPP_RET wait_gt(RK_S64 timeout, RK_S32 val); MPP_RET wait_gt(RK_S64 timeout, RK_S32 val);
MPP_RET wait_ge(RK_S64 timeout, RK_S32 val);
private: private:
node_destructor destroy; node_destructor destroy;

View File

@@ -300,6 +300,22 @@ RK_S32 mpp_list::flush()
} }
MPP_RET mpp_list::wait_lt(RK_S64 timeout, RK_S32 val) MPP_RET mpp_list::wait_lt(RK_S64 timeout, RK_S32 val)
{
if (list_size() < val)
return MPP_OK;
if (!timeout)
return MPP_NOK;
if (timeout < 0)
wait();
else
wait(timeout);
return list_size() < val ? MPP_OK : MPP_NOK;
}
MPP_RET mpp_list::wait_le(RK_S64 timeout, RK_S32 val)
{ {
if (list_size() <= val) if (list_size() <= val)
return MPP_OK; return MPP_OK;
@@ -316,6 +332,22 @@ MPP_RET mpp_list::wait_lt(RK_S64 timeout, RK_S32 val)
} }
MPP_RET mpp_list::wait_gt(RK_S64 timeout, RK_S32 val) MPP_RET mpp_list::wait_gt(RK_S64 timeout, RK_S32 val)
{
if (list_size() > val)
return MPP_OK;
if (!timeout)
return MPP_NOK;
if (timeout < 0)
wait();
else
wait(timeout);
return list_size() > val ? MPP_OK : MPP_NOK;
}
MPP_RET mpp_list::wait_ge(RK_S64 timeout, RK_S32 val)
{ {
if (list_size() >= val) if (list_size() >= val)
return MPP_OK; return MPP_OK;