mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 04:01:08 +00:00
gst/playback/: Unlink the signal handler when we found the type, we're not going to do anything sensible with more ty...
Original commit message from CVS: * gst/playback/gstdecodebin.c: (add_fakesink), (type_found): * gst/playback/gstdecodebin2.c: (gst_decode_bin_init), (type_found): Unlink the signal handler when we found the type, we're not going to do anything sensible with more type_found signals anyway.
This commit is contained in:
parent
aa2e910ca1
commit
ecb6c19729
3 changed files with 23 additions and 1 deletions
|
@ -1,3 +1,11 @@
|
|||
2007-10-08 Wim Taymans <wim.taymans@gmail.com>
|
||||
|
||||
* gst/playback/gstdecodebin.c: (add_fakesink), (type_found):
|
||||
* gst/playback/gstdecodebin2.c: (gst_decode_bin_init),
|
||||
(type_found):
|
||||
Unlink the signal handler when we found the type, we're not going to do
|
||||
anything sensible with more type_found signals anyway.
|
||||
|
||||
2007-10-06 Tim-Philipp Müller <tim at centricular dot net>
|
||||
|
||||
* gst-libs/gst/tag/gsttagdemux.c:
|
||||
|
|
|
@ -583,6 +583,7 @@ add_fakesink (GstDecodeBin * decode_bin)
|
|||
/* hacky, remove sink flag, we don't want our decodebin to become a sink
|
||||
* just because we add a fakesink element to make us ASYNC */
|
||||
GST_OBJECT_FLAG_UNSET (decode_bin->fakesink, GST_ELEMENT_IS_SINK);
|
||||
|
||||
/* takes ownership */
|
||||
if (!gst_bin_add (GST_BIN (decode_bin), decode_bin->fakesink)) {
|
||||
g_warning ("Could not add fakesink element, decodebin will not work");
|
||||
|
@ -1539,6 +1540,12 @@ type_found (GstElement * typefind, guint probability, GstCaps * caps,
|
|||
if (decode_bin->shutting_down)
|
||||
goto shutting_down;
|
||||
|
||||
/* don't need the typefind anymore, we're not going to dynamically change
|
||||
* elements anyway */
|
||||
if (decode_bin->have_type_id)
|
||||
g_signal_handler_disconnect (G_OBJECT (typefind), decode_bin->have_type_id);
|
||||
decode_bin->have_type_id = 0;
|
||||
|
||||
GST_DEBUG_OBJECT (decode_bin, "typefind found caps %" GST_PTR_FORMAT, caps);
|
||||
|
||||
/* special-case text/plain: we only want to accept it as a raw type if it
|
||||
|
|
|
@ -95,6 +95,8 @@ struct _GstDecodeBin
|
|||
GstCaps *caps; /* caps on which to stop decoding */
|
||||
|
||||
GList *factories; /* factories we can use for selecting elements */
|
||||
|
||||
guint have_type_id; /* signal id for have-type from typefind */
|
||||
};
|
||||
|
||||
struct _GstDecodeBinClass
|
||||
|
@ -541,7 +543,8 @@ gst_decode_bin_init (GstDecodeBin * decode_bin)
|
|||
|
||||
/* connect a signal to find out when the typefind element found
|
||||
* a type */
|
||||
g_signal_connect (G_OBJECT (decode_bin->typefind), "have_type",
|
||||
decode_bin->have_type_id =
|
||||
g_signal_connect (G_OBJECT (decode_bin->typefind), "have-type",
|
||||
G_CALLBACK (type_found), decode_bin);
|
||||
}
|
||||
|
||||
|
@ -1143,6 +1146,10 @@ type_found (GstElement * typefind, guint probability,
|
|||
|
||||
GST_DEBUG_OBJECT (decode_bin, "typefind found caps %" GST_PTR_FORMAT, caps);
|
||||
|
||||
if (decode_bin->have_type_id)
|
||||
g_signal_handler_disconnect (typefind, decode_bin->have_type_id);
|
||||
decode_bin->have_type_id = 0;
|
||||
|
||||
pad = gst_element_get_static_pad (typefind, "src");
|
||||
|
||||
analyze_new_pad (decode_bin, typefind, pad, caps, NULL);
|
||||
|
|
Loading…
Reference in a new issue