BugFix: EventQue wait() doesn't work correct.

Update: add EventQue Test.


Signed-off-by: tomoaki <tomoaki@tomy-tech.com>
This commit is contained in:
tomoaki
2016-10-21 21:05:49 +09:00
parent e2cf453c6b
commit 3c9b7d283b
5 changed files with 51 additions and 12 deletions

View File

@@ -315,7 +315,10 @@ void EventQue::setMaxSize(uint16_t maxSize)
Event* EventQue::wait(void)
{
Event* ev;
_sem.wait();
if ( _que.size() == 0 )
{
_sem.wait();
}
_mutex.lock();
ev = _que.front();
_que.pop();
@@ -326,7 +329,10 @@ Event* EventQue::wait(void)
Event* EventQue::timedwait(uint16_t millsec)
{
Event* ev;
_sem.timedwait(millsec);
if ( _que.size() == 0 )
{
_sem.timedwait(millsec);
}
_mutex.lock();
if (_que.size() == 0)
@@ -338,11 +344,6 @@ Event* EventQue::timedwait(uint16_t millsec)
{
ev = _que.front();
_que.pop();
if ( !ev )
{
ev = new Event();
ev->setTimeout();
}
}
_mutex.unlock();
return ev;