From 2f8a6db000a0ac6b56eae6c99c7f273fdb20594d Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 15 Mar 2017 18:03:53 -0500 Subject: [PATCH] FS-9704: [mod_av] Seeking video files with mod_av after it reaches the end does not work fix regression --- src/mod/applications/mod_av/avformat.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/mod/applications/mod_av/avformat.c b/src/mod/applications/mod_av/avformat.c index 21c6250ebb..127f1d40a6 100644 --- a/src/mod/applications/mod_av/avformat.c +++ b/src/mod/applications/mod_av/avformat.c @@ -2052,9 +2052,13 @@ static switch_status_t av_file_close(switch_file_handle_t *handle) av_file_write(handle, NULL, NULL); } - if (context->file_read_thread_running && context->file_read_thread) { + if (context->file_read_thread_running) { context->file_read_thread_running = 0; + } + + if (context->file_read_thread) { switch_thread_join(&status, context->file_read_thread); + context->file_read_thread = NULL; } if (context->eh.video_queue) { @@ -2093,6 +2097,12 @@ static switch_status_t av_file_seek(switch_file_handle_t *handle, unsigned int * if (!context->file_read_thread_running) { switch_threadattr_t *thd_attr = NULL; + if (context->file_read_thread) { + switch_status_t status; + switch_thread_join(&status, context->file_read_thread); + context->file_read_thread = NULL; + } + switch_threadattr_create(&thd_attr, handle->memory_pool); switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE); switch_thread_create(&context->file_read_thread, thd_attr, file_read_thread_run, context, handle->memory_pool);