diff options
author | Jan Schmidt <thaytan@noraisin.net> | 2009-05-15 10:45:45 +0100 |
---|---|---|
committer | Jan Schmidt <thaytan@noraisin.net> | 2009-05-16 01:26:55 +0100 |
commit | 90aa8eff4c553a9be1e644b424116c0280e0abfa (patch) | |
tree | 13abc7420798e2cd08a8d1bdf186a67f1214ef93 | |
parent | 48e32a0890ecb089806768eec4c5ac30cf7333d6 (diff) | |
download | gst-plugins-bad-90aa8eff4c553a9be1e644b424116c0280e0abfa.tar.gz gst-plugins-bad-90aa8eff4c553a9be1e644b424116c0280e0abfa.tar.bz2 gst-plugins-bad-90aa8eff4c553a9be1e644b424116c0280e0abfa.zip |
fpsdisplaysink: Fix resetting of the sink in NULL
Reset the fpsdisplaysink in NULL by removing the textoverlay if we
created it.
Fixes: #582633
-rw-r--r-- | gst/debugutils/fpsdisplaysink.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/gst/debugutils/fpsdisplaysink.c b/gst/debugutils/fpsdisplaysink.c index b37ab112..54f5cc54 100644 --- a/gst/debugutils/fpsdisplaysink.c +++ b/gst/debugutils/fpsdisplaysink.c @@ -267,11 +267,11 @@ fps_display_sink_start (GstFPSDisplaySink * self) gst_object_ref (self->text_overlay); g_object_set (self->text_overlay, "font-desc", DEFAULT_FONT, "silent", FALSE, NULL); - } - gst_bin_add (GST_BIN (self), self->text_overlay); + gst_bin_add (GST_BIN (self), self->text_overlay); - if (!gst_element_link (self->text_overlay, self->video_sink)) { - GST_ERROR_OBJECT (self, "Could not link elements"); + if (!gst_element_link (self->text_overlay, self->video_sink)) { + GST_ERROR_OBJECT (self, "Could not link elements"); + } } target_pad = gst_element_get_static_pad (self->text_overlay, "video_sink"); } @@ -280,6 +280,7 @@ no_text_overlay: if (self->text_overlay) { gst_element_unlink (self->text_overlay, self->video_sink); gst_bin_remove (GST_BIN (self), self->text_overlay); + self->text_overlay = NULL; } target_pad = gst_element_get_static_pad (self->video_sink, "sink"); } @@ -300,6 +301,13 @@ fps_display_sink_stop (GstFPSDisplaySink * self) g_source_remove (self->timeout_id); self->timeout_id = 0; } + + if (self->text_overlay) { + gst_element_unlink (self->text_overlay, self->video_sink); + gst_bin_remove (GST_BIN (self), self->text_overlay); + gst_object_unref (self->text_overlay); + self->text_overlay = NULL; + } } static void |