Img_EnsQueue::~Img_EnsQueue() { delete [] queue; head = 0; tail = 0; size = 0; OSAL_MutexDestroy(mutex); }
OMX_ERRORTYPE HantroOmx_msgque_init(OMX_IN msgque* q) { assert(q); q->head = 0; q->tail = 0; q->size = 0; OMX_ERRORTYPE err = OMX_ErrorNone; err = OSAL_MutexCreate(&q->mutex); if (err != OMX_ErrorNone) return err; err = OSAL_EventCreate(&q->event); if (err != OMX_ErrorNone) OSAL_MutexDestroy(q->mutex); return err; }
void HantroOmx_msgque_destroy(OMX_IN msgque* q) { assert(q); OMX_ERRORTYPE err = OMX_ErrorNone; err = OSAL_MutexLock(q->mutex); assert(err == OMX_ErrorNone); while (q->tail) { msg_node* next = q->tail->next; OSAL_Free(q->tail); q->tail = next; } err = OSAL_MutexUnlock(q->mutex); assert(err == OMX_ErrorNone); err = OSAL_MutexDestroy(q->mutex); assert(err == OMX_ErrorNone); err = OSAL_EventDestroy(q->event); assert(err == OMX_ErrorNone); }
void HantroOmx_port_destroy(PORT* p) { assert(p); OMX_U32 i = 0; OMX_U32 x = HantroOmx_bufferlist_get_size(&p->buffers); for (i=0; i<x; ++i) { BUFFER* buff = *HantroOmx_bufferlist_at(&p->buffers, i); OSAL_Free(buff); } HantroOmx_bufferlist_destroy(&p->buffers); HantroOmx_bufferlist_destroy(&p->bufferqueue); OMX_ERRORTYPE err; err = OSAL_MutexDestroy(p->buffermutex); assert(err == OMX_ErrorNone); err = OSAL_EventDestroy(p->bufferevent); assert(err == OMX_ErrorNone); memset(p, 0, sizeof(PORT)); }
OMX_ERRORTYPE HantroOmx_port_init(PORT* p, OMX_U32 nBufferCountMin, OMX_U32 nBufferCountActual, OMX_U32 nBuffers, OMX_U32 nBufferSize) { assert(p); memset(p, 0, sizeof(PORT)); OMX_ERRORTYPE err = OMX_ErrorNone; err = OSAL_MutexCreate(&p->buffermutex); if (err != OMX_ErrorNone) goto INIT_FAIL; err = OSAL_EventCreate(&p->bufferevent); if (err != OMX_ErrorNone) goto INIT_FAIL; if (nBuffers) { err = HantroOmx_bufferlist_init(&p->buffers, nBuffers); if (err != OMX_ErrorNone) goto INIT_FAIL; err = HantroOmx_bufferlist_init(&p->bufferqueue, nBuffers); if (err != OMX_ErrorNone) goto INIT_FAIL; } p->def.nBufferCountActual = nBufferCountActual; p->def.nBufferCountMin = nBufferCountMin; p->def.nBufferSize = nBufferSize; return OMX_ErrorNone; INIT_FAIL: if (p->buffermutex) OSAL_MutexDestroy(p->buffermutex); if (p->bufferevent) OSAL_EventDestroy(p->bufferevent); HantroOmx_bufferlist_destroy(&p->buffers); HantroOmx_bufferlist_destroy(&p->bufferqueue); return err; }