diff options
author | Surajit Podder <spodder@codeaurora.org> | 2016-08-12 19:58:38 +0530 |
---|---|---|
committer | Adrian DC <radian.dc@gmail.com> | 2016-12-04 15:56:16 +0100 |
commit | 428198693f188780a54b4081344d7592c60b897a (patch) | |
tree | 5df95df77bfc95d7066ad31efefaac2b6db73f3b /mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp | |
parent | f90479dd1394148538fa9d8c00192d53898ec932 (diff) | |
download | android_hardware_qcom_media-428198693f188780a54b4081344d7592c60b897a.tar.gz android_hardware_qcom_media-428198693f188780a54b4081344d7592c60b897a.tar.bz2 android_hardware_qcom_media-428198693f188780a54b4081344d7592c60b897a.zip |
mm-video-v4l2: Add separate lock for buffers
Add buf_lock to to protect buffers rather than
m_lock.
RM-290
Change-Id: I0152746ea912afd28213364a2267f38b54577b53
Diffstat (limited to 'mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp')
-rw-r--r-- | mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp b/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp index 60bc154c..b8cf9ddd 100644 --- a/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp +++ b/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp @@ -772,6 +772,7 @@ omx_vdec::omx_vdec(): m_error_propogated(false), m_vendor_config.pData = NULL; pthread_mutex_init(&m_lock, NULL); pthread_mutex_init(&c_lock, NULL); + pthread_mutex_init(&buf_lock, NULL); sem_init(&m_cmd_lock,0,0); sem_init(&m_safe_flush, 0, 0); streaming[CAPTURE_PORT] = @@ -911,6 +912,7 @@ omx_vdec::~omx_vdec() close(drv_ctx.video_driver_fd); pthread_mutex_destroy(&m_lock); pthread_mutex_destroy(&c_lock); + pthread_mutex_destroy(&buf_lock); sem_destroy(&m_cmd_lock); if (perf_flag) { DEBUG_PRINT_HIGH("--> TOTAL PROCESSING TIME"); @@ -6024,7 +6026,7 @@ OMX_ERRORTYPE omx_vdec::free_input_buffer(OMX_BUFFERHEADERTYPE *bufferHdr) index = bufferHdr - m_inp_mem_ptr; DEBUG_PRINT_LOW("Free Input Buffer index = %d",index); - auto_lock l(&m_lock); + auto_lock l(&buf_lock); bufferHdr->pInputPortPrivate = NULL; if (index < drv_ctx.ip_buf.actualcount && drv_ctx.ptr_inputbuffer) { @@ -7105,7 +7107,7 @@ OMX_ERRORTYPE omx_vdec::empty_this_buffer_proxy(OMX_IN OMX_HANDLETYPE hComp, return OMX_ErrorNone; } - auto_lock l(&m_lock); + auto_lock l(&buf_lock); temp_buffer = (struct vdec_bufferpayload *)buffer->pInputPortPrivate; if (!temp_buffer || (temp_buffer - drv_ctx.ptr_inputbuffer) > (int)drv_ctx.ip_buf.actualcount) { |