// Handle an incoming message // Return TRUE if the message was handled, otherwise FALSE. UtlBoolean MpMediaTask::handleMessage(OsMsg& rMsg) { UtlBoolean handled; MpFlowGraphBase* pFlowGraph; MpMediaTaskMsg* pMsg; if (rMsg.getMsgType() != OsMsg::MP_TASK_MSG) return FALSE; // the method only handles MP_TASK_MSG messages pMsg = (MpMediaTaskMsg*) &rMsg; pFlowGraph = (MpFlowGraphBase*) pMsg->getPtr1(); handled = TRUE; // until proven otherwise, assume we'll handle the msg switch (pMsg->getMsg()) { case MpMediaTaskMsg::MANAGE: { OsEvent* event = (OsEvent*)pMsg->getPtr2(); if (!handleManage(pFlowGraph)) mHandleMsgErrs++; if (event) event->signal(0); break; } case MpMediaTaskMsg::SET_FOCUS: if (!handleSetFocus(pFlowGraph)) mHandleMsgErrs++; break; case MpMediaTaskMsg::START: if (!handleStart(pFlowGraph)) mHandleMsgErrs++; break; case MpMediaTaskMsg::STOP: if (!handleStop(pFlowGraph)) mHandleMsgErrs++; break; case MpMediaTaskMsg::UNMANAGE: { OsEvent* event = (OsEvent*)pMsg->getPtr2(); if (!handleUnmanage(pFlowGraph)) mHandleMsgErrs++; if (event) event->signal(0); break; } case MpMediaTaskMsg::WAIT_FOR_SIGNAL: if (!handleWaitForSignal(pMsg)) mHandleMsgErrs++; break; default: handled = FALSE; // we didn't handle the message after all break; } return handled; }
// Handle an incoming message // Return TRUE if the message was handled, otherwise FALSE. UtlBoolean MpMediaTask::handleMessage(OsMsg& rMsg) { UtlBoolean handled; MpFlowGraphBase* pFlowGraph; MpMediaTaskMsg* pMsg; if (rMsg.getMsgType() != OsMsg::MP_TASK_MSG) return FALSE; // the method only handles MP_TASK_MSG messages pMsg = (MpMediaTaskMsg*) &rMsg; pFlowGraph = (MpFlowGraphBase*) pMsg->getPtr1(); handled = TRUE; // until proven otherwise, assume we'll handle the msg #ifdef _PROFILE /* [ */ // Log the time it takes to handle messages other than WAIT_FOR_SIGNAL. long long start_time; if (pMsg->getMsg() != MpMediaTaskMsg::WAIT_FOR_SIGNAL) { timeval t; gettimeofday(&t, NULL); start_time = (t.tv_sec * 1000000) + t.tv_usec; } #endif /* _PROFILE ] */ if (getMessageQueue()->numMsgs() > 100) { OsSysLog::add(FAC_SIP, PRI_DEBUG, "MpMediaTask::handleMessage msgType = %d, " "queue length = %d", pMsg->getMsg(), getMessageQueue()->numMsgs()); } switch (pMsg->getMsg()) { case MpMediaTaskMsg::MANAGE: if (!handleManage(pFlowGraph)) mHandleMsgErrs++; break; case MpMediaTaskMsg::SET_FOCUS: if (!handleSetFocus(pFlowGraph)) mHandleMsgErrs++; break; case MpMediaTaskMsg::START: if (!handleStart(pFlowGraph)) mHandleMsgErrs++; break; case MpMediaTaskMsg::STOP: if (!handleStop(pFlowGraph)) mHandleMsgErrs++; break; case MpMediaTaskMsg::UNMANAGE: if (!handleUnmanage(pFlowGraph)) mHandleMsgErrs++; break; case MpMediaTaskMsg::WAIT_FOR_SIGNAL: if (!handleWaitForSignal(pMsg)) mHandleMsgErrs++; break; default: handled = FALSE; // we didn't handle the message after all break; } #ifdef _PROFILE /* [ */ // Log the time it takes to handle messages other than WAIT_FOR_SIGNAL. if (pMsg->getMsg() != MpMediaTaskMsg::WAIT_FOR_SIGNAL) { timeval t; gettimeofday(&t, NULL); long long end_time = (t.tv_sec * 1000000) + t.tv_usec; mOtherMessages.tally(end_time - start_time); } #endif /* _PROFILE ] */ return handled; }