summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--omx/base/omx_base_comp/src/omx_base_internal.c59
-rwxr-xr-xomx/osal/src/osal_events.c2
2 files changed, 33 insertions, 28 deletions
diff --git a/omx/base/omx_base_comp/src/omx_base_internal.c b/omx/base/omx_base_comp/src/omx_base_internal.c
index a2e1ac4..85c953f 100644
--- a/omx/base/omx_base_comp/src/omx_base_internal.c
+++ b/omx/base/omx_base_comp/src/omx_base_internal.c
@@ -26,6 +26,7 @@
#define OMXBase_TASKDEL_TRIES 1000
#define OMXBase_TASKDEL_SLEEP 2
+#define BUFFER_ALLOC_FREE_TIMEOUT 500 //500msec
#define OMX_BASE_HANDLE_IDLE_TO_LOADED_TRANSITION() do { \
for( i=0; i < pBaseComp->nNumPorts; i++ ) \
@@ -762,7 +763,13 @@ OMX_ERRORTYPE OMXBase_EventNotifyToClient(OMX_HANDLETYPE hComponent,
(BUF_ALLOC_EVENT | BUF_FREE_EVENT |
BUF_FAIL_EVENT),
OSAL_EVENT_OR_CONSUME, &retEvents,
- OSAL_SUSPEND);
+ BUFFER_ALLOC_FREE_TIMEOUT);
+
+ if (tStatus == OSAL_ErrTimeOut) {
+ tStatus = OSAL_ErrNone;
+ retEvents = BUF_FAIL_EVENT;
+ }
+
OMX_CHECK(tStatus == OSAL_ErrNone, OMX_ErrorUndefined);
if( retEvents & BUF_FAIL_EVENT ) {
/*Fail event so free up all DIO resources and move
@@ -825,7 +832,12 @@ OMX_ERRORTYPE OMXBase_EventNotifyToClient(OMX_HANDLETYPE hComponent,
tStatus = OSAL_RetrieveEvent(pPort->pBufAllocFreeEvent,
(BUF_ALLOC_EVENT | BUF_FAIL_EVENT),
OSAL_EVENT_OR_CONSUME, &retEvents,
- OSAL_SUSPEND);
+ BUFFER_ALLOC_FREE_TIMEOUT);
+ if (tStatus == OSAL_ErrTimeOut) {
+ tStatus = OSAL_ErrNone;
+ retEvents = BUF_FAIL_EVENT;
+ }
+
OMX_CHECK(tStatus == OSAL_ErrNone, OMX_ErrorUndefined);
if( retEvents & BUF_FAIL_EVENT ) {
/*Fail event so free up all DIO resources and move
@@ -861,11 +873,10 @@ OMX_ERRORTYPE OMXBase_EventNotifyToClient(OMX_HANDLETYPE hComponent,
tStatus = OSAL_RetrieveEvent(pPort->pBufAllocFreeEvent,
(BUF_ALLOC_EVENT | BUF_FAIL_EVENT),
OSAL_EVENT_OR_CONSUME, &retEvents,
- 3 * 1000); /* wait for 3sec */
-
- if( tStatus == OSAL_ErrTimeOut ) {
- pPort->bIsInTransition = OMX_FALSE;
- pPort->sPortDef.bEnabled = OMX_FALSE;
+ BUFFER_ALLOC_FREE_TIMEOUT);
+ if (tStatus == OSAL_ErrTimeOut) {
+ tStatus = OSAL_ErrNone;
+ retEvents = BUF_FAIL_EVENT;
}
OMX_CHECK(tStatus == OSAL_ErrNone,
@@ -907,7 +918,13 @@ OMX_ERRORTYPE OMXBase_EventNotifyToClient(OMX_HANDLETYPE hComponent,
tStatus = OSAL_RetrieveEvent(pPort->pBufAllocFreeEvent,
(BUF_FREE_EVENT | BUF_FAIL_EVENT),
OSAL_EVENT_OR_CONSUME, &retEvents,
- OSAL_SUSPEND);
+ BUFFER_ALLOC_FREE_TIMEOUT);
+
+ if (tStatus == OSAL_ErrTimeOut) {
+ tStatus = OSAL_ErrNone;
+ retEvents = BUF_FAIL_EVENT;
+ }
+
OMX_CHECK(tStatus == OSAL_ErrNone, OMX_ErrorUndefined);
if( retEvents & BUF_FAIL_EVENT ) {
/*Fail event so free up all DIO resources and move
@@ -940,7 +957,13 @@ OMX_ERRORTYPE OMXBase_EventNotifyToClient(OMX_HANDLETYPE hComponent,
tStatus = OSAL_RetrieveEvent(pPort->pBufAllocFreeEvent,
(BUF_FREE_EVENT | BUF_FAIL_EVENT),
OSAL_EVENT_OR_CONSUME, &retEvents,
- OSAL_SUSPEND);
+ BUFFER_ALLOC_FREE_TIMEOUT);
+
+ if (tStatus == OSAL_ErrTimeOut) {
+ tStatus = OSAL_ErrNone;
+ retEvents = BUF_FAIL_EVENT;
+ }
+
OMX_CHECK(tStatus == OSAL_ErrNone, OMX_ErrorUndefined);
if( retEvents & BUF_FAIL_EVENT ) {
/*Fail event so free up all DIO resources and move
@@ -1458,12 +1481,6 @@ void OMXBase_HandleFailEvent(OMX_HANDLETYPE hComponent, OMX_COMMANDTYPE eCmd,
/*If DIO for any port is open close those*/
for( i = 0; i < pBaseComp->nNumPorts; i++ ) {
pPort = pBaseComp->pPorts[i];
- retval = OSAL_RetrieveEvent(pPort->pBufAllocFreeEvent,
- BUF_FREE_EVENT, OSAL_EVENT_OR_CONSUME, &retEvents,
- 500);
- if( retval == OSAL_ErrTimeOut ) {
- OSAL_ErrorTrace("Event retrieve timed out on BUF_FREE_EVENT within function:%s", __FUNCTION__);
- }
if( pPort != NULL ) {
if( pPort->hDIO != NULL ) {
OMXBase_DIO_Close(hComponent,
@@ -1507,12 +1524,6 @@ void OMXBase_HandleFailEvent(OMX_HANDLETYPE hComponent, OMX_COMMANDTYPE eCmd,
if( nPortIndex == OMX_ALL ) {
for( i = 0; i < pBaseComp->nNumPorts; i++ ) {
pPort = pBaseComp->pPorts[i];
- retval = OSAL_RetrieveEvent(pPort->pBufAllocFreeEvent,
- BUF_FREE_EVENT, OSAL_EVENT_OR_CONSUME, &retEvents,
- 500);
- if( retval == OSAL_ErrTimeOut ) {
- OSAL_ErrorTrace("Event retrieve timed out on BUF_FREE_EVENT within function:%s", __FUNCTION__);
- }
if( pPort != NULL ) {
if( pPort->hDIO != NULL ) {
OMXBase_DIO_Close(hComponent, (i + pBaseComp->nMinStartPortIndex));
@@ -1523,12 +1534,6 @@ void OMXBase_HandleFailEvent(OMX_HANDLETYPE hComponent, OMX_COMMANDTYPE eCmd,
}
} else {
pPort = pBaseComp->pPorts[nPortIndex - pBaseComp->nMinStartPortIndex];
- retval = OSAL_RetrieveEvent(pPort->pBufAllocFreeEvent,
- BUF_FREE_EVENT, OSAL_EVENT_OR_CONSUME, &retEvents,
- 500);
- if( retval == OSAL_ErrTimeOut ) {
- OSAL_ErrorTrace("Event retrieve timed out on BUF_FREE_EVENT within function:%s", __FUNCTION__);
- }
if( pPort != NULL ) {
if( pPort->hDIO != NULL ) {
OMXBase_DIO_Close(hComponent, nPortIndex);
diff --git a/omx/osal/src/osal_events.c b/omx/osal/src/osal_events.c
index 6b03cb2..c8486fc 100755
--- a/omx/osal/src/osal_events.c
+++ b/omx/osal/src/osal_events.c
@@ -236,7 +236,7 @@ OSAL_ERROR OSAL_RetrieveEvent(void *pEvents, uint32_t uRequestedEvents,
/*Timedout or error and returned without being signalled */
if (SUCCESS != status) {
if (ETIMEDOUT == status)
- bRet = OSAL_ErrNone;
+ bRet = OSAL_ErrTimeOut;
*pRetrievedEvents = 0;
break;
}