diff options
author | Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk> | 2011-02-23 14:31:13 +0100 |
---|---|---|
committer | Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk> | 2011-02-23 14:33:40 +0100 |
commit | 19052a847d43c489e6bfd249d4e63ba31e630fe1 (patch) | |
tree | b44b8f1066ace847cbbf823c052f2581232333fb | |
parent | 102b4feddf4f519515b5d33873f8aee776bdabfa (diff) |
playsink: release all chains when going to NULL
Also fixes #642466.
-rw-r--r-- | gst/playback/gstplaysink.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/gst/playback/gstplaysink.c b/gst/playback/gstplaysink.c index 14d688217..5ba637ac4 100644 --- a/gst/playback/gstplaysink.c +++ b/gst/playback/gstplaysink.c @@ -3271,6 +3271,21 @@ gst_play_sink_change_state (GstElement * element, GstStateChange transition) add_chain (GST_PLAY_CHAIN (playsink->textchain), FALSE); } do_async_done (playsink); + /* when going to READY, keep elements around as long as possible, + * so they may be re-used faster next time/url around. + * when really going to NULL, clean up everything completely. */ + if (transition == GST_STATE_CHANGE_READY_TO_NULL) { + free_chain ((GstPlayChain *) playsink->videodeinterlacechain); + playsink->videodeinterlacechain = NULL; + free_chain ((GstPlayChain *) playsink->videochain); + playsink->videochain = NULL; + free_chain ((GstPlayChain *) playsink->audiochain); + playsink->audiochain = NULL; + free_chain ((GstPlayChain *) playsink->vischain); + playsink->vischain = NULL; + free_chain ((GstPlayChain *) playsink->textchain); + playsink->textchain = NULL; + } break; default: break; |