From: Jan S. <th...@pd...> - 2004-01-02 15:40:29
|
CVS Root: /home/cvs/gstreamer Module: gstreamer Changes by: thaytan Date: Fri Jan 02 2004 07:41:20 PST Log message: Change the marshalilng of element_added/element_removed signals to use gst_marshal_VOID__OBJECT over gst_marshal_VOID__POINTER Modified files: . : ChangeLog gst : gstbin.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.64&r2=1.65 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstbin.c.diff?r1=1.168&r2=1.169 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /home/cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.64 retrieving revision 1.65 diff -u -d -r1.64 -r1.65 --- ChangeLog 2 Jan 2004 07:02:43 -0000 1.64 +++ ChangeLog 2 Jan 2004 15:41:08 -0000 1.65 @@ -1,3 +1,10 @@ +2004-01-03 Jan Schmidt <th...@ma...> + + * gst/gstbin.c: (gst_bin_class_init): + Change the marshalling of element_added/element_removed + to use gst_marshal_VOID__OBJECT, since gst_marshal_VOID__POINTER + complains that GST_TYPE_ELEMENT is not G_TYPE_POINTER + 2004-01-01 David Schleef <ds...@sc...> * gst/gstpad.c: (gst_pad_set_explicit_caps), Index: gstbin.c =================================================================== RCS file: /home/cvs/gstreamer/gstreamer/gst/gstbin.c,v retrieving revision 1.168 retrieving revision 1.169 diff -u -d -r1.168 -r1.169 --- gstbin.c 16 Dec 2003 19:35:26 -0000 1.168 +++ gstbin.c 2 Jan 2004 15:41:08 -0000 1.169 @@ -135,11 +135,11 @@ gst_bin_signals[ELEMENT_ADDED] = g_signal_new ("element_added", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (GstBinClass, element_added), NULL, NULL, - gst_marshal_VOID__POINTER, G_TYPE_NONE, 1, GST_TYPE_ELEMENT); + gst_marshal_VOID__OBJECT, G_TYPE_NONE, 1, GST_TYPE_ELEMENT); gst_bin_signals[ELEMENT_REMOVED] = g_signal_new ("element_removed", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (GstBinClass, element_removed), NULL, NULL, - gst_marshal_VOID__POINTER, G_TYPE_NONE, 1, GST_TYPE_ELEMENT); + gst_marshal_VOID__OBJECT, G_TYPE_NONE, 1, GST_TYPE_ELEMENT); gst_bin_signals[ITERATE] = g_signal_new ("iterate", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstBinClass, iterate), |
From: Jan S. <th...@pd...> - 2004-01-05 16:24:45
|
CVS Root: /home/cvs/gstreamer Module: gstreamer Changes by: thaytan Date: Mon Jan 05 2004 08:25:43 PST Log message: * gst/gstcaps.c: (gst_caps_append_structure): Move the poisoning to allow a NULL structure * gst/gstevent.c: (_gst_event_free): When freeing a navigation event, free the structure also Modified files: . : ChangeLog gst : gstcaps.c gstevent.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.72&r2=1.73 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstcaps.c.diff?r1=1.84&r2=1.85 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstevent.c.diff?r1=1.37&r2=1.38 ====Begin Diffs==== Index: gstcaps.c =================================================================== RCS file: /home/cvs/gstreamer/gstreamer/gst/gstcaps.c,v retrieving revision 1.84 retrieving revision 1.85 diff -u -d -r1.84 -r1.85 --- gstcaps.c 4 Jan 2004 23:43:11 -0000 1.84 +++ gstcaps.c 5 Jan 2004 16:25:30 -0000 1.85 @@ -240,10 +240,10 @@ { g_return_if_fail(caps != NULL); + if (structure){ #ifdef USE_POISONING - STRUCTURE_POISON (structure); + STRUCTURE_POISON (structure); #endif - if (structure){ g_ptr_array_add (caps->structs, structure); } } Index: gstevent.c =================================================================== RCS file: /home/cvs/gstreamer/gstreamer/gst/gstevent.c,v retrieving revision 1.37 retrieving revision 1.38 diff -u -d -r1.37 -r1.38 --- gstevent.c 2 Dec 2003 04:29:47 -0000 1.37 +++ gstevent.c 5 Jan 2004 16:25:31 -0000 1.38 @@ -93,6 +93,8 @@ switch (GST_EVENT_TYPE (event)) { case GST_EVENT_TAG: gst_tag_list_free (event->event_data.structure.structure); + case GST_EVENT_NAVIGATION: + gst_structure_free (event->event_data.structure.structure); default: break; } Index: ChangeLog =================================================================== RCS file: /home/cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.72 retrieving revision 1.73 diff -u -d -r1.72 -r1.73 --- ChangeLog 4 Jan 2004 23:43:11 -0000 1.72 +++ ChangeLog 5 Jan 2004 16:25:31 -0000 1.73 @@ -1,3 +1,11 @@ +2004-01-06 Jan Schmidt <th...@ma...> + + * gst/gstcaps.c: (gst_caps_append_structure): + Move the poisoning to allow a NULL structure + * gst/gstevent.c: (_gst_event_free): + When freeing a navigation event, free the structure + also + 2004-01-04 David Schleef <ds...@sc...> * gst/elements/gsttee.c: (gst_tee_init), (gst_tee_request_new_pad): |
From: Jan S. <th...@pd...> - 2004-01-06 16:27:57
|
CVS Root: /home/cvs/gstreamer Module: gstreamer Changes by: thaytan Date: Tue Jan 06 2004 08:28:55 PST Log message: Make the "could not find compatible pad' message more informative Modified files: . : ChangeLog gst : gstelement.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.73&r2=1.74 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstelement.c.diff?r1=1.232&r2=1.233 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /home/cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.73 retrieving revision 1.74 diff -u -d -r1.73 -r1.74 --- ChangeLog 5 Jan 2004 16:25:31 -0000 1.73 +++ ChangeLog 6 Jan 2004 16:28:43 -0000 1.74 @@ -1,3 +1,8 @@ +2004-01-07 Jan Schmidt <th...@ma...> + + * gst/gstelement.c: (gst_element_get_compatible_pad_filtered): + Make the 'Could not find compatible pad' message more informative. + 2004-01-06 Jan Schmidt <th...@ma...> * gst/gstcaps.c: (gst_caps_append_structure): Index: gstelement.c =================================================================== RCS file: /home/cvs/gstreamer/gstreamer/gst/gstelement.c,v retrieving revision 1.232 retrieving revision 1.233 diff -u -d -r1.232 -r1.233 --- gstelement.c 3 Jan 2004 09:25:04 -0000 1.232 +++ gstelement.c 6 Jan 2004 16:28:43 -0000 1.233 @@ -1496,7 +1496,8 @@ if (foundpad) return foundpad; //} - g_critical("could not find a compatible pad"); + g_critical("Could not find a compatible pad on element %s to link to %s:%s", + GST_ELEMENT_NAME (element), GST_DEBUG_PAD_NAME (pad)); return NULL; } |
From: Jan S. <th...@pd...> - 2004-03-27 15:30:54
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: thaytan Date: Sat Mar 27 2004 07:30:53 PST Log message: Added GST_EVENT_ANY as an event type that passes a GstStructure Modified files: . : ChangeLog gst : gstevent.h Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.360&r2=1.361 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstevent.h.diff?r1=1.47&r2=1.48 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.360 retrieving revision 1.361 diff -u -d -r1.360 -r1.361 --- a/ChangeLog 26 Mar 2004 03:46:15 -0000 1.360 +++ b/ChangeLog 27 Mar 2004 15:30:40 -0000 1.361 @@ -1,3 +1,8 @@ +2004-03-28 Jan Schmidt <th...@ma...> + + * gst/gstevent.h: + Added GST_EVENT_ANY for GstEvents that pass a GstStructure 2004-03-25 David Schleef <ds...@sc...> * docs/gst/gstreamer-sections.txt: More doc hacking. Index: gstevent.h RCS file: /cvs/gstreamer/gstreamer/gst/gstevent.h,v retrieving revision 1.47 retrieving revision 1.48 diff -u -d -r1.47 -r1.48 --- a/gstevent.h 15 Mar 2004 14:43:21 -0000 1.47 +++ b/gstevent.h 27 Mar 2004 15:30:41 -0000 1.48 @@ -51,8 +51,9 @@ GST_EVENT_TS_OFFSET = 13, GST_EVENT_INTERRUPT = 14, GST_EVENT_NAVIGATION = 15, - GST_EVENT_TAG = 16 + GST_EVENT_TAG = 16 } GstEventType; +#define GST_EVENT_ANY GST_EVENT_NAVIGATION #define GST_EVENT_TRACE_NAME "GstEvent" |
From: <th...@fr...> - 2005-05-18 11:35:00
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: thaytan Date: Wed May 18 2005 04:34:57 PDT Log message: * gst/gstbuffer.c: Oops, fix a typo GST_TYPE_BUFFER -> GST_TYPE_SUBBUFFER. Modified files: . : ChangeLog gst : gstbuffer.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.1083&r2=1.1084 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstbuffer.c.diff?r1=1.95&r2=1.96 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.1083 retrieving revision 1.1084 diff -u -d -r1.1083 -r1.1084 --- ChangeLog 18 May 2005 09:55:42 -0000 1.1083 +++ ChangeLog 18 May 2005 11:34:45 -0000 1.1084 @@ -1,3 +1,8 @@ +2005-05-18 Jan Schmidt <th...@ma...> + + * gst/gstbuffer.c: + Oops, fix a typo GST_TYPE_BUFFER -> GST_TYPE_SUBBUFFER. 2005-05-18 Wim Taymans <wi...@fl...> * gst/base/Makefile.am: Index: gstbuffer.c RCS file: /cvs/gstreamer/gstreamer/gst/gstbuffer.c,v retrieving revision 1.95 retrieving revision 1.96 diff -u -d -r1.95 -r1.96 --- gstbuffer.c 16 May 2005 20:21:54 -0000 1.95 +++ gstbuffer.c 18 May 2005 11:34:45 -0000 1.96 @@ -255,7 +255,7 @@ #define GST_TYPE_SUBBUFFER (gst_subbuffer_get_type()) -#define GST_IS_SUBBUFFER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_BUFFER)) +#define GST_IS_SUBBUFFER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_SUBBUFFER)) #define GST_SUBBUFFER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_SUBBUFFER, GstSubBuffer)) struct _GstSubBuffer |
From: <th...@fr...> - 2005-06-13 11:09:26
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: thaytan Date: Mon Jun 13 2005 04:09:21 PDT Branch: BRANCH-GSTREAMER-0_8 Log message: Add filler event handling to the queue Modified files: . : ChangeLog gst : gstqueue.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.966.2.81&r2=1.966.2.82 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstqueue.c.diff?r1=1.117.2.5&r2=1.117.2.6 ====Begin Diffs==== Index: gstqueue.c =================================================================== RCS file: /cvs/gstreamer/gstreamer/gst/gstqueue.c,v retrieving revision 1.117.2.5 retrieving revision 1.117.2.6 diff -u -d -r1.117.2.5 -r1.117.2.6 --- gstqueue.c 5 Jun 2005 09:07:32 -0000 1.117.2.5 +++ gstqueue.c 13 Jun 2005 11:09:08 -0000 1.117.2.6 @@ -588,15 +588,18 @@ GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (data))); /* We make space available if we're "full" according to whatever - * the user defined as "full". Note that this only applies to buffers. + * the user defined as "full". Note that this only applies to buffers, + * and filler events with a duration * We always handle events and they don't count in our statistics. */ - if (GST_IS_BUFFER (data) && - ((queue->max_size.buffers > 0 && - queue->cur_level.buffers >= queue->max_size.buffers) || - (queue->max_size.bytes > 0 && - queue->cur_level.bytes >= queue->max_size.bytes) || - (queue->max_size.time > 0 && - queue->cur_level.time >= queue->max_size.time))) { + if ((GST_IS_BUFFER (data) || + (GST_IS_EVENT (data) && GST_EVENT_TYPE (data) == GST_EVENT_FILLER && + gst_event_filler_get_duration (GST_EVENT (data)) != + GST_CLOCK_TIME_NONE)) && ((queue->max_size.buffers > 0 + && queue->cur_level.buffers >= queue->max_size.buffers) + || (queue->max_size.bytes > 0 + && queue->cur_level.bytes >= queue->max_size.bytes) + || (queue->max_size.time > 0 + && queue->cur_level.time >= queue->max_size.time))) { GST_QUEUE_MUTEX_UNLOCK; g_signal_emit (G_OBJECT (queue), gst_queue_signals[SIGNAL_OVERRUN], 0); GST_QUEUE_MUTEX_LOCK; @@ -753,6 +756,14 @@ if (GST_BUFFER_DURATION (data) != GST_CLOCK_TIME_NONE) queue->cur_level.time += GST_BUFFER_DURATION (data); } + if (GST_IS_EVENT (data) && GST_EVENT_TYPE (data) == GST_EVENT_FILLER) { + gint64 dur = gst_event_filler_get_duration (GST_EVENT (data)); + + if (dur != GST_CLOCK_TIME_NONE) { + queue->cur_level.time += dur; + } + } STATUS (queue, "+ level"); @@ -878,6 +889,13 @@ "Got buffer of time %" GST_TIME_FORMAT, + queue->cur_level.time -= dur; /* Now that we're done, we can lose our own reference to * the item, since we're no longer in danger. */ Index: ChangeLog RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.966.2.81 retrieving revision 1.966.2.82 diff -u -d -r1.966.2.81 -r1.966.2.82 --- ChangeLog 9 Jun 2005 19:54:05 -0000 1.966.2.81 +++ ChangeLog 13 Jun 2005 11:09:08 -0000 1.966.2.82 @@ -1,3 +1,8 @@ +2005-06-13 Jan Schmidt <th...@ma...> + * gst/gstqueue.c: (gst_queue_chain), (gst_queue_get): + Add filler event handling. 2005-06-09 David Schleef <ds...@sc...> * gst/gsttrashstack.h: Fix asm to build on Solaris (#170809) |
From: <th...@fr...> - 2005-07-01 14:36:27
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: thaytan Date: Fri Jul 01 2005 07:36:24 PDT Log message: 2005-07-02 Jan Schmidt <th...@ma...> * gst/gstpad.c: (gst_pad_emit_have_data_signal): Put the mini_object into GValue as a mini_object, not a gpointer. Modified files: . : ChangeLog gst : gstpad.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.1214&r2=1.1215 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstpad.c.diff?r1=1.406&r2=1.407 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.1214 retrieving revision 1.1215 diff -u -d -r1.1214 -r1.1215 --- ChangeLog 1 Jul 2005 14:20:19 -0000 1.1214 +++ ChangeLog 1 Jul 2005 14:36:09 -0000 1.1215 @@ -1,3 +1,10 @@ +2005-07-02 Jan Schmidt <th...@ma...> + + * gst/gstpad.c: (gst_pad_emit_have_data_signal): + Put the mini_object into GValue as a mini_object, + not a gpointer, since that's how we declared + the signal. 2005-07-01 Ronald S. Bultje <rb...@ro...> * examples/pwg/Makefile.am: Index: gstpad.c RCS file: /cvs/gstreamer/gstreamer/gst/gstpad.c,v retrieving revision 1.406 retrieving revision 1.407 diff -u -d -r1.406 -r1.407 --- gstpad.c 30 Jun 2005 09:23:54 -0000 1.406 +++ gstpad.c 1 Jul 2005 14:36:12 -0000 1.407 @@ -2686,8 +2686,8 @@ g_value_set_boolean (&ret, TRUE); g_value_init (&args[0], GST_TYPE_PAD); g_value_set_object (&args[0], pad); - g_value_init (&args[1], G_TYPE_POINTER); - g_value_set_pointer (&args[1], obj); + g_value_init (&args[1], GST_TYPE_MINI_OBJECT); // G_TYPE_POINTER); + gst_value_set_mini_object (&args[1], obj); /* actually emit */ g_signal_emitv (args, gst_pad_signals[PAD_HAVE_DATA], 0, &ret); |
From: <th...@fr...> - 2005-07-29 15:35:06
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: thaytan Date: Fri Jul 29 2005 08:35:04 PDT Log message: * gst/gstbus.c: (gst_bus_set_flushing), (gst_bus_pop), (gst_bus_peek), (gst_bus_source_dispatch), (gst_bus_add_watch_full), (poll_handler), (poll_timeout), (poll_destroy), (poll_destroy_timeout), (gst_bus_poll): gst_bus_poll may be called from other threads. Handle this nicely by not making poll_data disappear off the stack once gst_bus_poll returns. gst_bus_peek now increments the refcount on the returned message. Modified files: . : ChangeLog gst : gstbus.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.1314&r2=1.1315 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstbus.c.diff?r1=1.15&r2=1.16 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.1314 retrieving revision 1.1315 diff -u -d -r1.1314 -r1.1315 --- ChangeLog 29 Jul 2005 11:29:51 -0000 1.1314 +++ ChangeLog 29 Jul 2005 15:34:50 -0000 1.1315 @@ -1,3 +1,15 @@ +2005-07-29 Jan Schmidt <th...@ma...> + + * gst/gstbus.c: (gst_bus_set_flushing), (gst_bus_pop), + (gst_bus_peek), (gst_bus_source_dispatch), + (gst_bus_add_watch_full), (poll_handler), (poll_timeout), + (poll_destroy), (poll_destroy_timeout), (gst_bus_poll): + gst_bus_poll may be called from other threads. Handle + this nicely by not making poll_data disappear off the + stack once gst_bus_poll returns. + gst_bus_peek now increments the refcount on the returned + message. 2005-07-29 Wim Taymans <wi...@fl...> * docs/design/part-gstghostpad.txt: Index: gstbus.c RCS file: /cvs/gstreamer/gstreamer/gst/gstbus.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -d -r1.15 -r1.16 --- gstbus.c 22 Jul 2005 11:47:08 -0000 1.15 +++ gstbus.c 29 Jul 2005 15:34:52 -0000 1.16 @@ -306,12 +306,12 @@ if (flushing) { GST_FLAG_SET (bus, GST_BUS_FLUSHING); - GST_DEBUG ("set bus flushing"); + GST_DEBUG_OBJECT (bus, "set bus flushing"); while ((message = gst_bus_pop (bus))) gst_message_unref (message); } else { - GST_DEBUG ("unset bus flushing"); + GST_DEBUG_OBJECT (bus, "unset bus flushing"); GST_FLAG_UNSET (bus, GST_BUS_FLUSHING); } @@ -339,7 +339,7 @@ message = g_queue_pop_head (bus->queue); g_mutex_unlock (bus->queue_lock); - GST_DEBUG ("pop on bus, got message %p", message); + GST_DEBUG_OBJECT (bus, "pop on bus, got message %p", message); return message; } @@ -348,15 +348,14 @@ * gst_bus_peek: * @bus: a #GstBus * - * Peek the message on the top of the bus' queue. The bus maintains ownership of - * the message, and the message will remain on the bus' message queue. + * Peek the message on the top of the bus' queue. The message will remain + * on the bus' message queue. A reference is returned, and needs to be freed + * by the caller. * Returns: The #GstMessage that is on the bus, or NULL if the bus is empty. * MT safe. */ -/* FIXME, dangerous as the bus could be set to flushing while the app holds - * a ref to the message */ GstMessage * gst_bus_peek (GstBus * bus) { @@ -366,9 +365,11 @@ g_mutex_lock (bus->queue_lock); message = g_queue_peek_head (bus->queue); + if (message) + gst_message_ref (message); - GST_DEBUG ("peek on bus, got message %p", message); + GST_DEBUG_OBJECT (bus, "peek on bus, got message %p", message); @@ -433,18 +434,19 @@ message = gst_bus_peek (bus); - GST_DEBUG ("have message %p", message); + GST_DEBUG_OBJECT (bus, "source %p have message %p", source, message); g_return_val_if_fail (message != NULL, TRUE); if (!handler) goto no_handler; - GST_DEBUG ("calling dispatch with %p", message); + GST_DEBUG_OBJECT (bus, "source %p calling dispatch with %p", source, message); needs_pop = handler (bus, message, user_data); + gst_message_unref (message); - GST_DEBUG ("handler returns %d", needs_pop); + GST_DEBUG_OBJECT (bus, "source %p handler returns %d", source, needs_pop); if (needs_pop) { message = gst_bus_pop (bus); if (message) { @@ -463,6 +465,7 @@ { g_warning ("GstBus watch dispatched without callback\n" "You must call g_source_connect()."); + gst_message_unref (message); return FALSE; @@ -542,6 +545,7 @@ id = g_source_attach (source, NULL); g_source_unref (source); + GST_DEBUG_OBJECT (bus, "New source %p\n", source); return id; @@ -568,6 +572,7 @@ GMainLoop *loop; guint timeout_id; + gboolean source_running; GstMessageType events; GstMessageType revent; } GstBusPollData; @@ -575,10 +580,13 @@ static gboolean poll_handler (GstBus * bus, GstMessage * message, GstBusPollData * poll_data) + if (!g_main_loop_is_running (poll_data->loop)) + return FALSE; if (GST_MESSAGE_TYPE (message) & poll_data->events) { poll_data->revent = GST_MESSAGE_TYPE (message); - if (g_main_loop_is_running (poll_data->loop)) - g_main_loop_quit (poll_data->loop); + g_main_loop_quit (poll_data->loop); /* keep the message on the queue */ @@ -590,12 +598,32 @@ poll_timeout (GstBusPollData * poll_data) - poll_data->timeout_id = 0; g_main_loop_quit (poll_data->loop); /* returning FALSE will remove the source id */ return FALSE; +static void +poll_destroy (GstBusPollData * poll_data) +{ + poll_data->source_running = FALSE; + if (!poll_data->timeout_id) { + g_main_loop_unref (poll_data->loop); + g_free (poll_data); + } +} +poll_destroy_timeout (GstBusPollData * poll_data) + poll_data->timeout_id = 0; + if (!poll_data->source_running) { /** * gst_bus_poll: @@ -616,29 +644,37 @@ GstMessageType gst_bus_poll (GstBus * bus, GstMessageType events, GstClockTimeDiff timeout) - GstBusPollData poll_data; + GstBusPollData *poll_data; GstMessageType ret; guint id; + poll_data = g_new0 (GstBusPollData, 1); + g_return_val_if_fail (poll_data != NULL, GST_MESSAGE_UNKNOWN); + poll_data->source_running = TRUE; + poll_data->loop = g_main_loop_new (NULL, FALSE); + poll_data->events = events; + poll_data->revent = GST_MESSAGE_UNKNOWN; if (timeout >= 0) - poll_data.timeout_id = g_timeout_add (timeout / GST_MSECOND, - (GSourceFunc) poll_timeout, &poll_data); + poll_data->timeout_id = g_timeout_add_full (G_PRIORITY_DEFAULT_IDLE, + timeout / GST_MSECOND, (GSourceFunc) poll_timeout, poll_data, + (GDestroyNotify) poll_destroy_timeout); else - poll_data.timeout_id = 0; + poll_data->timeout_id = 0; - poll_data.loop = g_main_loop_new (NULL, FALSE); - poll_data.events = events; - poll_data.revent = GST_MESSAGE_UNKNOWN; + id = gst_bus_add_watch_full (bus, G_PRIORITY_DEFAULT_IDLE, + (GstBusHandler) poll_handler, poll_data, (GDestroyNotify) poll_destroy); + g_main_loop_run (poll_data->loop); + ret = poll_data->revent; - id = gst_bus_add_watch (bus, (GstBusHandler) poll_handler, &poll_data); - g_main_loop_run (poll_data.loop); - g_source_remove (id); + if (poll_data->timeout_id) + g_source_remove (poll_data->timeout_id); - ret = poll_data.revent; + /* poll_data may get destroyed at any time now */ + g_source_remove (id); - if (poll_data.timeout_id) - g_source_remove (poll_data.timeout_id); - g_main_loop_unref (poll_data.loop); + GST_DEBUG_OBJECT (bus, "finished poll with messagetype %d", ret); return ret; |
From: <th...@fr...> - 2005-09-06 22:57:22
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: thaytan Date: Tue Sep 06 2005 15:57:18 PDT Log message: * gst/gstpad.c: (gst_pad_alloc_buffer): Catch misbehaving pad_alloc functions that don't set up caps and do it for them. Modified files: . : ChangeLog gst : gstpad.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.1456&r2=1.1457 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstpad.c.diff?r1=1.436&r2=1.437 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.1456 retrieving revision 1.1457 diff -u -d -r1.1456 -r1.1457 --- ChangeLog 6 Sep 2005 22:03:00 -0000 1.1456 +++ ChangeLog 6 Sep 2005 22:57:05 -0000 1.1457 @@ -1,3 +1,9 @@ +2005-09-07 Jan Schmidt <th...@ma...> + + * gst/gstpad.c: (gst_pad_alloc_buffer): + Catch misbehaving pad_alloc functions that don't + set up caps and do it for them. 2005-09-07 Stefan Kost <en...@us...> * check/pipelines/simple_launch_lines.c: (run_pipeline): Index: gstpad.c RCS file: /cvs/gstreamer/gstreamer/gst/gstpad.c,v retrieving revision 1.436 retrieving revision 1.437 diff -u -d -r1.436 -r1.437 --- gstpad.c 2 Sep 2005 23:17:26 -0000 1.436 +++ gstpad.c 6 Sep 2005 22:57:05 -0000 1.437 @@ -2379,6 +2379,15 @@ if (G_UNLIKELY (*buf == NULL)) goto fallback; + /* If the buffer alloc function didn't set up the caps like it should, + * do it for it */ + if (caps && (GST_BUFFER_CAPS (*buf) == NULL)) { + GST_WARNING ("Buffer allocation function for pad % " GST_PTR_FORMAT + " did not set up caps. Setting", peer); + gst_buffer_set_caps (*buf, caps); + } do_caps: gst_object_unref (peer); |
From: <th...@fr...> - 2005-09-07 14:56:36
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: thaytan Date: Wed Sep 07 2005 07:56:29 PDT Branch: BRANCH-GSTREAMER-0_8 Log message: * gst/gstplugin.c: (gst_plugin_check_file), (gst_plugin_load_file), (gst_plugin_free): * gst/gstplugin.h: * gst/gstregistry.c: (gst_registry_add_plugin): Always call g_module_close on error so the symbols don't hang around. Plug a leak or two, I think. Modified files: . : ChangeLog gst : gstplugin.c gstplugin.h gstregistry.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.966.2.106&r2=1.966.2.107 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstplugin.c.diff?r1=1.134.2.2&r2=1.134.2.3 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstplugin.h.diff?r1=1.46.4.1&r2=1.46.4.2 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstregistry.c.diff?r1=1.29&r2=1.29.4.1 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.966.2.106 retrieving revision 1.966.2.107 diff -u -d -r1.966.2.106 -r1.966.2.107 --- ChangeLog 4 Sep 2005 15:52:29 -0000 1.966.2.106 +++ ChangeLog 7 Sep 2005 14:56:16 -0000 1.966.2.107 @@ -1,3 +1,13 @@ +2005-09-07 Jan Schmidt <th...@ma...> + + * gst/gstplugin.c: (gst_plugin_check_file), (gst_plugin_load_file), + (gst_plugin_free): + * gst/gstplugin.h: + * gst/gstregistry.c: (gst_registry_add_plugin): + Always call g_module_close on error so the symbols don't hang + around. + Plug a leak or two, I think. 2005-09-04 Thomas Vander Stichele <thomas at apestaart dot org> * configure.ac: Index: gstplugin.c RCS file: /cvs/gstreamer/gstreamer/gst/gstplugin.c,v retrieving revision 1.134.2.2 retrieving revision 1.134.2.3 diff -u -d -r1.134.2.2 -r1.134.2.3 --- gstplugin.c 3 May 2005 12:02:39 -0000 1.134.2.2 +++ gstplugin.c 7 Sep 2005 14:56:17 -0000 1.134.2.3 @@ -376,7 +376,8 @@ module = g_module_open (filename, G_MODULE_BIND_LAZY); check = gst_plugin_check_module (module, filename, error, NULL); - g_module_close (module); + if (module != NULL) + g_module_close (module); GST_INFO ("file \"%s\" %s look like a gst plugin", filename, check ? "does" : "doesn't"); @@ -409,8 +410,11 @@ - if (!gst_plugin_check_module (module, filename, error, &ptr)) /* handles module == NULL case */ + if (!gst_plugin_check_module (module, filename, error, &ptr)) { /* handles module == NULL case */ + if (module != NULL) + g_module_close (module); return NULL; + } desc = (GstPluginDesc *) ptr; @@ -435,7 +439,7 @@ "loaded, aborting loading of \"%s\"", plugin, plugin->filename, plugin->desc.name, filename); if (free_plugin) - g_free (plugin); + gst_plugin_free (plugin); return NULL; } GST_LOG ("Plugin %p for file \"%s\" already loaded, returning it now", @@ -478,7 +482,7 @@ "gst_plugin_register_func failed for plugin \"%s\"", filename); g_module_close (module); if (free_plugin) - g_free (plugin); + gst_plugin_free (plugin); } } @@ -921,3 +925,27 @@ return res; +/** + * gst_plugin_free: + * @plugin: Plugin structure to clean up and free. + * + * Frees the memory associated with a plugin + */ +void +gst_plugin_free (GstPlugin * plugin) +{ + g_return_if_fail (plugin != NULL); + g_free (plugin->filename); + if (plugin->module) + g_module_close (plugin->module); + /* anything to clean up in these? + * GstPluginDesc desc + * GList * features; + */ + g_free (plugin); +} Index: gstplugin.h RCS file: /cvs/gstreamer/gstreamer/gst/gstplugin.h,v retrieving revision 1.46.4.1 retrieving revision 1.46.4.2 diff -u -d -r1.46.4.1 -r1.46.4.2 --- gstplugin.h 16 Apr 2005 08:31:50 -0000 1.46.4.1 +++ gstplugin.h 7 Sep 2005 14:56:17 -0000 1.46.4.2 @@ -126,6 +126,7 @@ GType gst_plugin_get_type (void); void _gst_plugin_initialize (void); void _gst_plugin_register_static (GstPluginDesc *desc); +void gst_plugin_free (GstPlugin *plugin); G_CONST_RETURN gchar* gst_plugin_get_name (GstPlugin *plugin); G_CONST_RETURN gchar* gst_plugin_get_description (GstPlugin *plugin); Index: gstregistry.c RCS file: /cvs/gstreamer/gstreamer/gst/gstregistry.c,v retrieving revision 1.29 retrieving revision 1.29.4.1 diff -u -d -r1.29 -r1.29.4.1 --- gstregistry.c 10 May 2004 00:35:59 -0000 1.29 +++ gstregistry.c 7 Sep 2005 14:56:17 -0000 1.29.4.1 @@ -282,10 +282,12 @@ gst_registry_add_plugin (GstRegistry * registry, GstPlugin * plugin) { g_return_val_if_fail (GST_IS_REGISTRY (registry), FALSE); + g_return_val_if_fail (plugin != NULL, FALSE); if (gst_registry_pool_find_plugin (gst_plugin_get_name (plugin))) { GST_WARNING_OBJECT (registry, "Not adding plugin %s, " "because a plugin with same name already exists", gst_plugin_get_name (plugin)); + gst_plugin_free (plugin); return FALSE; |
From: <th...@fr...> - 2005-11-22 14:29:26
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: thaytan Date: Tue Nov 22 2005 06:29:22 PST Log message: * gst/gstvalue.c: (gst_value_collect_fraction_range): If needed, allocate storage in the destination value during collection. Modified files: . : ChangeLog gst : gstvalue.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.1991&r2=1.1992 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstvalue.c.diff?r1=1.98&r2=1.99 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.1991 retrieving revision 1.1992 diff -u -d -r1.1991 -r1.1992 --- ChangeLog 22 Nov 2005 13:57:59 -0000 1.1991 +++ ChangeLog 22 Nov 2005 14:29:09 -0000 1.1992 @@ -1,3 +1,9 @@ +2005-11-22 Jan Schmidt <th...@ma...> + + * gst/gstvalue.c: (gst_value_collect_fraction_range): + If needed, allocate storage in the destination value during + collection. 2005-11-22 Edward Hervey <ed...@fl...> * docs/gst/gstreamer-sections.txt: Index: gstvalue.c RCS file: /cvs/gstreamer/gstreamer/gst/gstvalue.c,v retrieving revision 1.98 retrieving revision 1.99 diff -u -d -r1.98 -r1.99 --- gstvalue.c 22 Nov 2005 11:56:01 -0000 1.98 +++ gstvalue.c 22 Nov 2005 14:29:10 -0000 1.99 @@ -956,9 +956,14 @@ if (n_collect_values != 4) return g_strdup_printf ("not enough value locations for `%s' passed", G_VALUE_TYPE_NAME (value)); - if (vals == NULL) - return g_strdup_printf ("Uninitialised `%s' passed", - G_VALUE_TYPE_NAME (value)); + if (vals == NULL) { + value->data[0].v_pointer = vals = g_new0 (GValue, 2); + if (vals == NULL) + return g_strdup_printf ("Could not initialise`%s' during collect", + G_VALUE_TYPE_NAME (value)); + g_value_init (&vals[0], GST_TYPE_FRACTION); + g_value_init (&vals[1], GST_TYPE_FRACTION); + } gst_value_set_fraction (&vals[0], collect_values[0].v_int, collect_values[1].v_int); |
From: <th...@fr...> - 2005-11-25 17:06:51
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: thaytan Date: Fri Nov 25 2005 09:06:49 PST Log message: * gst/gstbin.c: (gst_bin_handle_message_func): Don't leak clock messages. Modified files: . : ChangeLog gst : gstbin.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.2017&r2=1.2018 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstbin.c.diff?r1=1.316&r2=1.317 ====Begin Diffs==== Index: gstbin.c =================================================================== RCS file: /cvs/gstreamer/gstreamer/gst/gstbin.c,v retrieving revision 1.316 retrieving revision 1.317 diff -u -d -r1.316 -r1.317 --- gstbin.c 24 Nov 2005 09:44:06 -0000 1.316 +++ gstbin.c 25 Nov 2005 17:06:36 -0000 1.317 @@ -1999,6 +1999,9 @@ if (forward) { goto forward; } + /* free message */ + gst_message_unref (message); + break; } case GST_MESSAGE_CLOCK_PROVIDE: @@ -2014,6 +2017,9 @@ if (forward) default: Index: ChangeLog RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.2017 retrieving revision 1.2018 diff -u -d -r1.2017 -r1.2018 --- ChangeLog 25 Nov 2005 11:38:38 -0000 1.2017 +++ ChangeLog 25 Nov 2005 17:06:36 -0000 1.2018 @@ -1,3 +1,8 @@ +2005-11-25 Jan Schmidt <th...@ma...> + * gst/gstbin.c: (gst_bin_handle_message_func): + Don't leak clock messages. 2005-11-25 Wim Taymans <wi...@fl...> * gst/gstutils.c: (gst_util_uint64_scale_int64), |
From: <th...@fr...> - 2005-11-28 19:43:45
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: thaytan Date: Mon Nov 28 2005 11:43:40 PST Log message: * gst/gstinfo.h: Hey! Let's print the pad name if the pointer != NULL instead of when it == NULL :-) Modified files: . : ChangeLog gst : gstinfo.h Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.2035&r2=1.2036 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstinfo.h.diff?r1=1.91&r2=1.92 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.2035 retrieving revision 1.2036 diff -u -d -r1.2035 -r1.2036 --- ChangeLog 28 Nov 2005 18:44:11 -0000 1.2035 +++ ChangeLog 28 Nov 2005 19:43:27 -0000 1.2036 @@ -1,3 +1,9 @@ +2005-11-28 Jan Schmidt <th...@ma...> + + * gst/gstinfo.h: + Hey! Let's print the pad name if the pointer != NULL instead + of when it == NULL :-) 2005-11-28 Wim Taymans <wi...@fl...> * check/gst/gstutils.c: (GST_START_TEST): Index: gstinfo.h RCS file: /cvs/gstreamer/gstreamer/gst/gstinfo.h,v retrieving revision 1.91 retrieving revision 1.92 diff -u -d -r1.91 -r1.92 --- gstinfo.h 24 Nov 2005 16:56:28 -0000 1.91 +++ gstinfo.h 28 Nov 2005 19:43:27 -0000 1.92 @@ -189,7 +189,7 @@ ((GST_OBJECT_PARENT(pad) != NULL) ? \ GST_STR_NULL (GST_OBJECT_NAME (GST_OBJECT_PARENT(pad))) : \ "''" ) : "''", \ - (pad==NULL) ? GST_OBJECT_NAME (pad) : "''" + (pad != NULL) ? GST_OBJECT_NAME (pad) : "''" /** * GST_FUNCTION: |
From: <th...@fr...> - 2006-01-12 16:47:32
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: thaytan Date: Thu Jan 12 2006 08:08:02 PST Log message: * gst/gstbuffer.c: (gst_buffer_span): gst_buffer_span should copy the timestamp of the first buffer if they were both originally overlapping subbuffers of the same parent, using the same logic as the 'slow copy' case. Modified files: . : ChangeLog gst : gstbuffer.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.2171&r2=1.2172 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstbuffer.c.diff?r1=1.119&r2=1.120 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.2171 retrieving revision 1.2172 diff -u -d -r1.2171 -r1.2172 --- ChangeLog 11 Jan 2006 21:32:21 -0000 1.2171 +++ ChangeLog 12 Jan 2006 16:07:49 -0000 1.2172 @@ -1,3 +1,10 @@ +2006-01-12 Jan Schmidt <th...@ma...> + + * gst/gstbuffer.c: (gst_buffer_span): + gst_buffer_span should copy the timestamp of the first buffer + if they were both originally overlapping subbuffers of the + same parent, using the same logic as the 'slow copy' case. 2006-01-11 Jan Schmidt <th...@ma...> * libs/gst/base/gstcollectpads.c: (gst_collect_pads_pop): Index: gstbuffer.c RCS file: /cvs/gstreamer/gstreamer/gst/gstbuffer.c,v retrieving revision 1.119 retrieving revision 1.120 diff -u -d -r1.119 -r1.120 --- gstbuffer.c 11 Jan 2006 19:18:27 -0000 1.119 +++ gstbuffer.c 12 Jan 2006 16:07:50 -0000 1.120 @@ -553,25 +553,26 @@ /* copy the second buffer's data across */ memcpy (newbuf->data + (buf1->size - offset), buf2->data, len - (buf1->size - offset)); - /* if the offset is 0, the new buffer has the same timestamp as buf1 */ - if (offset == 0) { - GST_BUFFER_OFFSET (newbuf) = GST_BUFFER_OFFSET (buf1); - GST_BUFFER_TIMESTAMP (newbuf) = GST_BUFFER_TIMESTAMP (buf1); - } } - /* if we completely merged the two buffers (appended), we can - * calculate the duration too. Also make sure we's not messing with - * invalid DURATIONS */ - if (offset == 0 && buf1->size + buf2->size == len) { - if (GST_BUFFER_DURATION_IS_VALID (buf1) && - GST_BUFFER_DURATION_IS_VALID (buf2)) { - /* add duration */ - GST_BUFFER_DURATION (newbuf) = GST_BUFFER_DURATION (buf1) + - GST_BUFFER_DURATION (buf2); - if (GST_BUFFER_OFFSET_END_IS_VALID (buf2)) { - /* add offset_end */ - GST_BUFFER_OFFSET_END (newbuf) = GST_BUFFER_OFFSET_END (buf2); + /* if the offset is 0, the new buffer has the same timestamp as buf1 */ + if (offset == 0) { + GST_BUFFER_OFFSET (newbuf) = GST_BUFFER_OFFSET (buf1); + GST_BUFFER_TIMESTAMP (newbuf) = GST_BUFFER_TIMESTAMP (buf1); + /* if we completely merged the two buffers (appended), we can + * calculate the duration too. Also make sure we's not messing with + * invalid DURATIONS */ + if (buf1->size + buf2->size == len) { + if (GST_BUFFER_DURATION_IS_VALID (buf1) && + GST_BUFFER_DURATION_IS_VALID (buf2)) { + /* add duration */ + GST_BUFFER_DURATION (newbuf) = GST_BUFFER_DURATION (buf1) + + GST_BUFFER_DURATION (buf2); + } + if (GST_BUFFER_OFFSET_END_IS_VALID (buf2)) { + /* add offset_end */ + GST_BUFFER_OFFSET_END (newbuf) = GST_BUFFER_OFFSET_END (buf2); } |
From: <th...@fr...> - 2006-01-16 14:39:59
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: thaytan Date: Mon Jan 16 2006 06:38:06 PST Log message: * gst/gstminiobject.c: Spelling fix in docs. * ChangeLog - remove conflict indicator Modified files: . : ChangeLog gst : gstminiobject.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.2181&r2=1.2182 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstminiobject.c.diff?r1=1.22&r2=1.23 ====Begin Diffs==== Index: gstminiobject.c =================================================================== RCS file: /cvs/gstreamer/gstreamer/gst/gstminiobject.c,v retrieving revision 1.22 retrieving revision 1.23 diff -u -d -r1.22 -r1.23 --- gstminiobject.c 15 Dec 2005 12:22:37 -0000 1.22 +++ gstminiobject.c 16 Jan 2006 14:37:54 -0000 1.23 @@ -209,7 +209,7 @@ * * MT safe - * Returns: a mini-object (possibly a duplicate) that it writable. + * Returns: a mini-object (possibly a duplicate) that is writable. */ GstMiniObject * gst_mini_object_make_writable (GstMiniObject * mini_object) Index: ChangeLog RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.2181 retrieving revision 1.2182 diff -u -d -r1.2181 -r1.2182 --- ChangeLog 16 Jan 2006 14:32:32 -0000 1.2181 +++ ChangeLog 16 Jan 2006 14:37:54 -0000 1.2182 @@ -1,5 +1,11 @@ 2006-01-16 Jan Schmidt <th...@ma...> + * gst/gstminiobject.c: + Spelling fix in docs. + * ChangeLog - remove conflict indicator + +2006-01-16 Jan Schmidt <th...@ma...> Reviewed By: Andy Wingo * gst/gstbuffer.c: (gst_buffer_is_metadata_writable), @@ -225,7 +231,6 @@ macro, so that gcc doesn't complain if the -Wmissing-prototypes compiler switch is being used (#325429). ->>>>>>> 1.2159 2005-12-29 Tim-Philipp Müller <tim at centricular dot net> * gst/gstbin.c: (gst_bin_query): |
From: <th...@fr...> - 2006-01-27 01:51:18
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: thaytan Date: Thu Jan 26 2006 17:48:49 PST Log message: * gst/gstbin.c: (gst_bin_dispose), (gst_bin_provide_clock_func), (gst_bin_remove_func), (gst_bin_handle_message_func), (bin_query_duration_fold), (bin_query_generic_fold): Clean up references to the clock provider when disposed or when handling a clock-lost message from it. Unref sinks when performing a query via gst_iterator_fold, as the gst_bin_iterate_sinks iterator refs each item. (Fixes #323874) * gst/gstclock.c: (gst_clock_class_init), (gst_clock_dispose), (gst_clock_set_master): Drop our reference to the master clock, if any, when we are disposed. * gst/gsttypefindfactory.c: (gst_type_find_factory_dispose): Chain up in dispose. Modified files: . : ChangeLog gst : gstbin.c gstclock.c gsttypefindfactory.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.2218&r2=1.2219 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstbin.c.diff?r1=1.323&r2=1.324 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstclock.c.diff?r1=1.82&r2=1.83 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gsttypefindfactory.c.diff?r1=1.11&r2=1.12 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.2218 retrieving revision 1.2219 diff -u -d -r1.2218 -r1.2219 --- ChangeLog 26 Jan 2006 12:59:48 -0000 1.2218 +++ ChangeLog 27 Jan 2006 01:48:36 -0000 1.2219 @@ -1,3 +1,21 @@ +2006-01-27 Jan Schmidt <th...@ma...> + + * gst/gstbin.c: (gst_bin_dispose), (gst_bin_provide_clock_func), + (gst_bin_remove_func), (gst_bin_handle_message_func), + (bin_query_duration_fold), (bin_query_generic_fold): + Clean up references to the clock provider when disposed or when + handling a clock-lost message from it. + Unref sinks when performing a query via gst_iterator_fold, as the + gst_bin_iterate_sinks iterator refs each item. (Fixes #323874) + * gst/gstclock.c: (gst_clock_class_init), (gst_clock_dispose), + (gst_clock_set_master): + Drop our reference to the master clock, if any, when we are disposed. + * gst/gsttypefindfactory.c: (gst_type_find_factory_dispose): + Chain up in dispose. 2006-01-26 Wim Taymans <wi...@fl...> * libs/gst/base/gstbasesrc.c: (gst_base_src_get_range): Index: gstbin.c RCS file: /cvs/gstreamer/gstreamer/gst/gstbin.c,v retrieving revision 1.323 retrieving revision 1.324 diff -u -d -r1.323 -r1.324 --- gstbin.c 26 Jan 2006 06:57:14 -0000 1.323 +++ gstbin.c 27 Jan 2006 01:48:37 -0000 1.324 @@ -387,6 +387,7 @@ gst_object_replace ((GstObject **) & bin->child_bus, NULL); gst_object_replace ((GstObject **) & bin->provided_clock, NULL); + gst_object_replace ((GstObject **) & bin->clock_provider, NULL); while (bin->children) { gst_bin_remove (bin, GST_ELEMENT_CAST (bin->children->data)); @@ -513,7 +514,12 @@ gst_object_replace ((GstObject **) & bin->clock_provider, (GstObject *) provider); bin->clock_dirty = FALSE; - GST_DEBUG_OBJECT (bin, "provided new clock %p", result); + GST_DEBUG_OBJECT (bin, + "provided new clock %" GST_PTR_FORMAT " by provider %" GST_PTR_FORMAT, + result, provider); + /* Provider is not being returned to caller, just the result */ + if (provider) + gst_object_unref (provider); GST_OBJECT_UNLOCK (bin); gst_iterator_free (it); @@ -884,6 +890,7 @@ GST_OBJECT_FLAG_UNSET (bin, GST_ELEMENT_IS_SINK); } } /* if the clock provider for this element is removed, we lost * the clock as well, we need to inform the parent of this * so that it can select a new clock */ @@ -893,6 +900,7 @@ clock_message = gst_message_new_clock_lost (GST_OBJECT_CAST (bin), bin->provided_clock); bin->state_dirty = TRUE; @@ -906,6 +914,9 @@ gst_element_set_bus (element, NULL); + /* Clear the clock we provided to the element */ + gst_element_set_clock (element, NULL); /* we ref here because after the _unparent() the element can be disposed * and we still need it to reset the UNPARENTING flag and fire a signal. */ gst_object_ref (element); @@ -2076,6 +2087,13 @@ provided = (clock == bin->provided_clock); playing = (GST_STATE (bin) == GST_STATE_PLAYING); forward = playing & provided; + if (provided) { + GST_DEBUG_OBJECT (bin, + "Lost clock %" GST_PTR_FORMAT " provided by %" GST_PTR_FORMAT, + bin->provided_clock, bin->clock_provider); + gst_object_replace ((GstObject **) & bin->provided_clock, NULL); + gst_object_replace ((GstObject **) & bin->clock_provider, NULL); + } GST_DEBUG_OBJECT (bin, "provided %d, playing %d, forward %d", provided, playing, forward); GST_OBJECT_UNLOCK (bin); @@ -2154,6 +2172,8 @@ if (duration > fold->max) fold->max = duration; + gst_object_unref (item); return TRUE; } static void @@ -2185,6 +2205,8 @@ GST_DEBUG_OBJECT (item, "answered query %p", fold->query); /* and stop as soon as we have a valid result */ return !res; Index: gstclock.c RCS file: /cvs/gstreamer/gstreamer/gst/gstclock.c,v retrieving revision 1.82 retrieving revision 1.83 diff -u -d -r1.82 -r1.83 --- gstclock.c 18 Jan 2006 18:01:54 -0000 1.82 +++ gstclock.c 27 Jan 2006 01:48:37 -0000 1.83 @@ -125,6 +125,7 @@ static void gst_clock_class_init (GstClockClass * klass); static void gst_clock_init (GstClock * clock); +static void gst_clock_dispose (GObject * object); static void gst_clock_finalize (GObject * object); static void gst_clock_set_property (GObject * object, guint prop_id, @@ -535,6 +536,7 @@ gst_alloc_trace_register (GST_CLOCK_ENTRY_TRACE_NAME); #endif + gobject_class->dispose = GST_DEBUG_FUNCPTR (gst_clock_dispose); gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_clock_finalize); gobject_class->set_property = GST_DEBUG_FUNCPTR (gst_clock_set_property); gobject_class->get_property = GST_DEBUG_FUNCPTR (gst_clock_get_property); @@ -580,6 +582,18 @@ +gst_clock_dispose (GObject * object) +{ + GstClock *clock = GST_CLOCK (object); + GST_OBJECT_LOCK (clock); + gst_object_replace ((GstObject **) & clock->master, NULL); + GST_OBJECT_UNLOCK (clock); + G_OBJECT_CLASS (parent_class)->dispose (object); +} +static void gst_clock_finalize (GObject * object) { GstClock *clock = GST_CLOCK (object); @@ -874,6 +888,7 @@ gst_clock_set_master (GstClock * clock, GstClock * master) g_return_val_if_fail (GST_IS_CLOCK (clock), FALSE); + g_return_val_if_fail (master != clock, FALSE); GST_OBJECT_LOCK (clock); /* we always allow setting the master to NULL */ Index: gsttypefindfactory.c RCS file: /cvs/gstreamer/gstreamer/gst/gsttypefindfactory.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- gsttypefindfactory.c 12 Dec 2005 19:09:48 -0000 1.11 +++ gsttypefindfactory.c 27 Jan 2006 01:48:37 -0000 1.12 @@ -161,6 +161,8 @@ factory->user_data_notify (factory->user_data); factory->user_data = NULL; /** |
From: <th...@fr...> - 2006-02-14 11:42:27
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: thaytan Date: Tue Feb 14 2006 03:39:02 PST Log message: * gst/gstpad.c: (fixate_value): Add a default fixation for fraction lists. Modified files: . : ChangeLog gst : gstpad.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.2271&r2=1.2272 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstpad.c.diff?r1=1.493&r2=1.494 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.2271 retrieving revision 1.2272 diff -u -d -r1.2271 -r1.2272 --- ChangeLog 13 Feb 2006 17:03:22 -0000 1.2271 +++ ChangeLog 14 Feb 2006 11:38:49 -0000 1.2272 @@ -1,3 +1,8 @@ +2006-02-14 Jan Schmidt <th...@ma...> + + * gst/gstpad.c: (fixate_value): + Add a default fixation for fraction lists. 2006-02-13 Wim Taymans <wi...@fl...> * gst/gsttask.c: (gst_task_init), (gst_task_func), Index: gstpad.c RCS file: /cvs/gstreamer/gstreamer/gst/gstpad.c,v retrieving revision 1.493 retrieving revision 1.494 diff -u -d -r1.493 -r1.494 --- gstpad.c 13 Feb 2006 11:52:42 -0000 1.493 +++ gstpad.c 14 Feb 2006 11:38:50 -0000 1.494 @@ -1952,6 +1952,8 @@ } else if (G_VALUE_TYPE (src) == GST_TYPE_DOUBLE_RANGE) { g_value_init (dest, G_TYPE_DOUBLE); g_value_set_double (dest, gst_value_get_double_range_min (src)); + } else if (G_VALUE_TYPE (src) == GST_TYPE_FRACTION_RANGE) { + gst_value_init_and_copy (dest, gst_value_get_fraction_range_min (src)); } else if (G_VALUE_TYPE (src) == GST_TYPE_LIST) { GValue temp = { 0 }; |
From: <th...@ke...> - 2006-02-20 23:34:53
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: thaytan Date: Mon Feb 20 2006 23:34:52 UTC Log message: * gst/Makefile.am: * gst/gstparse.h: * gst/gstutils.c: * gst/gstutils.h: Make things work with --disable-parse as they do with --disable-load-save - the symbols involved disappear, but the header is still installed and GST_DISABLE_PARSE is included via gstconfig.h Modified files: . : ChangeLog gst : Makefile.am gstparse.h gstutils.c gstutils.h Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.2287&r2=1.2288 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/Makefile.am.diff?r1=1.211&r2=1.212 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstparse.h.diff?r1=1.25&r2=1.26 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstutils.c.diff?r1=1.134&r2=1.135 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstutils.h.diff?r1=1.71&r2=1.72 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.2287 retrieving revision 1.2288 diff -u -d -r1.2287 -r1.2288 --- ChangeLog 20 Feb 2006 16:07:42 -0000 1.2287 +++ ChangeLog 20 Feb 2006 23:34:40 -0000 1.2288 @@ -1,3 +1,14 @@ +2006-02-21 Jan Schmidt <th...@ma...> + + * gst/Makefile.am: + * gst/gstparse.h: + * gst/gstutils.c: + * gst/gstutils.h: + Make things work with --disable-parse as they do with + --disable-load-save - the symbols involved disappear, but the + header is still installed and GST_DISABLE_PARSE is included via + gstconfig.h 2006-02-20 Julien MOUTTE <ju...@mo...> * libs/gst/base/gstbasetransform.c: Index: Makefile.am RCS file: /cvs/gstreamer/gstreamer/gst/Makefile.am,v retrieving revision 1.211 retrieving revision 1.212 diff -u -d -r1.211 -r1.212 --- Makefile.am 30 Nov 2005 19:36:51 -0000 1.211 +++ Makefile.am 20 Feb 2006 23:34:40 -0000 1.212 @@ -14,12 +14,10 @@ if GST_DISABLE_PARSE GST_PARSE_SRC = -GST_PARSE_H = SUBDIRS_PARSE = GST_PARSE_LA = else GST_PARSE_SRC = gstparse.c -GST_PARSE_H = gstparse.h SUBDIRS_PARSE = parse GST_PARSE_LA = parse/libgstparse.la endif @@ -190,7 +188,7 @@ gstutils.h \ gstvalue.h \ gstregistry.h \ - $(GST_PARSE_H) \ + gstparse.h \ gstxml.h libgstreamer_@GST_MAJORMINOR@include_HEADERS = $(gst_headers) Index: gstparse.h RCS file: /cvs/gstreamer/gstreamer/gst/gstparse.h,v retrieving revision 1.25 retrieving revision 1.26 diff -u -d -r1.25 -r1.26 --- gstparse.h 21 Oct 2005 11:36:32 -0000 1.25 +++ gstparse.h 20 Feb 2006 23:34:40 -0000 1.26 @@ -23,6 +23,8 @@ #ifndef __GST_PARSE_H__ #define __GST_PARSE_H__ +#include <gst/gstconfig.h> #include <gst/gstelement.h> G_BEGIN_DECLS Index: gstutils.c RCS file: /cvs/gstreamer/gstreamer/gst/gstutils.c,v retrieving revision 1.134 retrieving revision 1.135 diff -u -d -r1.134 -r1.135 --- gstutils.c 20 Feb 2006 15:07:33 -0000 1.134 +++ gstutils.c 20 Feb 2006 23:34:40 -0000 1.135 @@ -3047,6 +3047,7 @@ return pad; } +#ifndef GST_DISABLE_PARSE /** * gst_parse_bin_from_description: * @bin_description: command line describing the bin @@ -3107,3 +3108,4 @@ return GST_ELEMENT (bin); +#endif Index: gstutils.h RCS file: /cvs/gstreamer/gstreamer/gst/gstutils.h,v retrieving revision 1.71 retrieving revision 1.72 diff -u -d -r1.71 -r1.72 --- gstutils.h 2 Feb 2006 09:51:18 -0000 1.71 +++ gstutils.h 20 Feb 2006 23:34:40 -0000 1.72 @@ -25,6 +25,8 @@ #ifndef __GST_UTILS_H__ #define __GST_UTILS_H__ #include <glib.h> #include <gst/gstbin.h> @@ -599,10 +601,18 @@ void gst_element_found_tags (GstElement * element, GstTagList * list); /* parse utility functions */ GstElement * gst_parse_bin_from_description (const gchar * bin_description, gboolean ghost_unconnected_pads, GError ** err); +#else /* GST_DISABLE_PARSE */ +#if defined _GNUC_ && _GNUC_ >= 3 +#pragma GCC poison gst_parse_bin_from_description G_END_DECLS |
From: <th...@ke...> - 2006-03-03 16:59:05
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: thaytan Date: Fri Mar 03 2006 16:59:03 UTC Log message: * gst/gst.c: Add a check and output a g_warning when GStreamer is built against GLib 2.6 but running against 2.8 or higher, and vice versa. (Closes: #323542) Modified files: . : ChangeLog gst : gst.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.2314&r2=1.2315 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gst.c.diff?r1=1.196&r2=1.197 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.2314 retrieving revision 1.2315 diff -u -d -r1.2314 -r1.2315 --- ChangeLog 3 Mar 2006 15:32:30 -0000 1.2314 +++ ChangeLog 3 Mar 2006 16:58:51 -0000 1.2315 @@ -1,5 +1,12 @@ 2006-03-03 Jan Schmidt <th...@ma...> + * gst/gst.c: + Add a check and output a g_warning when GStreamer is built + against GLib 2.6 but running against 2.8 or higher, and vice + versa. (Closes: #323542) + +2006-03-03 Jan Schmidt <th...@ma...> * gst/parse/parse.l: Commit patch for parse_launch syntax from #331255. Removes support for quoted strings and mimetypes when writing filtered Index: gst.c RCS file: /cvs/gstreamer/gstreamer/gst/gst.c,v retrieving revision 1.196 retrieving revision 1.197 diff -u -d -r1.196 -r1.197 --- gst.c 27 Dec 2005 12:11:19 -0000 1.196 +++ gst.c 3 Mar 2006 16:58:51 -0000 1.197 @@ -463,6 +463,23 @@ static gboolean init_pre (void) { +#ifdef GST_HAVE_GLIB_2_8 + /* GStreamer was built against a GLib >= 2.8 and is therefore not doing + * the refcount hack. Check that it isn't being run against an older GLib */ + if (glib_major_version < 2 || + (glib_major_version == 2 && glib_minor_version < 8)) { +#else + /* GStreamer was built against a GLib < 2.8 and is therefore doing + * the refcount hack. Check that it isn't being run against a newer GLib */ + if (glib_major_version > 2 || + (glib_major_version == 2 && glib_minor_version >= 8)) { +#endif + g_warning ("GStreamer was compiled against GLib %d.%d.%d but is running" + " against %d.%d.%d. This will cause reference counting issues", + GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION, + glib_major_version, glib_minor_version, glib_micro_version); + } g_type_init (); if (g_thread_supported ()) { |
From: <th...@ke...> - 2006-03-15 16:29:16
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: thaytan Date: Wed Mar 15 2006 16:29:14 UTC Log message: * gst/gstbuffer.h: Documentation fix. * gst/gstpad.c: (gst_pad_init), (gst_pad_acceptcaps_default), (gst_pad_accept_caps), (gst_pad_configure_sink), (gst_pad_configure_src), (gst_pad_chain), (gst_pad_push): Make the default acceptcaps behaviour be to check the requested caps against the gst_pad_get_caps output. Ensure that gst_pad_accept_caps is used to check caps when a pad doesn't have a setcaps function, so that pads automatically refuse caps that they don't allow in their pad template. (Fixes #332986) When a buffer with attached caps is pushed, ensure that the source pad receives those caps even if the element didn't call gst_pad_set_caps first. Modified files: . : ChangeLog gst : gstbuffer.h gstpad.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.2364&r2=1.2365 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstbuffer.h.diff?r1=1.106&r2=1.107 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstpad.c.diff?r1=1.498&r2=1.499 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.2364 retrieving revision 1.2365 diff -u -d -r1.2364 -r1.2365 --- ChangeLog 15 Mar 2006 16:22:26 -0000 1.2364 +++ ChangeLog 15 Mar 2006 16:29:02 -0000 1.2365 @@ -1,3 +1,22 @@ +2006-03-15 Jan Schmidt <th...@ma...> + + * gst/gstbuffer.h: + Documentation fix. + * gst/gstpad.c: (gst_pad_init), (gst_pad_acceptcaps_default), + (gst_pad_accept_caps), (gst_pad_configure_sink), + (gst_pad_configure_src), (gst_pad_chain), (gst_pad_push): + Make the default acceptcaps behaviour be to check the requested + caps against the gst_pad_get_caps output. + Ensure that gst_pad_accept_caps is used to check caps when a pad + doesn't have a setcaps function, so that pads automatically refuse + caps that they don't allow in their pad template. (Fixes #332986) + When a buffer with attached caps is pushed, ensure that the source + pad receives those caps even if the element didn't call + gst_pad_set_caps first. 2006-03-15 Wim Taymans <wi...@fl...> * libs/gst/base/gstadapter.c: Index: gstbuffer.h RCS file: /cvs/gstreamer/gstreamer/gst/gstbuffer.h,v retrieving revision 1.106 retrieving revision 1.107 diff -u -d -r1.106 -r1.107 --- gstbuffer.h 7 Mar 2006 15:08:57 -0000 1.106 +++ gstbuffer.h 15 Mar 2006 16:29:02 -0000 1.107 @@ -314,7 +314,7 @@ * Tests if you can safely write data into a buffer's data array or validly * modify the caps and timestamp metadata. Metadata in a GstBuffer is always * writable, but it is only safe to change it when there is only one owner - * of the buffer - ie, the buffer is 1. + * of the buffer - ie, the refcount is 1. */ #define gst_buffer_is_writable(buf) gst_mini_object_is_writable (GST_MINI_OBJECT (buf)) /** Index: gstpad.c RCS file: /cvs/gstreamer/gstreamer/gst/gstpad.c,v retrieving revision 1.498 retrieving revision 1.499 diff -u -d -r1.498 -r1.499 --- gstpad.c 28 Feb 2006 10:52:02 -0000 1.498 +++ gstpad.c 15 Mar 2006 16:29:02 -0000 1.499 @@ -109,6 +109,7 @@ static GstCaps *gst_pad_get_caps_unlocked (GstPad * pad); static void gst_pad_set_pad_template (GstPad * pad, GstPadTemplate * templ); static gboolean gst_pad_activate_default (GstPad * pad); +static gboolean gst_pad_acceptcaps_default (GstPad * pad, GstCaps * caps); #ifndef GST_DISABLE_LOADSAVE static xmlNodePtr gst_pad_save_thyself (GstObject * object, xmlNodePtr parent); @@ -340,6 +341,7 @@ pad->querytypefunc = GST_DEBUG_FUNCPTR (gst_pad_get_query_types_default); pad->queryfunc = GST_DEBUG_FUNCPTR (gst_pad_query_default); pad->intlinkfunc = GST_DEBUG_FUNCPTR (gst_pad_get_internal_links_default); + GST_PAD_ACCEPTCAPSFUNC (pad) = GST_DEBUG_FUNCPTR (gst_pad_acceptcaps_default); pad->do_buffer_signals = 0; pad->do_event_signals = 0; @@ -1332,7 +1334,9 @@ * @acceptcaps: the #GstPadAcceptCapsFunction to set. * * Sets the given acceptcaps function for the pad. The acceptcaps function - * will be called to check if the pad can accept the given caps. + * will be called to check if the pad can accept the given caps. Setting the + * acceptcaps function to NULL restores the default behaviour of allowing + * any caps that matches the caps from gst_pad_get_caps. void gst_pad_set_acceptcaps_function (GstPad * pad, @@ -2053,6 +2057,30 @@ } } +/* Default accept caps implementation just checks against + * against the allowed caps for the pad */ +static gboolean +gst_pad_acceptcaps_default (GstPad * pad, GstCaps * caps) +{ + /* get the caps and see if it intersects to something + * not empty */ + GstCaps *intersect; + GstCaps *allowed; + gboolean result = FALSE; + allowed = gst_pad_get_caps (pad); + if (allowed) { + intersect = gst_caps_intersect (allowed, caps); + result = !gst_caps_is_empty (intersect); + gst_caps_unref (allowed); + gst_caps_unref (intersect); + } + return result; +} * gst_pad_accept_caps: * @pad: a #GstPad to check @@ -2081,26 +2109,12 @@ GST_DEBUG_PAD_NAME (pad), pad); GST_OBJECT_UNLOCK (pad); - if (acceptfunc) { + if (G_LIKELY (acceptfunc)) { /* we can call the function */ result = acceptfunc (pad, caps); } else { - /* else see get the caps and see if it intersects to something - * not empty */ - GstCaps *intersect; - GstCaps *allowed; - - allowed = gst_pad_get_caps (pad); - if (allowed) { - intersect = gst_caps_intersect (allowed, caps); - result = !gst_caps_is_empty (intersect); - gst_caps_unref (allowed); - gst_caps_unref (intersect); - } else { - result = FALSE; - } + /* Only null if the element explicitly unset it */ + result = gst_pad_acceptcaps_default (pad, caps); return result; @@ -2226,19 +2240,17 @@ static gboolean gst_pad_configure_sink (GstPad * pad, GstCaps * caps) { - GstPadAcceptCapsFunction acceptcaps; GstPadSetCapsFunction setcaps; gboolean res; - acceptcaps = GST_PAD_ACCEPTCAPSFUNC (pad); setcaps = GST_PAD_SETCAPSFUNC (pad); - /* See if pad accepts the caps, by calling acceptcaps, only - * needed if no setcaps function */ - if (setcaps == NULL && acceptcaps != NULL) { - if (!acceptcaps (pad, caps)) + /* See if pad accepts the caps - only needed if + * no setcaps function */ + if (setcaps == NULL) + if (!gst_pad_accept_caps (pad, caps)) goto not_accepted; - } /* set caps on pad if call succeeds */ res = gst_pad_set_caps (pad, caps); /* no need to unref the caps here, set_caps takes a ref and @@ -2257,19 +2269,17 @@ gst_pad_configure_src (GstPad * pad, GstCaps * caps, gboolean dosetcaps) if (dosetcaps) res = gst_pad_set_caps (pad, caps); else @@ -3169,7 +3179,7 @@ /* we got a new datatype on the pad, see if it can handle it */ if (G_UNLIKELY (caps_changed)) { - GST_DEBUG ("caps changed to %" GST_PTR_FORMAT, caps); + GST_DEBUG_OBJECT (pad, "caps changed to %" GST_PTR_FORMAT, caps); if (G_UNLIKELY (!gst_pad_configure_sink (pad, caps))) goto not_negotiated; @@ -3252,6 +3262,8 @@ GstPad *peer; GstFlowReturn ret; + GstCaps *caps; + gboolean caps_changed; g_return_val_if_fail (GST_IS_PAD (pad), GST_FLOW_ERROR); g_return_val_if_fail (GST_PAD_DIRECTION (pad) == GST_PAD_SRC, GST_FLOW_ERROR); @@ -3283,8 +3295,21 @@ if (G_UNLIKELY ((peer = GST_PAD_PEER (pad)) == NULL)) goto not_linked; gst_object_ref (peer); + /* Before pushing the buffer to the peer pad, ensure that caps + * are set on this pad */ + caps = GST_BUFFER_CAPS (buffer); + caps_changed = caps && caps != GST_PAD_CAPS (pad); + /* we got a new datatype from the pad, it had better handle it */ + if (G_UNLIKELY (caps_changed)) { + GST_DEBUG ("caps changed to %" GST_PTR_FORMAT, caps); + if (G_UNLIKELY (!gst_pad_configure_src (pad, caps, TRUE))) + goto not_negotiated; ret = gst_pad_chain (peer, buffer); gst_object_unref (peer); @@ -3313,6 +3338,12 @@ GST_OBJECT_UNLOCK (pad); return GST_FLOW_NOT_LINKED; +not_negotiated: + { + GST_CAT_DEBUG_OBJECT (GST_CAT_SCHEDULING, pad, + "element pushed buffer then refused to accept the caps"); + return GST_FLOW_NOT_NEGOTIATED; |
From: <th...@ke...> - 2006-03-16 10:18:45
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: thaytan Date: Thu Mar 16 2006 10:18:39 UTC Log message: * gst/gstpad.c: (gst_pad_accept_caps), (gst_pad_alloc_buffer_full), (gst_pad_push): Don't pound the cpu to pieces by checking get_caps when accept_caps is called with the same caps as the pad already has. Use GST_DEBUG_OBJECT when outputting caps change information. Modified files: . : ChangeLog gst : gstpad.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.2366&r2=1.2367 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstpad.c.diff?r1=1.499&r2=1.500 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.2366 retrieving revision 1.2367 diff -u -d -r1.2366 -r1.2367 --- ChangeLog 15 Mar 2006 20:17:40 -0000 1.2366 +++ ChangeLog 16 Mar 2006 10:18:27 -0000 1.2367 @@ -1,3 +1,11 @@ +2006-03-16 Jan Schmidt <th...@ma...> + + * gst/gstpad.c: (gst_pad_accept_caps), (gst_pad_alloc_buffer_full), + (gst_pad_push): + Don't pound the cpu to pieces by checking get_caps when accept_caps + is called with the same caps as the pad already has. + Use GST_DEBUG_OBJECT when outputting caps change information. 2006-03-15 Wim Taymans <wi...@fl...> * gst/gstclock.c: (gst_clock_class_init): Index: gstpad.c RCS file: /cvs/gstreamer/gstreamer/gst/gstpad.c,v retrieving revision 1.499 retrieving revision 1.500 diff -u -d -r1.499 -r1.500 --- gstpad.c 15 Mar 2006 16:29:02 -0000 1.499 +++ gstpad.c 16 Mar 2006 10:18:27 -0000 1.500 @@ -2095,6 +2095,7 @@ { gboolean result; GstPadAcceptCapsFunction acceptfunc; + GstCaps *existing = NULL; g_return_val_if_fail (GST_IS_PAD (pad), FALSE); @@ -2104,11 +2105,17 @@ GST_OBJECT_LOCK (pad); acceptfunc = GST_PAD_ACCEPTCAPSFUNC (pad); + if (GST_PAD_CAPS (pad) != NULL) + existing = gst_caps_ref (GST_PAD_CAPS (pad)); GST_CAT_DEBUG (GST_CAT_CAPS, "pad accept caps of %s:%s (%p)", GST_DEBUG_PAD_NAME (pad), pad); GST_OBJECT_UNLOCK (pad); + /* The current caps on a pad are trivially acceptable */ + if (existing && (caps == existing || gst_caps_is_equal (caps, existing))) + goto is_same_caps; if (G_LIKELY (acceptfunc)) { /* we can call the function */ result = acceptfunc (pad, caps); @@ -2117,6 +2124,10 @@ result = gst_pad_acceptcaps_default (pad, caps); } return result; +is_same_caps: + gst_caps_unref (existing); + return TRUE; } /** @@ -2524,7 +2535,7 @@ caps_changed = caps && caps != GST_PAD_CAPS (pad); /* we got a new datatype on the pad, see if it can handle it */ if (G_UNLIKELY (caps_changed)) { - GST_DEBUG ("caps changed to %" GST_PTR_FORMAT, caps); + GST_DEBUG_OBJECT (pad, "caps changed to %" GST_PTR_FORMAT, caps); if (G_UNLIKELY (!gst_pad_configure_src (pad, caps, setcaps))) goto not_negotiated; @@ -3305,7 +3316,7 @@ /* we got a new datatype from the pad, it had better handle it */ if (G_UNLIKELY (!gst_pad_configure_src (pad, caps, TRUE))) |
From: <th...@ke...> - 2006-03-20 16:45:27
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: thaytan Date: Mon Mar 20 2006 16:45:27 UTC Log message: * gst/gstutils.h: Add G_UNLIKELY to our boilerplate to optimise the 'already registered the type' case. (Closes: #335195 for now). In the future, when we depend on GLib 2.10, we could also intern the type name using g_intern_static_string() Modified files: . : ChangeLog gst : gstutils.h Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.2373&r2=1.2374 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstutils.h.diff?r1=1.73&r2=1.74 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.2373 retrieving revision 1.2374 diff -u -d -r1.2373 -r1.2374 --- ChangeLog 20 Mar 2006 10:56:08 -0000 1.2373 +++ ChangeLog 20 Mar 2006 16:45:15 -0000 1.2374 @@ -1,3 +1,11 @@ +2006-03-20 Jan Schmidt <th...@ma...> + + * gst/gstutils.h: + Add G_UNLIKELY to our boilerplate to optimise the 'already registered + the type' case. (Closes: #335195 for now). In the future, when we + depend on GLib 2.10, we could also intern the type name using + g_intern_static_string() 2006-03-20 Wim Taymans <wi...@fl...> * gst/gstbin.c: (gst_bin_handle_message_func), Index: gstutils.h RCS file: /cvs/gstreamer/gstreamer/gst/gstutils.h,v retrieving revision 1.73 retrieving revision 1.74 diff -u -d -r1.73 -r1.74 --- gstutils.h 6 Mar 2006 14:46:31 -0000 1.73 +++ gstutils.h 20 Mar 2006 16:45:15 -0000 1.74 @@ -116,7 +116,7 @@ type_as_function ## _get_type (void) \ { \ static GType object_type = 0; \ - if (object_type == 0) { \ + if (G_UNLIKELY (object_type == 0)) { \ static const GTypeInfo object_info = { \ sizeof (type ## Class), \ type_as_function ## _base_init, \ |
From: <th...@ke...> - 2006-05-04 16:34:33
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: thaytan Date: Thu May 04 2006 16:34:32 UTC Log message: * gst/gstpad.c: (gst_pad_init), (gst_pad_configure_sink), (gst_pad_configure_src), (gst_pad_push): Restore acceptcaps checking behaviour now that good plugins have been released. Modified files: . : ChangeLog gst : gstpad.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.2470&r2=1.2471 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstpad.c.diff?r1=1.510&r2=1.511 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.2470 retrieving revision 1.2471 diff -u -d -r1.2470 -r1.2471 --- ChangeLog 4 May 2006 15:20:14 -0000 1.2470 +++ ChangeLog 4 May 2006 16:34:20 -0000 1.2471 @@ -1,3 +1,10 @@ +2006-05-04 Jan Schmidt <th...@ma...> + + * gst/gstpad.c: (gst_pad_init), (gst_pad_configure_sink), + (gst_pad_configure_src), (gst_pad_push): + Restore acceptcaps checking behaviour now that good plugins have + been released. 2006-05-04 Tim-Philipp Müller <tim at centricular dot net> Patch by: James Andrewartha <trs80 at tartarus uwa edu au> Index: gstpad.c RCS file: /cvs/gstreamer/gstreamer/gst/gstpad.c,v retrieving revision 1.510 retrieving revision 1.511 diff -u -d -r1.510 -r1.511 --- gstpad.c 28 Apr 2006 13:44:20 -0000 1.510 +++ gstpad.c 4 May 2006 16:34:20 -0000 1.511 @@ -341,9 +341,7 @@ pad->querytypefunc = GST_DEBUG_FUNCPTR (gst_pad_get_query_types_default); pad->queryfunc = GST_DEBUG_FUNCPTR (gst_pad_query_default); pad->intlinkfunc = GST_DEBUG_FUNCPTR (gst_pad_get_internal_links_default); -#if 0 GST_PAD_ACCEPTCAPSFUNC (pad) = GST_DEBUG_FUNCPTR (gst_pad_acceptcaps_default); -#endif pad->do_buffer_signals = 0; pad->do_event_signals = 0; @@ -1337,9 +1335,7 @@ * @acceptcaps: the #GstPadAcceptCapsFunction to set. * * Sets the given acceptcaps function for the pad. The acceptcaps function - * will be called to check if the pad can accept the given caps. - */ -/* Setting the + * will be called to check if the pad can accept the given caps. Setting the * acceptcaps function to NULL restores the default behaviour of allowing * any caps that matches the caps from gst_pad_get_caps. */ @@ -2266,17 +2262,15 @@ static gboolean gst_pad_configure_sink (GstPad * pad, GstCaps * caps) { - GstPadAcceptCapsFunction acceptcaps; GstPadSetCapsFunction setcaps; gboolean res; - acceptcaps = GST_PAD_ACCEPTCAPSFUNC (pad); setcaps = GST_PAD_SETCAPSFUNC (pad); /* See if pad accepts the caps - only needed if * no setcaps function */ - if (setcaps == NULL && acceptcaps != NULL) - if (!acceptcaps (pad, caps)) + if (setcaps == NULL) + if (!gst_pad_accept_caps (pad, caps)) goto not_accepted; /* set caps on pad if call succeeds */ @@ -2297,17 +2291,15 @@ gst_pad_configure_src (GstPad * pad, GstCaps * caps, gboolean dosetcaps) if (dosetcaps) @@ -3296,10 +3288,8 @@ GstPad *peer; GstFlowReturn ret; GstCaps *caps; gboolean caps_changed; g_return_val_if_fail (GST_IS_PAD (pad), GST_FLOW_ERROR); g_return_val_if_fail (GST_PAD_DIRECTION (pad) == GST_PAD_SRC, GST_FLOW_ERROR); @@ -3332,25 +3322,19 @@ goto not_linked; gst_object_ref (peer); - /* FIXME, disabled for 0.10.5 release because it caused to much - * regressions */ /* Before pushing the buffer to the peer pad, ensure that caps * are set on this pad */ caps = GST_BUFFER_CAPS (buffer); caps_changed = caps && caps != GST_PAD_CAPS (pad); GST_OBJECT_UNLOCK (pad); /* we got a new datatype from the pad, it had better handle it */ if (G_UNLIKELY (caps_changed)) { GST_DEBUG_OBJECT (pad, "caps changed to %" GST_PTR_FORMAT, caps); if (G_UNLIKELY (!gst_pad_configure_src (pad, caps, TRUE))) goto not_negotiated; } ret = gst_pad_chain (peer, buffer); @@ -3380,7 +3364,6 @@ GST_OBJECT_UNLOCK (pad); return GST_FLOW_NOT_LINKED; not_negotiated: { gst_buffer_unref (buffer); @@ -3389,7 +3372,6 @@ "element pushed buffer then refused to accept the caps"); return GST_FLOW_NOT_NEGOTIATED; } /** |
From: <th...@ke...> - 2006-05-17 14:01:48
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: thaytan Date: Wed May 17 2006 14:01:45 UTC Log message: * gst/gstregistryxml.c: (read_string), (load_pad_template), (load_feature), (load_plugin): Allow empty strings for some of the plugin fields so we don't drop valid plugin entries that were written out correctly. Modified files: . : ChangeLog gst : gstregistryxml.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.2527&r2=1.2528 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstregistryxml.c.diff?r1=1.24&r2=1.25 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.2527 retrieving revision 1.2528 diff -u -d -r1.2527 -r1.2528 --- ChangeLog 17 May 2006 13:40:20 -0000 1.2527 +++ ChangeLog 17 May 2006 14:01:33 -0000 1.2528 @@ -1,16 +1,25 @@ +2006-05-17 Jan Schmidt <th...@ma...> + + * gst/gstregistryxml.c: (read_string), (load_pad_template), + (load_feature), (load_plugin): + Allow empty strings for some of the plugin fields so we don't + drop valid plugin entries that were written out correctly. 2006-05-17 Sebastien Moutte <seb...@mo...> * gst/gstregistryxml.c: (gst_registry_xml_write_cache): Use g_remove and g_rename instead of remove and rename that don't handle utf8 characters. rename was failing for users who had specific - characters in their name then the registry was built at each gstreamer init. + characters in their name then the registry was built at each + gstreamer init. * win32/vs6/gst_inspect.dsp: * win32/vs6/gst_launch.dsp: * win32/vs6/libgstbase.dsp: * win32/vs6/libgstcoreelements.dsp: * win32/vs6/libgstreamer.dsp: - Use a debug version of libxml2 (libxml2D.lib,libxml2D.dll) for DEBUG build - of libgstreamer and clean unused libraries in projects link settings. + Use a debug version of libxml2 (libxml2D.lib,libxml2D.dll) for DEBUG + build of libgstreamer and clean unused libraries in projects link + settings. 2006-05-17 Edward Hervey <ed...@fl...> Index: gstregistryxml.c RCS file: /cvs/gstreamer/gstreamer/gst/gstregistryxml.c,v retrieving revision 1.24 retrieving revision 1.25 diff -u -d -r1.24 -r1.25 --- gstregistryxml.c 17 May 2006 13:40:20 -0000 1.24 +++ gstregistryxml.c 17 May 2006 14:01:33 -0000 1.25 @@ -107,14 +107,21 @@ /* read a string and copy it into the given location */ static gboolean -read_string (xmlTextReaderPtr reader, gchar ** write_to) +read_string (xmlTextReaderPtr reader, gchar ** write_to, gboolean allow_blank) { int depth = xmlTextReaderDepth (reader); gboolean found = FALSE; while (xmlTextReaderRead (reader) == 1) { - if (xmlTextReaderDepth (reader) == depth) + if (xmlTextReaderDepth (reader) == depth) { + if (allow_blank && !found && + xmlTextReaderNodeType (reader) == XML_READER_TYPE_END_ELEMENT) { + /* Allow blank strings */ + *write_to = g_strdup (""); + found = TRUE; + } return found; + } if (xmlTextReaderNodeType (reader) == XML_READER_TYPE_TEXT) { if (found) return FALSE; @@ -213,13 +220,13 @@ const gchar *tag = (gchar *) xmlTextReaderConstName (reader); if (g_str_equal (tag, "nametemplate")) { - read_string (reader, &name); + read_string (reader, &name, FALSE); } else if (g_str_equal (tag, "direction")) { read_enum (reader, GST_TYPE_PAD_DIRECTION, &direction); } else if (g_str_equal (tag, "presence")) { read_enum (reader, GST_TYPE_PAD_PRESENCE, &presence); } else if (!strncmp (tag, "caps", 4)) { - read_string (reader, &caps_str); + read_string (reader, &caps_str, FALSE); } } } @@ -276,7 +283,7 @@ if (g_str_equal (tag, "name")) - read_string (reader, &feature->name); + read_string (reader, &feature->name, FALSE); if (g_str_equal (tag, "rank")) read_uint (reader, &feature->rank); if (GST_IS_ELEMENT_FACTORY (feature)) { @@ -285,19 +292,19 @@ if (g_str_equal (tag, "longname")) { int ret; - ret = read_string (reader, &factory->details.longname); + ret = read_string (reader, &factory->details.longname, TRUE); GST_DEBUG ("longname ret=%d, name=%s", ret, factory->details.longname); } else if (g_str_equal (tag, "class")) { - read_string (reader, &factory->details.klass); + read_string (reader, &factory->details.klass, TRUE); } else if (g_str_equal (tag, "description")) { - read_string (reader, &factory->details.description); + read_string (reader, &factory->details.description, TRUE); } else if (g_str_equal (tag, "author")) { - read_string (reader, &factory->details.author); + read_string (reader, &factory->details.author, TRUE); } else if (g_str_equal (tag, "uri_type")) { gchar *s = NULL; - if (read_string (reader, &s)) { + if (read_string (reader, &s, FALSE)) { if (g_ascii_strncasecmp (s, "sink", 4) == 0) { factory->uri_type = GST_URI_SINK; } else if (g_ascii_strncasecmp (s, "source", 5) == 0) { @@ -308,12 +315,12 @@ } else if (g_str_equal (tag, "uri_protocol")) { - if (read_string (reader, &s)) + if (read_string (reader, &s, FALSE)) add_to_char_array (&factory->uri_protocols, s); } else if (g_str_equal (tag, "interface")) { __gst_element_factory_add_interface (factory, s); /* add_interface strdup's s */ g_free (s); @@ -334,12 +341,12 @@ if (g_str_equal (tag, "extension")) { + if (read_string (reader, &s, TRUE)) add_to_char_array (&factory->extensions, s); } else if (g_str_equal (tag, "caps")) { factory->caps = gst_caps_from_string (s); } @@ -348,7 +355,7 @@ GstIndexFactory *factory = GST_INDEX_FACTORY (feature); if (g_str_equal (tag, "longdesc")) - read_string (reader, &factory->longdesc); + read_string (reader, &factory->longdesc, TRUE); @@ -381,44 +388,56 @@ if (g_str_equal (tag, "name")) { int ret; - ret = read_string (reader, &plugin->desc.name); + ret = read_string (reader, &plugin->desc.name, FALSE); GST_DEBUG ("name ret=%d, name=%s", ret, plugin->desc.name); if (!ret) break; } else if (g_str_equal (tag, "description")) { - if (!read_string (reader, &plugin->desc.description)) + if (!read_string (reader, &plugin->desc.description, TRUE)) { + GST_DEBUG ("description field was invalid in registry"); + } GST_DEBUG ("description %s", plugin->desc.description); } else if (g_str_equal (tag, "filename")) { - if (!read_string (reader, &plugin->filename)) + if (!read_string (reader, &plugin->filename, FALSE)) { + GST_DEBUG ("filename field was invalid in registry"); GST_DEBUG ("filename %s", plugin->filename); plugin->basename = g_path_get_basename (plugin->filename); } else if (g_str_equal (tag, "version")) { - if (!read_string (reader, &plugin->desc.version)) + if (!read_string (reader, &plugin->desc.version, TRUE)) { + GST_DEBUG ("version field was invalid in registry"); GST_DEBUG ("version %s", plugin->desc.version); } else if (g_str_equal (tag, "license")) { - if (!read_string (reader, &plugin->desc.license)) + if (!read_string (reader, &plugin->desc.license, TRUE)) { + GST_DEBUG ("license field was invalid in registry"); GST_DEBUG ("license %s", plugin->desc.license); } else if (g_str_equal (tag, "source")) { - if (!read_string (reader, &plugin->desc.source)) + if (!read_string (reader, &plugin->desc.source, TRUE)) { + GST_DEBUG ("source field was invalid in registry"); GST_DEBUG ("source %s", plugin->desc.source); } else if (g_str_equal (tag, "package")) { - if (!read_string (reader, &plugin->desc.package)) + if (!read_string (reader, &plugin->desc.package, TRUE)) { + GST_DEBUG ("package field was invalid in registry"); GST_DEBUG ("package %s", plugin->desc.package); } else if (g_str_equal (tag, "origin")) { - if (!read_string (reader, &plugin->desc.origin)) { + if (!read_string (reader, &plugin->desc.origin, TRUE)) { GST_DEBUG ("failed to read origin"); } } else if (g_str_equal (tag, "m32p")) { char *s; - if (!read_string (reader, &s)) { + if (!read_string (reader, &s, FALSE)) { GST_DEBUG ("failed to read mtime"); |
From: <th...@ke...> - 2006-05-26 09:19:38
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: thaytan Date: Fri May 26 2006 09:19:36 UTC Log message: * gst/gstvalue.c: (gst_value_deserialize_fraction): Handle NULL input and output pointers silently as a failed conversion, rather than g_warnings. Modified files: . : ChangeLog gst : gstvalue.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.2544&r2=1.2545 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstvalue.c.diff?r1=1.117&r2=1.118 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.2544 retrieving revision 1.2545 diff -u -d -r1.2544 -r1.2545 --- ChangeLog 25 May 2006 15:52:19 -0000 1.2544 +++ ChangeLog 26 May 2006 09:19:24 -0000 1.2545 @@ -1,3 +1,9 @@ +2006-05-26 Jan Schmidt <th...@ma...> + + * gst/gstvalue.c: (gst_value_deserialize_fraction): + Handle NULL input and output pointers silently as a failed conversion, + rather than g_warnings. 2006-05-25 Wim Taymans <wi...@fl...> * libs/gst/net/gstnetclientclock.c: (gst_net_client_clock_start): Index: gstvalue.c RCS file: /cvs/gstreamer/gstreamer/gst/gstvalue.c,v retrieving revision 1.117 retrieving revision 1.118 diff -u -d -r1.117 -r1.118 --- gstvalue.c 10 May 2006 15:38:53 -0000 1.117 +++ gstvalue.c 26 May 2006 09:19:24 -0000 1.118 @@ -3389,11 +3389,17 @@ { gint num, den; - if (s && sscanf (s, "%d/%d", &num, &den) == 2) { + if (G_UNLIKELY (s == NULL)) + return FALSE; + if (G_UNLIKELY (dest == NULL || !GST_VALUE_HOLDS_FRACTION (dest))) + if (sscanf (s, "%d/%d", &num, &den) == 2) { gst_value_set_fraction (dest, num, den); return TRUE; } - if (s && sscanf (s, "%d", &num) == 1) { + if (sscanf (s, "%d", &num) == 1) { gst_value_set_fraction (dest, num, 1); |