st/omx: add workaround for bug in Bellagio
Not blocking for the message thread can lead to accessing freed up memory. Signed-off-by: Christian König <christian.koenig@amd.com>
This commit is contained in:
@@ -98,3 +98,16 @@ void omx_put_screen(void)
|
||||
}
|
||||
pipe_mutex_unlock(omx_lock);
|
||||
}
|
||||
|
||||
OMX_ERRORTYPE omx_workaround_Destructor(OMX_COMPONENTTYPE *comp)
|
||||
{
|
||||
omx_base_component_PrivateType* priv = (omx_base_component_PrivateType*)comp->pComponentPrivate;
|
||||
|
||||
priv->state = OMX_StateInvalid;
|
||||
tsem_up(priv->messageSem);
|
||||
|
||||
/* wait for thread to exit */;
|
||||
pthread_join(priv->messageHandlerThread, NULL);
|
||||
|
||||
return omx_base_component_Destructor(comp);
|
||||
}
|
||||
|
||||
@@ -43,4 +43,6 @@ extern int omx_component_library_Setup(stLoaderComponentType **stComponents);
|
||||
struct vl_screen *omx_get_screen(void);
|
||||
void omx_put_screen(void);
|
||||
|
||||
OMX_ERRORTYPE omx_workaround_Destructor(OMX_COMPONENTTYPE *comp);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -247,8 +247,7 @@ static OMX_ERRORTYPE vid_dec_Destructor(OMX_COMPONENTTYPE *comp)
|
||||
if (priv->screen)
|
||||
omx_put_screen();
|
||||
|
||||
omx_base_filter_Destructor(comp);
|
||||
return OMX_ErrorNone;
|
||||
return omx_workaround_Destructor(comp);
|
||||
}
|
||||
|
||||
static OMX_ERRORTYPE vid_dec_SetParameter(OMX_HANDLETYPE handle, OMX_INDEXTYPE idx, OMX_PTR param)
|
||||
|
||||
Reference in New Issue
Block a user