summaryrefslogtreecommitdiffstats
path: root/mm-video
diff options
context:
space:
mode:
authorDeepak Verma <dverma@codeaurora.org>2013-06-07 21:58:08 +0530
committerDeepak Verma <dverma@codeaurora.org>2013-06-12 15:25:31 +0530
commitc592f9ea308bd19dbea89e934a56f87bf23d9de7 (patch)
tree50577656bc291a1303814eb53e0dbcf4bdb7b05f /mm-video
parent2e306edb957beab93c24cd92e83a2b57bd53d47a (diff)
downloadandroid_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.cpp9
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");