gstreamer/docs/random
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
..
company docs/random/company/time: Add some docs about clocking and time 2004-01-28 22:02:22 +00:00
ds random checkin 2004-02-20 02:32:21 +00:00
matth Merged from INCSCHED on 200505251!!! 2001-05-25 21:00:07 +00:00
old this is the real old changelog 2003-12-21 19:11:33 +00:00
omega Added status of the documents 2002-08-02 11:23:05 +00:00
richardb Test commit: if this works, the CVS is working again. 2002-02-14 17:55:51 +00:00
testing Manual updates. fixes to gstxml.c gst_xml_get_element was broken 2001-01-08 22:08:40 +00:00
thaytan A few ideas looking for feedback 2003-04-28 22:09:38 +00:00
thomasvs faq updates metadata/mediainfo 2002-11-29 13:56:23 +00:00
uraeus head -5 ChangeLog 2004-01-15 23:48:03 +00:00
wingo gst/gstelement.c (gst_element_dispose): Protect against multiple invocations. 2004-02-25 13:16:12 +00:00
wtay Get rid of NEW_MEDIA event, EOS is supposed to handle that 2003-06-07 00:15:18 +00:00
.gitignore Added CVS ignore, and two documents.. 2001-02-06 20:06:22 +00:00
arch Added status of the documents 2002-08-02 11:23:05 +00:00
autoplug1 Added status of the documents 2002-08-02 11:23:05 +00:00
autoplug2 Added an explanation of the innner workings of the current autoplugger. 2001-04-30 23:20:42 +00:00
buffers Added status of the documents 2002-08-02 11:23:05 +00:00
caps it's the little fixes that do us in 2002-10-19 09:16:45 +00:00
caps.dia Corrected the associations on the UML diagrams 2001-02-11 22:22:47 +00:00
caps2 minor wording change 2004-01-02 06:57:32 +00:00
caps_grammar Merge CAPS branch 2003-12-22 01:39:35 +00:00
classes.dia More updates. 2001-10-18 22:31:26 +00:00
coroutines initial checkin 2000-01-30 10:44:33 +00:00
design initial checkin 2000-01-30 10:44:33 +00:00
dynpads Added status of the documents 2002-08-02 11:23:05 +00:00
eos Added status of the documents 2002-08-02 11:23:05 +00:00
error suffix error with period 2004-02-02 17:29:30 +00:00
events Added status of the documents 2002-08-02 11:23:05 +00:00
example Added status of the documents 2002-08-02 11:23:05 +00:00
factoryinfo initial checkin 2000-01-30 10:44:33 +00:00
gboolean initial checkin 2000-01-30 10:44:33 +00:00
hierarchy Added status of the documents 2002-08-02 11:23:05 +00:00
interfaces New typefind system: bytestream is now part of the core all plugins have been modified to use this new typefind syste... 2003-10-01 13:11:45 +00:00
intro Added status of the documents 2002-08-02 11:23:05 +00:00
metadata Added status of the documents 2002-08-02 11:23:05 +00:00
mimetypes docs/random/mimetypes: update raw int/float info 2004-01-31 11:17:43 +00:00
mutability initial checkin 2000-01-30 10:44:33 +00:00
negotiation add _remove/_intersect tip 2004-01-13 09:40:28 +00:00
NOTES-0.1.1 Added the current notes for the 0.1.1 release 2001-02-22 23:19:28 +00:00
NOTES-0.2.0 Some minor docs updates. 2001-06-06 18:33:18 +00:00
padarch initial checkin 2000-01-30 10:44:33 +00:00
plugins anal retentiveness creeping up in my old days 2002-09-09 09:31:26 +00:00
plugins.dia Added .dia UML of GstCaps 2001-02-11 18:29:55 +00:00
queue Added a deadlock case for the queue 2001-01-07 02:30:50 +00:00
release various fixes 2004-02-12 16:31:59 +00:00
rtp Added specification document of the RTP client subsystem. 2003-09-08 17:59:17 +00:00
sequence initial checkin 2000-01-30 10:44:33 +00:00
sources WARNING: Don't grab this updated unless you're really, REALLY sure. 2000-12-16 10:18:09 +00:00
state-transitions initial checkin 2000-01-30 10:44:33 +00:00
states Added status of the documents 2002-08-02 11:23:05 +00:00
states.new Added status of the documents 2002-08-02 11:23:05 +00:00
states.old Added status of the documents 2002-08-02 11:23:05 +00:00
TODO-post-0.1.0 Updated the TODO list... 2001-01-13 14:45:49 +00:00
typefind Add doc on how typefind works and some other random thoughts 2003-10-02 19:12:54 +00:00
types initial checkin 2000-01-30 10:44:33 +00:00
types2 Added status of the documents 2002-08-02 11:23:05 +00:00
types3 Added status of the documents 2002-08-02 11:23:05 +00:00
usecases This file will contain several use cases to reason through 2000-12-26 20:24:47 +00:00
vis-transform initial checkin 2000-01-30 10:44:33 +00:00
walkthrough Added status of the documents 2002-08-02 11:23:05 +00:00