diff --git a/ffplay.c b/ffplay.c index 8d22b48ae5..27dda94e20 100644 --- a/ffplay.c +++ b/ffplay.c @@ -1356,6 +1356,12 @@ static int queue_picture(VideoState *is, AVFrame *src_frame, double pts1, int64_ while (!vp->allocated && !is->videoq.abort_request) { SDL_CondWait(is->pictq_cond, is->pictq_mutex); } + /* if the queue is aborted, we have to pop the pending ALLOC event or wait for the allocation to complete */ + if (is->videoq.abort_request && SDL_PeepEvents(&event, 1, SDL_GETEVENT, SDL_EVENTMASK(FF_ALLOC_EVENT)) != 1) { + while (!vp->allocated) { + SDL_CondWait(is->pictq_cond, is->pictq_mutex); + } + } SDL_UnlockMutex(is->pictq_mutex); if (is->videoq.abort_request)