Ejemplo n.º 1
0
int CMsgQueue::send_message(CMsg *newmsg, SDL_sem *sem)
{

  SDL_LockMutex(m_msg_queue_mutex);
  if (m_msg_queue == NULL) {
    m_msg_queue = newmsg;
  } else {
    CMsg *p = m_msg_queue;
    while (p->get_next() != NULL) p = p->get_next();
    p->set_next(newmsg);
  }
  SDL_UnlockMutex(m_msg_queue_mutex);
  if (sem != NULL) {
    SDL_SemPost(sem);
  }
  return (0);
}
Ejemplo n.º 2
0
CMsg *CMsgQueue::get_message (void) 
{
  CMsg *ret;

  if (m_msg_queue == NULL) 
    return(NULL);

  SDL_LockMutex(m_msg_queue_mutex);
  if (m_msg_queue == NULL) 
    ret = NULL;
  else {
    ret = m_msg_queue;
    m_msg_queue = ret->get_next();
  }
  SDL_UnlockMutex(m_msg_queue_mutex);
  if (ret) {
    ret->set_next(NULL);
  }
  return (ret);
}