From 20fe316e47fedb28787e77e77a7011133f3d4e73 Mon Sep 17 00:00:00 2001 From: Lukasz Marek Date: Fri, 7 Feb 2014 00:30:27 +0100 Subject: [PATCH] lavd/sdl: reset context variables after destroy SDL device reports double free or hangs when quiting. Reseting variables solves the issue. The issue is caused by double call of write_trailer callback. It is called for the first time in write_packet when quit flag is set. Second call comes from ffmpeg.c or may come from other client application. Signed-off-by: Lukasz Marek Reviewed-by: Nicolas George Signed-off-by: Michael Niedermayer --- libavdevice/sdl.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libavdevice/sdl.c b/libavdevice/sdl.c index 2f36f632d9..bef50417e7 100644 --- a/libavdevice/sdl.c +++ b/libavdevice/sdl.c @@ -71,12 +71,16 @@ static int sdl_write_trailer(AVFormatContext *s) if (sdl->overlay) SDL_FreeYUVOverlay(sdl->overlay); + sdl->overlay = NULL; if (sdl->event_thread) SDL_WaitThread(sdl->event_thread, NULL); + sdl->event_thread = NULL; if (sdl->mutex) SDL_DestroyMutex(sdl->mutex); + sdl->mutex = NULL; if (sdl->init_cond) SDL_DestroyCond(sdl->init_cond); + sdl->init_cond = NULL; if (!sdl->sdl_was_already_inited) SDL_Quit();