gstreamer/gst
Andy Wingo 3f5a8814d5 gst/gstelement.c (gst_element_dispose): Protect against multiple invocations.
Original commit message from CVS:
2004-02-24  Andy Wingo  <wingo@pobox.com>

* gst/gstelement.c (gst_element_dispose): Protect against multiple
invocations.

* gst/schedulers/gstoptimalscheduler.c
I added a mess of prototypes at the top of the file by way of
documentation. Some of the operations on chains and groups were
re-organized.

(create_group): Added a type argument so if the group is enabled,
the setup_group_scheduler knows what to do.
(group_elements): Added a type argument here, too, to be passed on
to create_group.
(group_element_set_enabled): If an unlinked PLAYING element is
added to a bin, we have to create a new group to hold the element,
and this function will be called before the group is added to the
chain. Thus we have a valid case for group->chain==NULL. Instead
of calling chain_group_set_enabled, just set the flag on the group
(the chain's status will be set when the group is added to it).
(gst_opt_scheduler_state_transition, chain_group_set_enabled):
Setup the group scheduler when the group is enabled, not
specifically when an element goes PAUSED->PLAYING. This means
PLAYING elements can be added, linked, and scheduled into a
PLAYING pipeline, as was intended.
(add_to_group): Don't ref the group twice. I don't know when this
double-ref got in here. Removing it has the potential to cause
segfaults if other parts of the scheduler are buggy. If you find
that the scheduler is segfaulting for you, put in an extra ref
here and see if that hacks over the underlying issue. Of course,
then find out what code is unreffing a group it doesn't own...
(create_group): Make the extra refcount floating, and remove it
after adding the element. This means that...
(unref_group): Destroy when the refcount reaches 0, not 1, like
every other refcounted object in the known universe.
(remove_from_group): When a group becomes empty, set it to be not
active, and remove it from its chain. Don't unref it again,
there's no floating reference any more.
(destroy_group): We have to remove the group from the chain in
remove_from_group (rather than here) to break refcounting cycles
(the chain always has a ref on the group). So assert that
group->chain==NULL.
(ref_group_by_count): Removed, it was commented out anyway.
(merge_chains): Use the remove_from_chain and add_to_chain
primitives to do the reparenting, instead of rolling our own
implementation.
(add_to_chain): The first non-disabled group in the chain's group
list will be the entry point for the chain. Because buffers can
accumulate in loop elements' peer bufpens, we preferentially
schedule loop groups before get groups to avoid unnecessary
execution of get-based groups when the bufpens are already full.
(gst_opt_scheduler_schedule_run_queue): Debug fixes.
(get_group_schedule_function): Ditto.
(loop_group_schedule_function): Ditto.
(gst_opt_scheduler_loop_wrapper): Ditto.
(gst_opt_scheduler_iterate): Ditto.

I understand the opt scheduler now, yippee!

* gst/gstpad.c: All throughout, added FIXMEs to look at for 0.9.
(gst_pad_get_name, gst_pad_set_chain_function)
(gst_pad_set_get_function, gst_pad_set_event_function)
(gst_pad_set_event_mask_function, gst_pad_get_event_masks)
(gst_pad_get_event_masks_default, gst_pad_set_convert_function)
(gst_pad_set_query_function, gst_pad_get_query_types)
(gst_pad_get_query_types_default)
(gst_pad_set_internal_link_function)
(gst_pad_set_formats_function, gst_pad_set_link_function)
(gst_pad_set_fixate_function, gst_pad_set_getcaps_function)
(gst_pad_set_bufferalloc_function, gst_pad_unlink)
(gst_pad_renegotiate, gst_pad_set_parent, gst_pad_get_parent)
(gst_pad_add_ghost_pad, gst_pad_proxy_getcaps)
(gst_pad_proxy_pad_link, gst_pad_proxy_fixate)
(gst_pad_get_pad_template_caps, gst_pad_check_compatibility)
(gst_pad_get_peer, gst_pad_get_allowed_caps)
(gst_pad_alloc_buffer, gst_pad_push, gst_pad_pull)
(gst_pad_selectv, gst_pad_select, gst_pad_template_get_caps)
(gst_pad_event_default_dispatch, gst_pad_event_default)
(gst_pad_dispatcher, gst_pad_send_event, gst_pad_convert_default)
(gst_pad_convert, gst_pad_query_default, gst_pad_query)
(gst_pad_get_formats_default, gst_pad_get_formats): Better
argument checks, and some doc fixes.

(gst_pad_custom_new_from_template): Um, does anyone
use these functions? Actually make a custom pad instead of a
normal one.
(gst_pad_try_set_caps): Transpose some checks.
(gst_pad_try_set_caps_nonfixed): Same, and use a macro to check if
the pad is in negotiation.
(gst_pad_try_relink_filtered): Use pad_link_prepare.

* gst/gstelement.c: Remove prototypes also defined in gstclock.h.

* gst/gstelement.h:
* gst/gstclock.h: Un-deprecate the old clocking API, as discussed
on the list.
2004-02-25 13:16:12 +00:00
..
autoplug throw an error for mime types spider can't handle 2004-02-17 17:59:32 +00:00
elements fix errors 2004-02-22 14:07:55 +00:00
indexers fixes for --disable-loadsave --disable-registry 2004-02-12 16:49:16 +00:00
parse gst/: Debugging tweaks. 2004-02-20 13:18:32 +00:00
registries gst/: Debugging tweaks. 2004-02-20 13:18:32 +00:00
schedulers gst/gstelement.c (gst_element_dispose): Protect against multiple invocations. 2004-02-25 13:16:12 +00:00
.gitignore update - this is huge, because it includes *.bb, *.bbg and *.da files which are generated for gcov. 2004-01-12 16:53:23 +00:00
cothreads.c gst/cothreads.c: Add another fallback if MAP_ANONYMOUS is missing (#132991) 2004-01-30 21:26:15 +00:00
cothreads.h Remove GCC-ism used to find current stack pointer, and use this opportunity to clean up the code slightly. Based on ... 2003-01-21 22:01:37 +00:00
gettext.h adding i18n tested with nl, seems to work fine 2004-01-13 11:30:00 +00:00
gst-i18n-app.h add gstelement.c for translation remove config.h from i18n headers 2004-01-19 15:49:52 +00:00
gst-i18n-lib.h add gstelement.c for translation remove config.h from i18n headers 2004-01-19 15:49:52 +00:00
gst.c fix name of core elements 2004-02-10 10:30:24 +00:00
gst.h add GstPoptOption to work around evil poptOption struct def make sure popt is i18n'd expand gnome example 2004-02-03 14:59:32 +00:00
gst_private.h changing error signal add error codes and domains 2004-01-18 21:36:20 +00:00
gstarch.h Fix powerpc asm 2003-12-18 09:41:49 +00:00
gstatomic.c - copy kernel headers (waiting for libatomic..) 2002-12-31 03:21:08 +00:00
gstatomic.h a bunch of gtk-doc fixes 2003-05-18 15:03:34 +00:00
gstatomic_impl.h patch for s390 from fedora test 2 rpms 2004-02-16 12:28:36 +00:00
gstbin.c adding error to gstbin.c 2004-02-24 12:41:19 +00:00
gstbin.h gst/gstpad.c (_gst_real_pad_fixate_accumulator): s/pointer/boxed/. 2004-02-05 13:51:26 +00:00
gstbuffer.c gst/: Debugging tweaks. 2004-02-20 13:18:32 +00:00
gstbuffer.h gst/elements/gstfilesrc.*: don't ref the filesrc when creating mmaped buffers. Don't keep a list of not-yet-destroyed... 2004-02-03 00:27:09 +00:00
gstcaps.c gst/: Debugging tweaks. 2004-02-20 13:18:32 +00:00
gstcaps.h Reverted changes made to fix unsigned-signed warnings after hearing comments on IRC. Thans to teus 2004-02-07 15:37:21 +00:00
gstclock.c gst/gstclock.c: fixes structure initialisation of clock (bug #134128) 2004-02-11 19:02:00 +00:00
gstclock.h gst/gstelement.c (gst_element_dispose): Protect against multiple invocations. 2004-02-25 13:16:12 +00:00
gstcompat.h Add G_BEGIN_DECLS/G_END_DECLS to exported headers 2003-07-18 20:51:02 +00:00
gstconfig.h.in configure.ac: Add detection for HAVE_PRINTF_EXTENSION and 2004-01-29 01:20:23 +00:00
gstcpu.c GST_DEBUG reorganization containing loads of stuff: 2003-06-29 14:05:49 +00:00
gstcpu.h Add G_BEGIN_DECLS/G_END_DECLS to exported headers 2003-07-18 20:51:02 +00:00
gstcpuid_i386.s Added CPU detection. 2000-09-12 18:13:48 +00:00
gstdata.c gst/: Debugging tweaks. 2004-02-20 13:18:32 +00:00
gstdata.h Change GST_.*_PADDING to _gst_padding[GST_PADDING]; 2003-12-09 02:39:31 +00:00
gstdata_private.h - copy kernel headers (waiting for libatomic..) 2002-12-31 03:21:08 +00:00
gstelement.c gst/gstelement.c (gst_element_dispose): Protect against multiple invocations. 2004-02-25 13:16:12 +00:00
gstelement.h gst/gstelement.c (gst_element_dispose): Protect against multiple invocations. 2004-02-25 13:16:12 +00:00
gstelementfactory.c gst/: Debugging tweaks. 2004-02-20 13:18:32 +00:00
gsterror.c add error symbol start translating gst-inspect 2004-02-03 11:23:59 +00:00
gsterror.h add error symbol start translating gst-inspect 2004-02-03 11:23:59 +00:00
gstevent.c gst/gstevent.c: copy navigation event correctly. Check freeing tag lists. 2004-02-20 00:38:24 +00:00
gstevent.h Trying to fix the mess that I made with the two previous commits. 2004-02-07 15:51:39 +00:00
gstfilter.c - Added infrastructure to run a filter against plugins, registries and registrypools. This makes it possible to creat... 2003-04-14 18:53:03 +00:00
gstfilter.h Add G_BEGIN_DECLS/G_END_DECLS to exported headers 2003-07-18 20:51:02 +00:00
gstformat.c - moved functionality of GST_FORMAT_UNITS to GST_FORMAT_DEFAULT, the old _DEFAULT functionality was ambigous; now the... 2003-05-24 10:30:37 +00:00
gstformat.h remove trailing comma for gtk-doc 2003-12-24 12:55:00 +00:00
gstindex.c gst/elements/gstmultifilesrc.c: Use G_TYPE_STRING in signal prototype instead of G_TYPE_POINTER. 2004-02-18 05:26:59 +00:00
gstindex.h gst/elements/gstmultifilesrc.c: Use G_TYPE_STRING in signal prototype instead of G_TYPE_POINTER. 2004-02-18 05:26:59 +00:00
gstinfo.c gst/: Debugging tweaks. 2004-02-20 13:18:32 +00:00
gstinfo.h gst/gstinfo.h: Copy G_STRFUNC implementation from glib-2.4 and use it for GST_FUNCTION. (bug #134750) 2004-02-19 20:08:45 +00:00
gstinterface.c make sure all API gets built sync .c with .h 2004-01-30 19:06:13 +00:00
gstinterface.h Change GST_.*_PADDING to _gst_padding[GST_PADDING]; 2003-12-09 02:39:31 +00:00
gstlog.h Add glib.h for G_BEGIN_DECLS 2003-07-18 21:35:40 +00:00
gstmacros.h Add G_BEGIN_DECLS/G_END_DECLS to exported headers 2003-07-18 20:51:02 +00:00
gstmarshal.list gst/elements/gstmultifilesrc.c: Use G_TYPE_STRING in signal prototype instead of G_TYPE_POINTER. 2004-02-18 05:26:59 +00:00
gstmemchunk.c Trying to fix the mess that I made with the two previous commits. 2004-02-07 15:51:39 +00:00
gstmemchunk.h - First pass at cleaning up the atomic mess 2002-12-29 19:19:45 +00:00
gstobject.c docs/gst/tmpl/gstcaps.sgml: Fix stuff that mentions GstProps 2004-02-11 20:16:33 +00:00
gstobject.h gst/: get rid of gstmarshal.h dependency. It's not needed. 2004-02-03 03:31:26 +00:00
gstpad.c gst/gstelement.c (gst_element_dispose): Protect against multiple invocations. 2004-02-25 13:16:12 +00:00
gstpad.h gst/gstpad.c: Reverting my change according to what we agreed with david. 2004-02-17 22:55:26 +00:00
gstparse.c GST_DEBUG reorganization containing loads of stuff: 2003-06-29 14:05:49 +00:00
gstparse.h add extra error for empty pipeline 2003-04-27 23:56:31 +00:00
gstpipeline.c parts of the patch submitted in bug #113913 2004-01-30 20:48:13 +00:00
gstpipeline.h Change GST_.*_PADDING to _gst_padding[GST_PADDING]; 2003-12-09 02:39:31 +00:00
gstplugin.c gst/: Debugging tweaks. 2004-02-20 13:18:32 +00:00
gstplugin.h gst/gstelement.h: remove gst_element_factory_get_version. It doesn't exist anymore. 2004-01-26 03:44:14 +00:00
gstpluginfeature.c fix output of typefind add GPL headers fix doc snippet 2004-01-20 14:09:42 +00:00
gstpluginfeature.h Change GST_.*_PADDING to _gst_padding[GST_PADDING]; 2003-12-09 02:39:31 +00:00
gstprobe.c Add code to poison objects being destroyed 2003-08-19 04:10:29 +00:00
gstprobe.h so it's no big thing. 2003-02-27 18:56:30 +00:00
gstquery.c Documentation updates 2003-01-02 18:56:09 +00:00
gstquery.h Change 'const' to 'G_CONST_RETURN' in header files 2003-11-29 06:34:05 +00:00
gstqueue.c gst/gstbin.c: Fix a big bug that was breaking pipelines like sinesrc ! { queue ! osssink } when an error was thrown b... 2004-02-15 19:05:59 +00:00
gstqueue.h increment current, reset padding 2004-02-04 21:35:39 +00:00
gstregistry.c Make the type G_TYPE_POINTER instead of GST_TYPE_PLUGIN. Fixes a crash in gst-register 2003-11-14 15:54:47 +00:00
gstregistry.h Change GST_.*_PADDING to _gst_padding[GST_PADDING]; 2003-12-09 02:39:31 +00:00
gstregistrypool.c fixes for --disable-loadsave --disable-registry 2004-02-12 16:49:16 +00:00
gstregistrypool.h - Added infrastructure to run a filter against plugins, registries and registrypools. This makes it possible to creat... 2003-04-14 18:53:03 +00:00
gstscheduler.c gst/gstclock.*: deprecate old interface and disable functions that aren't in use anymore. 2004-01-14 00:46:48 +00:00
gstscheduler.h Change GST_.*_PADDING to _gst_padding[GST_PADDING]; 2003-12-09 02:39:31 +00:00
gststructure.c gst/elements/gstmultifilesrc.c: Use G_TYPE_STRING in signal prototype instead of G_TYPE_POINTER. 2004-02-18 05:26:59 +00:00
gststructure.h gst/elements/gstmultifilesrc.c: Use G_TYPE_STRING in signal prototype instead of G_TYPE_POINTER. 2004-02-18 05:26:59 +00:00
gstsystemclock.c gst/gstcaps.c: add sanity checks 2003-12-27 13:51:31 +00:00
gstsystemclock.h Change GST_.*_PADDING to _gst_padding[GST_PADDING]; 2003-12-09 02:39:31 +00:00
gsttag.c gst/gsttag.c: Registering 2 new tags, audio-codec and video-codec. 2004-02-22 21:56:00 +00:00
gsttag.h gst/gstpad.c: revert last patch from Andy, it makes gst_pad_can_link_filtered much too noisy 2004-02-22 15:09:20 +00:00
gsttaginterface.c fixing docs errors 2004-02-03 10:47:26 +00:00
gsttaginterface.h Add interface to setting GValues directly. 2003-12-23 04:50:01 +00:00
gsttaglist.c gst/gsttag.c: Registering 2 new tags, audio-codec and video-codec. 2004-02-22 21:56:00 +00:00
gsttaglist.h gst/gstpad.c: revert last patch from Andy, it makes gst_pad_can_link_filtered much too noisy 2004-02-22 15:09:20 +00:00
gsttagsetter.c fixing docs errors 2004-02-03 10:47:26 +00:00
gsttagsetter.h Add interface to setting GValues directly. 2003-12-23 04:50:01 +00:00
gstthread.c gst/gstevent.c: copy navigation event correctly. Check freeing tag lists. 2004-02-20 00:38:24 +00:00
gstthread.h Change GST_.*_PADDING to _gst_padding[GST_PADDING]; 2003-12-09 02:39:31 +00:00
gstthreaddummy.c Add unistd.h (#110671) 2003-05-17 13:10:00 +00:00
gsttrace.c parts of the patch submitted in bug #113913 2004-01-30 20:48:13 +00:00
gsttrace.h Change 'const' to 'G_CONST_RETURN' in header files 2003-11-29 06:34:05 +00:00
gsttrashstack.c And now it's inlined again :) 2003-01-06 23:59:04 +00:00
gsttrashstack.h Add new --enable-fast-stack-trash option, defaults to on. 2003-05-31 09:51:28 +00:00
gsttypefind.c Merge CAPS branch 2003-12-22 01:39:35 +00:00
gsttypefind.h rename gstcaps2.[ch] to gstcaps.[ch] 2003-12-22 01:58:20 +00:00
gsttypes.h Change GST_.*_PADDING to _gst_padding[GST_PADDING]; 2003-12-09 02:39:31 +00:00
gsturi.c Change usage of isblah() to g_ascii_isblah() to be more locale independent. (#133076) 2004-02-02 21:08:52 +00:00
gsturi.h Change GST_.*_PADDING to _gst_padding[GST_PADDING]; 2003-12-09 02:39:31 +00:00
gsturitype.c GST_DEBUG reorganization containing loads of stuff: 2003-06-29 14:05:49 +00:00
gsturitype.h new uritype 2003-02-10 20:33:50 +00:00
gstutils.c docs/gst/tmpl/gstcaps.sgml: Fix stuff that mentions GstProps 2004-02-11 20:16:33 +00:00
gstutils.h gst/gstutils.h: GST_PARENT_CALL and 2004-01-08 04:10:18 +00:00
gstvalue.c gst/gstevent.c: copy navigation event correctly. Check freeing tag lists. 2004-02-20 00:38:24 +00:00
gstvalue.h gst/gstevent.c: copy navigation event correctly. Check freeing tag lists. 2004-02-20 00:38:24 +00:00
gstversion.h.in fix non-gtk-doc comment blocks 2003-12-24 14:39:46 +00:00
gstxml.c gst/: get rid of gstmarshal.h dependency. It's not needed. 2004-02-03 03:31:26 +00:00
gstxml.h Change GST_.*_PADDING to _gst_padding[GST_PADDING]; 2003-12-09 02:39:31 +00:00
Makefile.am changing error signal add error codes and domains 2004-01-18 21:36:20 +00:00
Makefile.am.future Update Makefile.am.future - a replacement for Makefile.am which uses features present in recent versions of automake ... 2001-05-29 12:43:21 +00:00
ROADMAP A bunch more changes to clean up build/make dist issues, as well as a spec file, -config file, .m4, etc. Next step... 2000-01-31 06:46:18 +00:00