From 539f41f46df505601df00486dcaac708ea321c20 Mon Sep 17 00:00:00 2001 From: martii Date: Sat, 2 Nov 2013 16:02:33 +0100 Subject: [PATCH] libeplayer3: speed up termination --- libeplayer3/container/container_ffmpeg.c | 3 +++ libeplayer3/playback/playback.c | 7 +++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/libeplayer3/container/container_ffmpeg.c b/libeplayer3/container/container_ffmpeg.c index 4f503ad..ba4dfdd 100644 --- a/libeplayer3/container/container_ffmpeg.c +++ b/libeplayer3/container/container_ffmpeg.c @@ -826,6 +826,9 @@ static void FFMPEGThread(Context_t *context) { releaseMutex(FILENAME, __FUNCTION__,__LINE__); } /* while */ + if (context && context->playback && context->output && context->playback->abortRequested) + context->output->Command(context, OUTPUT_CLEAR, NULL); + if (swr) swr_free(&swr); if (decoded_frame) diff --git a/libeplayer3/playback/playback.c b/libeplayer3/playback/playback.c index ae5b100..9bcfb3e 100644 --- a/libeplayer3/playback/playback.c +++ b/libeplayer3/playback/playback.c @@ -116,7 +116,9 @@ status = 1; while (!dieNow) { - if (context && context->playback && context->playback->isPlaying) + if (context && context->playback && context->playback->abortRequested) + dieNow = 1; + else if (context && context->playback && context->playback->isPlaying) { int ret = context->playback->Command(context, PLAYBACK_PTS, &playPts); @@ -125,7 +127,8 @@ status = 1; if (ret != cERR_PLAYBACK_NO_ERROR || playPts + (2 * 90000) >= lastPts) dieNow = 1; - } else + } + else { playback_err("playback already died ?\n"); dieNow = 1;