vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Mon Apr 1 19:23:56 2019 +0300| [7221c0dc321a74cb0a50a7dce0d57cbcd6644873] | committer: Rémi Denis-Courmont
input: only flush/stop vout if actually started This moves the flushing and stopping of the vout thread out of input_resource_PutVout() and to its original call site in decoder.c. In the new call site within resource.c, the vout thread is not actually started and cannot be flushed and stopped. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=7221c0dc321a74cb0a50a7dce0d57cbcd6644873 --- src/input/decoder.c | 17 +++++++++++------ src/input/resource.c | 3 --- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/input/decoder.c b/src/input/decoder.c index 82e3fe781f..36b5ac8f89 100644 --- a/src/input/decoder.c +++ b/src/input/decoder.c @@ -1942,21 +1942,26 @@ static void DeleteDecoder( decoder_t * p_dec ) input_resource_PutAout( p_owner->p_resource, p_owner->p_aout ); } break; - case VIDEO_ES: - if( p_owner->p_vout ) + case VIDEO_ES: { + vout_thread_t *vout = p_owner->p_vout; + + if (vout != NULL) { /* Reset the cancel state that was set before joining the decoder * thread */ - vout_Cancel( p_owner->p_vout, false ); - + vout_Cancel(vout, false); + vout_FlushAll(vout); + vout_FlushSubpictureChannel(vout, -1); + vout_Stop(vout); input_SendEventVout(p_owner->p_input, &(struct vlc_input_event_vout) { .action = VLC_INPUT_EVENT_VOUT_DELETED, - .vout = p_owner->p_vout, + .vout = vout, }); - input_resource_PutVout( p_owner->p_resource, p_owner->p_vout ); + input_resource_PutVout(p_owner->p_resource, vout); } break; + } case SPU_ES: { if( p_owner->p_vout ) diff --git a/src/input/resource.c b/src/input/resource.c index 8a0b02ddbb..e8fcd6d6d5 100644 --- a/src/input/resource.c +++ b/src/input/resource.c @@ -439,9 +439,6 @@ void input_resource_PutVout(input_resource_t *p_resource, vout_Close(vout); } else { msg_Dbg(p_resource->p_parent, "saving a free vout"); - vout_FlushAll(vout); - vout_FlushSubpictureChannel(vout, -1); - vout_Stop(vout); p_resource->p_vout_free = vout; } vlc_mutex_unlock( &p_resource->lock ); _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
