From 56b3c7e01da436c3b18153ef4d5b67337e6e3582 Mon Sep 17 00:00:00 2001 From: martii Date: Sun, 9 Mar 2014 14:16:45 +0100 Subject: [PATCH] eplayer3: fix playback termination handling --- libeplayer3/container/container_ffmpeg.c | 4 ++-- libeplayer3/include/playback.h | 1 + libeplayer3/playback/playback.c | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/libeplayer3/container/container_ffmpeg.c b/libeplayer3/container/container_ffmpeg.c index 348dbb3..08af380 100644 --- a/libeplayer3/container/container_ffmpeg.c +++ b/libeplayer3/container/container_ffmpeg.c @@ -799,7 +799,7 @@ static void FFMPEGThread(Context_t * context) avcodec_free_frame(&decoded_frame); if (context->playback) - context->playback->abortRequested = 1; + context->playback->abortPlayback = 1; hasPlayThreadStarted = 0; ffmpeg_printf(10, "terminating\n"); @@ -813,7 +813,7 @@ static int terminating = 0; static int interrupt_cb(void *ctx) { PlaybackHandler_t *p = (PlaybackHandler_t *) ctx; - return p->abortRequested; + return p->abortPlayback | p->abortRequested; } static void log_callback(void *ptr __attribute__ ((unused)), int lvl __attribute__ ((unused)), const char *format, va_list ap) diff --git a/libeplayer3/include/playback.h b/libeplayer3/include/playback.h index 6654137..1bfeec9 100644 --- a/libeplayer3/include/playback.h +++ b/libeplayer3/include/playback.h @@ -39,6 +39,7 @@ typedef struct PlaybackHandler_s { unsigned char isTeletext; unsigned char mayWriteToFramebuffer; unsigned char abortRequested; + unsigned char abortPlayback; int (*Command) ( /*Context_t */ void *, PlaybackCmd_t, void *); char *uri; diff --git a/libeplayer3/playback/playback.c b/libeplayer3/playback/playback.c index 271b74a..2821c23 100644 --- a/libeplayer3/playback/playback.c +++ b/libeplayer3/playback/playback.c @@ -78,7 +78,7 @@ static void SupervisorThread(Context_t * context) playback_printf(10, ">\n"); while (context && context->playback && context->playback->isPlaying - && !context->playback->abortRequested) + && !(context->playback->abortRequested | context->playback->abortPlayback)) usleep(100000); playback_printf(10, "<\n"); @@ -1013,6 +1013,7 @@ PlaybackHandler_t PlaybackHandler = { 0, 1, 0, + 0, &Command, "", 0,