Beispiel #1
0
bool dictiter_move_next(DictIter *pIter)
{
    bool bHasNext = false;
    if (pIter != NULL)
    {
        int iNode = max(pIter->iNode, 0);
        int iPos = pIter->iPos + 1;
        if (iNode < 256)
        {
            SList *pList = &(pIter->pDict->nodes[iNode]);
            int iCount = slist_get_count(pList);

            if (iPos >= iCount-1)
            {
                for (iNode = iNode+1, iPos = 0; iNode < 256; iNode++)
                {
                    pList = &(pIter->pDict->nodes[iNode]);
                    if (slist_get_count(pList) > 0)
                        break;
                }
            }

            if (iNode < 256)
            {
                pIter->iNode = iNode;
                pIter->iPos = iPos;
                bHasNext = true;
            }
        }
    }
    return bHasNext;
}
Beispiel #2
0
OMX_ERRORTYPE omx_core_comp_wait_event(ilcore_comp_h h, OMX_EVENTTYPE eventType, long timeout)
{
    omx_event_t *event;
    OMX_ERRORTYPE rc = OMX_ErrorNone;
    ilcore_comp_ctx_t *ctx = (ilcore_comp_ctx_t *)h;

    while (1)
    {
        event = (omx_event_t *)slist_find_remove(ctx->event_list, search_event_cb, &eventType);
        if (event)
        {
            if(event->eEvent == OMX_EventError && event->nData1 == (OMX_U32)OMX_ErrorSameState && event->nData2 == 1)
            {
                DBG_I("Component received event: same state\n");
                rc = OMX_ErrorNone;
            }
            else if(event->eEvent == OMX_EventError) 
			{
				rc = (OMX_ERRORTYPE)event->nData1;
                DBG_E("Component received error: %d\n", rc);
			}
            else if(event->eEvent == eventType)
            {
                DBG_I("Got event: '%s', %d events remain in the queue\n", omx_event2str(event->eEvent),
                    slist_get_count(ctx->event_list));
                rc = OMX_ErrorNone;
            }
            else
            {
                DBG_E("Unknown event\n");
                rc = OMX_ErrorMax;
            }
            free(event);

            return rc;
        }

        if (!timeout)
            return OMX_ErrorMax;

        if (msleep_wait(ctx->event_sleep, timeout) == MSLEEP_TIMEOUT)
        {
            DBG_E("Wait event timeout\n");
            return OMX_ErrorMax;
        }
    }

    return OMX_ErrorNone;
}