From d627f4b93bc99d53d45ba1718a7de4a4319e4d48 Mon Sep 17 00:00:00 2001 From: Matthew Bader Date: Wed, 3 Dec 2014 16:13:17 -0500 Subject: [PATCH] dshowsrcwrapper: Fixed null caps comparison https://bugzilla.gnome.org/show_bug.cgi?id=741086 --- sys/dshowsrcwrapper/gstdshowaudiosrc.cpp | 9 +++++---- sys/dshowsrcwrapper/gstdshowvideosrc.cpp | 8 +++++--- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/sys/dshowsrcwrapper/gstdshowaudiosrc.cpp b/sys/dshowsrcwrapper/gstdshowaudiosrc.cpp index d5a77b4039..c4d33e52ce 100644 --- a/sys/dshowsrcwrapper/gstdshowaudiosrc.cpp +++ b/sys/dshowsrcwrapper/gstdshowaudiosrc.cpp @@ -454,12 +454,13 @@ gst_dshowaudiosrc_prepare (GstAudioSrc * asrc, GstAudioRingBufferSpec * spec) GstDshowAudioSrc *src = GST_DSHOWAUDIOSRC (asrc); GstCaps *current_caps = gst_pad_get_current_caps (GST_BASE_SRC_PAD (asrc)); - if (gst_caps_is_equal (spec->caps, current_caps)) { + if (current_caps) { + if (gst_caps_is_equal (spec->caps, current_caps)) { + gst_caps_unref (current_caps); + return TRUE; + } gst_caps_unref (current_caps); - return TRUE; } - gst_caps_unref (current_caps); - /* In 1.0, prepare() seems to be called in the PLAYING state. Most of the time you can't do much on a running graph. */ diff --git a/sys/dshowsrcwrapper/gstdshowvideosrc.cpp b/sys/dshowsrcwrapper/gstdshowvideosrc.cpp index c254f0c805..441dff90e1 100644 --- a/sys/dshowsrcwrapper/gstdshowvideosrc.cpp +++ b/sys/dshowsrcwrapper/gstdshowvideosrc.cpp @@ -578,11 +578,13 @@ gst_dshowvideosrc_set_caps (GstBaseSrc * bsrc, GstCaps * caps) GstStructure *s = gst_caps_get_structure (caps, 0); GstCaps *current_caps = gst_pad_get_current_caps (GST_BASE_SRC_PAD (bsrc)); - if (gst_caps_is_equal (caps, current_caps)) { + if (current_caps) { + if (gst_caps_is_equal (caps, current_caps)) { + gst_caps_unref (current_caps); + return TRUE; + } gst_caps_unref (current_caps); - return TRUE; } - gst_caps_unref (current_caps); /* Same remark as in gstdshowaudiosrc. */ gboolean was_running = src->is_running;