From ef178aabf965c0cc8722f07267f478e58c1f2a5e Mon Sep 17 00:00:00 2001 From: Andrew Andkjar Date: Tue, 29 Aug 2006 12:07:38 +0000 Subject: [PATCH] ext/sdl/: Only de-init the subsystem we previously initialised. Avoids borkage when both sdlvideosink and sdlaudiosin... Original commit message from CVS: Patch by: Andrew Andkjar * ext/sdl/sdlaudiosink.c: (gst_sdlaudio_sink_close): * ext/sdl/sdlvideosink.c: (gst_sdlvideosink_supported), (gst_sdlvideosink_deinitsdl): Only de-init the subsystem we previously initialised. Avoids borkage when both sdlvideosink and sdlaudiosink are used at the same time and one is shut down. --- ChangeLog | 11 +++++++++++ ext/sdl/sdlaudiosink.c | 2 +- ext/sdl/sdlvideosink.c | 4 ++-- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 724bda57b7..5bcdcb8a25 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2006-08-29 Tim-Philipp Müller + + Patch by: Andrew Andkjar + + * ext/sdl/sdlaudiosink.c: (gst_sdlaudio_sink_close): + * ext/sdl/sdlvideosink.c: (gst_sdlvideosink_supported), + (gst_sdlvideosink_deinitsdl): + Only de-init the subsystem we previously initialised. Avoids + borkage when both sdlvideosink and sdlaudiosink are used + at the same time and one is shut down. + 2006-08-28 Wim Taymans * gst/qtdemux/qtdemux.c: (gst_qtdemux_activate_segment), diff --git a/ext/sdl/sdlaudiosink.c b/ext/sdl/sdlaudiosink.c index fb97c43562..85bcd4d26f 100644 --- a/ext/sdl/sdlaudiosink.c +++ b/ext/sdl/sdlaudiosink.c @@ -284,7 +284,7 @@ gst_sdlaudio_sink_close (GstAudioSink * asink) sdlaudio->eos = TRUE; SEMAPHORE_UP (sdlaudio->semA); SEMAPHORE_UP (sdlaudio->semB); - SDL_Quit (); + SDL_QuitSubSystem (SDL_INIT_AUDIO); return TRUE; } diff --git a/ext/sdl/sdlvideosink.c b/ext/sdl/sdlvideosink.c index 9b3df77892..de796ea334 100644 --- a/ext/sdl/sdlvideosink.c +++ b/ext/sdl/sdlvideosink.c @@ -338,7 +338,7 @@ gst_sdlvideosink_supported (GstImplementsInterface * interface, /* True if the video driver is X11 */ result = (strcmp ("x11", SDL_VideoDriverName (tmp, 4)) == 0); - SDL_Quit (); + SDL_QuitSubSystem (SDL_INIT_VIDEO); g_mutex_unlock (sdlvideosink->lock); } else result = sdlvideosink->is_xwindows; @@ -484,7 +484,7 @@ gst_sdlvideosink_deinitsdl (GstSDLVideoSink * sdlvideosink) sdlvideosink->event_thread = NULL; } - SDL_Quit (); + SDL_QuitSubSystem (SDL_INIT_VIDEO); sdlvideosink->init = FALSE; }