mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-11-03 01:33:35 +08:00
[mpp_list]: Use class inheritance
Change-Id: I3ef33ca9bdcfea80a6c05a8c69db2d4938a5d0eb Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
This commit is contained in:
@@ -31,7 +31,8 @@
|
||||
typedef void *(*node_destructor)(void *);
|
||||
|
||||
struct mpp_list_node;
|
||||
class mpp_list
|
||||
|
||||
class mpp_list : public MppMutexCond
|
||||
{
|
||||
public:
|
||||
mpp_list(node_destructor func = NULL);
|
||||
@@ -63,22 +64,7 @@ public:
|
||||
|
||||
RK_S32 flush();
|
||||
|
||||
// open lock function for external combination usage
|
||||
void lock();
|
||||
void unlock();
|
||||
RK_S32 trylock();
|
||||
|
||||
// open lock function for external auto lock
|
||||
Mutex *mutex();
|
||||
|
||||
void wait();
|
||||
RK_S32 wait(RK_S64 timeout);
|
||||
void signal();
|
||||
|
||||
private:
|
||||
Mutex mMutex;
|
||||
Condition mCondition;
|
||||
|
||||
node_destructor destroy;
|
||||
struct mpp_list_node *head;
|
||||
RK_S32 count;
|
||||
|
||||
@@ -194,11 +194,13 @@ public:
|
||||
MppMutexCond() {};
|
||||
~MppMutexCond() {};
|
||||
|
||||
void lock() { mLock.lock(); }
|
||||
void unlock() { mLock.unlock(); }
|
||||
void wait() { mCondition.wait(mLock); }
|
||||
void signal() { mCondition.signal(); }
|
||||
Mutex *mutex() { return &mLock; }
|
||||
void lock() { mLock.lock(); }
|
||||
void unlock() { mLock.unlock(); }
|
||||
void trylock() { mLock.trylock(); }
|
||||
void wait() { mCondition.wait(mLock); }
|
||||
RK_S32 wait(RK_S64 timeout) { return mCondition.timedwait(mLock, timeout); }
|
||||
void signal() { mCondition.signal(); }
|
||||
Mutex *mutex() { return &mLock; }
|
||||
|
||||
private:
|
||||
Mutex mLock;
|
||||
|
||||
@@ -294,50 +294,15 @@ RK_S32 mpp_list::flush()
|
||||
count--;
|
||||
}
|
||||
}
|
||||
mCondition.signal();
|
||||
signal();
|
||||
return 0;
|
||||
}
|
||||
|
||||
void mpp_list::lock()
|
||||
{
|
||||
mMutex.lock();
|
||||
}
|
||||
|
||||
void mpp_list::unlock()
|
||||
{
|
||||
mMutex.unlock();
|
||||
}
|
||||
|
||||
RK_S32 mpp_list::trylock()
|
||||
{
|
||||
return mMutex.trylock();
|
||||
}
|
||||
|
||||
Mutex *mpp_list::mutex()
|
||||
{
|
||||
return &mMutex;
|
||||
}
|
||||
|
||||
RK_U32 mpp_list::get_key()
|
||||
{
|
||||
return keys++;
|
||||
}
|
||||
|
||||
void mpp_list::wait()
|
||||
{
|
||||
mCondition.wait(mMutex);
|
||||
}
|
||||
|
||||
RK_S32 mpp_list::wait(RK_S64 timeout)
|
||||
{
|
||||
return mCondition.timedwait(mMutex, timeout);
|
||||
}
|
||||
|
||||
void mpp_list::signal()
|
||||
{
|
||||
mCondition.signal();
|
||||
}
|
||||
|
||||
mpp_list::mpp_list(node_destructor func)
|
||||
: destroy(NULL),
|
||||
head(NULL),
|
||||
|
||||
Reference in New Issue
Block a user