diff options
author | Deepak Verma <dverma@codeaurora.org> | 2013-06-07 21:58:08 +0530 |
---|---|---|
committer | Deepak Verma <dverma@codeaurora.org> | 2013-06-12 15:25:31 +0530 |
commit | c592f9ea308bd19dbea89e934a56f87bf23d9de7 (patch) | |
tree | 50577656bc291a1303814eb53e0dbcf4bdb7b05f /mm-video | |
parent | 2e306edb957beab93c24cd92e83a2b57bd53d47a (diff) | |
download | android_hardware_qcom_media-c592f9ea308bd19dbea89e934a56f87bf23d9de7.tar.gz android_hardware_qcom_media-c592f9ea308bd19dbea89e934a56f87bf23d9de7.tar.bz2 android_hardware_qcom_media-c592f9ea308bd19dbea89e934a56f87bf23d9de7.zip |
mm-video: vidc: Flush m_input_free_q when input buffers are freed
Not flushing it might leave dangling pointers to old input buffers,
which end up getting de-referenced, if the component is re-used for
another session.
Change-Id: If232cb3a5d10c4c1fd4634814cf25707fc7b8c90
Diffstat (limited to 'mm-video')
-rw-r--r-- | mm-video/vidc/vdec/src/omx_vdec.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/mm-video/vidc/vdec/src/omx_vdec.cpp b/mm-video/vidc/vdec/src/omx_vdec.cpp index 283a000f..e7fec107 100644 --- a/mm-video/vidc/vdec/src/omx_vdec.cpp +++ b/mm-video/vidc/vdec/src/omx_vdec.cpp @@ -7924,6 +7924,15 @@ void omx_vdec::free_input_buffer_header() free (m_inp_mem_ptr); m_inp_mem_ptr = NULL; } + + /* We just freed all the buffer headers, every thing in m_input_free_q + * is now invalid */ + while (m_input_free_q.m_size) + { + unsigned address,p2,id; + m_input_free_q.pop_entry(&address,&p2,&id); + } + if (drv_ctx.ptr_inputbuffer) { DEBUG_PRINT_LOW("Free Driver Context pointer"); |