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; }
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; }