Commit graph

259 commits

Author SHA1 Message Date
Wim Taymans
c47dc4d853 First THREADED backport attempt, focusing on adding locks and making sure the API is threadsafe. Needs more work. Mor...
Original commit message from CVS:
First THREADED backport attempt, focusing on adding locks and
making sure the API is threadsafe. Needs more work. More docs
follow this week.
2005-03-07 18:27:42 +00:00
Thomas Vander Stichele
a32a305d1a disable debug build fix
Original commit message from CVS:
disable debug build fix
2005-02-24 23:41:57 +00:00
Thomas Vander Stichele
b02973d212 one more fix
Original commit message from CVS:
one more fix
2005-02-23 15:14:01 +00:00
Thomas Vander Stichele
b9adc22e24 compile with debug disabled
Original commit message from CVS:
compile with debug disabled
2005-02-23 15:06:36 +00:00
Wim Taymans
186d11b516 gst/schedulers/gstoptimalscheduler.c: Remove some FIXMEs after analysing and commenting why they are not issues.
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c: (remove_decoupled),
(schedule_chain), (get_invalid_call), (chain_invalid_call),
(loop_group_schedule_function), (gst_opt_scheduler_iterate):
Remove some FIXMEs after analysing and commenting why they
are not issues.
2005-02-02 16:15:18 +00:00
Wim Taymans
f8114cc178 gst/schedulers/gstoptimalscheduler.c: Added lock to protect scheduler data structures.
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c:
(gst_opt_scheduler_class_init), (gst_opt_scheduler_init),
(gst_opt_scheduler_finalize), (remove_decoupled), (schedule_chain),
(get_invalid_call), (chain_invalid_call),
(get_group_schedule_function), (loop_group_schedule_function),
(gst_opt_scheduler_loop_wrapper), (gst_opt_scheduler_get_wrapper),
(gst_opt_scheduler_state_transition),
(gst_opt_scheduler_add_element),
(gst_opt_scheduler_remove_element), (gst_opt_scheduler_interrupt),
(gst_opt_scheduler_error), (gst_opt_scheduler_pad_link),
(gst_opt_scheduler_pad_unlink), (gst_opt_scheduler_iterate),
(gst_opt_scheduler_show):
Added lock to protect scheduler data structures.
2005-02-02 15:31:06 +00:00
Ronald S. Bultje
34d1219213 gst/schedulers/gstoptimalscheduler.c: Try to work with the threading mess that queue_link is.
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c:
(get_group_schedule_function):
Try to work with the threading mess that queue_link is.
2005-02-01 00:38:05 +00:00
Ronald S. Bultje
a410bdd96f gst/schedulers/faircothreads.c: Fix build without debug enabled.
Original commit message from CVS:
Reviewed by:  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
* gst/schedulers/faircothreads.c:
(gst_fair_scheduler_cothread_queue_show):
Fix build without debug enabled.
2005-01-27 10:00:00 +00:00
Ronald S. Bultje
defab93002 gst/schedulers/gstoptimalscheduler.c: Only unref entry if there is an entry.
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c: (schedule_group):
Only unref entry if there is an entry.
2005-01-18 11:29:12 +00:00
Wim Taymans
c6b82b338b gst/schedulers/gstoptimalscheduler.c: Also ref/unref decoupled elements before iterating the group since they are not...
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c: (add_to_group),
(remove_from_group), (schedule_group), (normalize_group),
(gst_opt_scheduler_iterate):
Also ref/unref decoupled elements before iterating the
group since they are not added to the list of elements.
2005-01-17 16:30:42 +00:00
Wim Taymans
d960f7f99e gst/schedulers/gstoptimalscheduler.c: Fix bug where a flag was not updated on a decoupled entry point because we were...
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c: (add_to_group),
(remove_from_group), (group_elements_set_visited),
(normalize_group), (gst_opt_scheduler_iterate):
Fix bug where a flag was not updated on a decoupled entry point
because we were just checking the group element list and decoupled
elements are not in that list..
2004-12-15 10:34:29 +00:00
Ronald S. Bultje
474d0415aa gst/schedulers/gstoptimalscheduler.c: When we're recursing into a chain run, only run the directly related group, not...
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c:
(gst_opt_scheduler_schedule_run_queue), (schedule_chain),
(gst_opt_scheduler_get_wrapper):
When we're recursing into a chain run, only run the directly
related group, not all queued ones. This will fix a possible
deadlock in chains with more than two groups.
2004-12-09 11:48:28 +00:00
Christian Schaller
4f8aa88b14 fix build after commit of fair :)
Original commit message from CVS:
fix build after commit of fair :)
2004-11-08 18:51:12 +00:00
Martin Soto
727725d959 gst/schedulers/: New cothread based scheduler: Fair scheduler.
Original commit message from CVS:
2004-11-07  Martin Soto  <martinsoto@users.sourceforge.net>

* gst/schedulers/fairscheduler.c:
* gst/schedulers/faircothreads.c:
* gst/schedulers/faircothreads.h:
New cothread based scheduler: Fair scheduler.
* gst/schedulers/gthread-cothreads.h:
Add the standard #if around the whole file.
Defining symbol GTHREAD_COTHREADS_NO_DEFINITIONS will now prevent
compilation of the functions defined in this file. This is
necessary to be able to use this file as a normal header.
* gst/schedulers/Makefile.am: Add compiling support for fair
scheduler.
* docs/gst/Makefile.am (IGNORE_HFILES): Exclude internal fair
scheduler cothreads layer from documentation generation.
2004-11-07 19:31:39 +00:00
Wim Taymans
df7f3e4161 Added testcase for schduler segfault.
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c: (add_to_group),
(remove_from_group), (normalize_group), (group_migrate_connected),
(gst_opt_scheduler_iterate):
* testsuite/schedulers/.cvsignore:
* testsuite/schedulers/Makefile.am:
* testsuite/schedulers/queue_link.c: (main):
Added testcase for schduler segfault.
Fix scheduler segfault when removing a decoupled
entry point as the last element from a group.
2004-11-04 11:03:48 +00:00
Wim Taymans
6d42edd550 gst/: Aplied part of patch #157127: Cleanup of issues reported by sparse.
Original commit message from CVS:
reviewed by: Wim Taymans, Ronald Bultje.

* gst/cothreads.c: (cothread_create):
* gst/gstbin.c: (gst_bin_add_func), (gst_bin_remove_func),
(gst_bin_child_state_change_func):
* gst/gstbuffer.c: (gst_buffer_span):
* gst/gstelement.c: (gst_element_get_index),
(gst_element_get_event_masks), (gst_element_get_query_types),
(gst_element_get_formats):
* gst/gsterror.c: (_gst_core_errors_init),
(_gst_library_errors_init), (_gst_resource_errors_init),
(_gst_stream_errors_init):
* gst/gstobject.c: (gst_object_default_deep_notify):
* gst/gstpad.c: (gst_pad_get_event_masks),
(gst_pad_get_internal_links_default):
* gst/gstplugin.c: (gst_plugin_register_func),
(gst_plugin_get_module):
* gst/gststructure.c: (gst_structure_get_string),
(gst_structure_get_abbrs), (gst_structure_from_abbr),
(gst_structure_to_abbr):
* gst/gstutils.c: (gst_print_element_args):
* gst/schedulers/gstoptimalscheduler.c: (add_to_group),
(setup_group_scheduler), (gst_opt_scheduler_iterate):
Aplied part of patch #157127: Cleanup of issues reported by
sparse.
Also do not try to use cothreads when there is no cothread
context yet.
2004-11-02 15:02:12 +00:00
Wim Taymans
6a110e062f gst/schedulers/gstoptimalscheduler.c: Aplied patch #154061. Running a pipeline in which an element calls GST_ELEMENT_...
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c: (add_to_group),
(gst_opt_scheduler_iterate):
Aplied patch #154061. Running a pipeline in which an element
calls GST_ELEMENT_ERROR in the chain function, the opt
scheduler doesn't unref the chain so it never gets freed.
2004-11-02 13:08:41 +00:00
Wim Taymans
6ff129d07d gst/schedulers/gstoptimalscheduler.c: Some more debug info.
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c: (add_to_group),
(remove_from_group):
Some more debug info.
2004-09-06 14:55:57 +00:00
Benjamin Otte
6e15cb6ce9 add gst_scheduler_register shortcut similar to gst_element_register
Original commit message from CVS:
* docs/gst/gstreamer-sections.txt:
* gst/gstscheduler.c: (gst_scheduler_register):
* gst/gstscheduler.h:
add gst_scheduler_register shortcut similar to gst_element_register
* gst/schedulers/entryscheduler.c: (plugin_init):
* gst/schedulers/gstbasicscheduler.c: (plugin_init):
* gst/schedulers/gstoptimalscheduler.c: (plugin_init):
use it
2004-08-11 09:54:52 +00:00
Thomas Vander Stichele
b31eed4b70 docs/faq/gst-uninstalled: fix PKG_CONFIG_PATH and PYTHONPATH
Original commit message from CVS:
* docs/faq/gst-uninstalled:
fix PKG_CONFIG_PATH and PYTHONPATH
* gst/schedulers/Makefile.am:
cleanup
* libs/gst/bytestream/bytestream.c:
remove newline
* po/LINGUAS:
* po/sq.po:
adding Albanian translation (Laurent Dhima)
* po/cs.po:
updated
2004-08-09 09:20:06 +00:00
Benjamin Otte
f1472b4ed2 gst/schedulers/entryscheduler.c: fix for GST_DISABLE_DEBUG
Original commit message from CVS:
* gst/schedulers/entryscheduler.c:
(gst_entry_scheduler_remove_element):
fix for GST_DISABLE_DEBUG
* tools/gst-launch.c: (print_tag):
fixes for G_DISABLE_ASSERT
2004-08-03 14:29:31 +00:00
Brian Cameron
c0aa2ff498 Correcting some debug messages so that they don't core dump on Solaris by passing in NULL values as strings.
Original commit message from CVS:
Correcting some debug messages so that they don't core dump on Solaris
by passing in NULL values as strings.
2004-07-28 20:12:49 +00:00
Wim Taymans
d5f0f798ac gst/schedulers/gstoptimalscheduler.c: fix 147894-2 and the group_link problem.
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c: (remove_from_group),
(gst_opt_scheduler_pad_link):
fix 147894-2 and the group_link problem.
2004-07-22 09:43:40 +00:00
Benjamin Otte
04ec1a2ad9 gst/schedulers/entryscheduler.c: reset the state when the cothread starts, so we don't get assertion failures on rest...
Original commit message from CVS:
* gst/schedulers/entryscheduler.c:
(gst_entry_scheduler_loop_wrapper),
(gst_entry_scheduler_chain_wrapper),
(gst_entry_scheduler_get_wrapper):
reset the state when the cothread starts, so we don't get assertion
failures on restarting of cothreads
2004-07-21 19:41:52 +00:00
Thomas Vander Stichele
050631f63b fix for #142813 - deadlock in opt
Original commit message from CVS:
fix for #142813 - deadlock in opt
2004-07-20 10:57:38 +00:00
Thomas Vander Stichele
add97dd1ce fix for #147819 (Add some checks in the opt scheduler)
Original commit message from CVS:
fix for #147819 (Add some checks in the opt scheduler)
2004-07-20 10:40:09 +00:00
Thomas Vander Stichele
b515b8a729 fix for #147894 (opt scheduler decoupled elements mismanagement)
Original commit message from CVS:
fix for #147894 (opt scheduler decoupled elements mismanagement)
2004-07-20 09:55:13 +00:00
Wim Taymans
74060a4ff6 gst/schedulers/gstoptimalscheduler.c: Call group_inc_link with the proper src->sink ordering -- break this, and we br...
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c: (gst_opt_scheduler_init),
(create_chain), (destroy_chain), (create_group), (destroy_group),
(add_to_group), (merge_groups), (group_elements), (group_inc_link),
(group_dec_link), (gst_opt_scheduler_pad_link),
(group_inc_links_for_element), (group_migrate_connected):
Call group_inc_link with the proper src->sink ordering --
break this, and we break sort_chain. patch from wingo for bug
147713.
Partially revert patch 1.89. When adding a loop based element to
the scheduler, the links to other groups are automatically followed
and incremented. This should not happen because the bin will call
pad_link explicitly for those connection, resulting in them counted
twice. Results in assertion failure on pipeline cleanup.
2004-07-16 16:02:12 +00:00
Wim Taymans
99c3c397ca gst/schedulers/gstoptimalscheduler.c: Fix stupid warning when an element is to be migrated but is already migrated.
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c: (group_dec_link),
(gst_opt_scheduler_pad_link), (group_migrate_connected):
Fix stupid warning when an element is to be migrated but
is already migrated.
2004-07-14 15:10:09 +00:00
Wim Taymans
d7ec4cb787 gst/schedulers/gstoptimalscheduler.c: Make sure that a single non-loop-based element does not end up in a group. This...
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c: (group_dec_link),
(gst_opt_scheduler_pad_link), (group_migrate_connected):
Make sure that a single non-loop-based element does not
end up in a group. This fixes the testsuite again.
2004-07-14 14:52:49 +00:00
Wim Taymans
b997eae215 gst/schedulers/gstoptimalscheduler.c: move isolated groups to a new chain.
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c: (create_group),
(add_to_group), (merge_groups), (schedule_group),
(gst_opt_scheduler_get_wrapper), (group_elements),
(group_dec_link), (gst_opt_scheduler_pad_link),
(group_migrate_connected), (gst_opt_scheduler_pad_unlink),
(gst_opt_scheduler_iterate):
move isolated groups to a new chain.
Emit a warning instead of segfaulting in some error cases.
Fix a bug where the link count between groups was not calculated
correctly. Fixes #144510.
2004-07-14 14:25:04 +00:00
Thomas Vander Stichele
14e4ff51de set PENDING on bin correctly for special case. fixes testsuite again.
Original commit message from CVS:
set PENDING on bin correctly for special case. fixes testsuite again.
2004-07-12 10:03:04 +00:00
Wim Taymans
19fac086bf gst/schedulers/gstoptimalscheduler.c: Do not try to migrate decoupled elements to a new group since they are not adde...
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c:
(gst_opt_scheduler_pad_link), (group_elements_set_visited),
(element_get_reachables_func), (element_get_reachables),
(debug_element), (rechain_group), (group_migrate_connected),
(gst_opt_scheduler_pad_unlink):
Do not try to migrate decoupled elements to a new group since
they are not added to groups.
2004-07-09 08:25:42 +00:00
Wim Taymans
40a0fb9794 Implemented group splitting and rechaining.
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c:
(chain_recursively_migrate_group), (create_group),
(schedule_group), (gst_opt_scheduler_pad_link),
(group_elements_set_visited), (element_get_reachables_func),
(element_get_reachables), (group_can_reach_group), (debug_element),
(rechain_group), (group_migrate_connected),
(gst_opt_scheduler_pad_unlink):
* testsuite/schedulers/Makefile.am:
Implemented group splitting and rechaining.
Fixes 143777 and 143777-2 in the testsuite.
2004-07-08 15:24:20 +00:00
Thomas Vander Stichele
e7a32237d4 gst/autoplug/gstspideridentity.c: extra debugging
Original commit message from CVS:
* gst/autoplug/gstspideridentity.c: (gst_spider_identity_chain):
extra debugging
* gst/gstevent.h:
* gst/gstinfo.c: (gst_debug_log_default):
print time nicely.  add thread pointer until someone figures out
a completely portable way of getting at thread id's.
* gst/gstpad.c: (gst_pad_set_active), (gst_pad_link_try),
(_invent_event), (gst_pad_pull), (gst_pad_event_default_dispatch),
(gst_pad_call_chain_function):
extra debugging
* gst/schedulers/gstoptimalscheduler.c:
(get_group_schedule_function), (loop_group_schedule_function),
(gst_opt_scheduler_loop_wrapper), (gst_opt_scheduler_get_wrapper),
(pad_clear_queued), (gst_opt_scheduler_iterate):
rename BUFPEN and friends to DATAPEN since that's what they are.
2004-07-08 13:49:14 +00:00
Thomas Vander Stichele
56e7e557ae debugging fixes
Original commit message from CVS:
debugging fixes
2004-07-07 16:50:30 +00:00
Thomas Vander Stichele
ccd846b74a debug fix
Original commit message from CVS:
debug fix
2004-07-07 15:06:26 +00:00
Thomas Vander Stichele
d1e3457acf debug fix
Original commit message from CVS:
debug fix
2004-07-07 15:04:44 +00:00
Thomas Vander Stichele
915be2e2c7 fix SIGBUS on opt, #145338
Original commit message from CVS:
fix SIGBUS on opt, #145338
2004-07-06 11:44:26 +00:00
Stéphane Loeuillet
55cd61de48 - removing some trailing commas in enums to please C90 only compilers (AIX, Forte, ...) ('should' fix #143290) should...
Original commit message from CVS:
- removing some trailing commas in enums to please C90 only compilers (AIX, Forte, ...)
('should' fix #143290)

should/could we compile gst with -ansi -pedantic to catch those in the build-bots ?
2004-05-28 05:01:05 +00:00
Wim Taymans
b8ff3d3d63 gst/schedulers/gstoptimalscheduler.c: Don't try to follow the pad connections with other groups when a loop based ele...
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c: (remove_from_chain),
(chain_group_set_enabled), (create_group), (add_to_group),
(merge_groups), (setup_group_scheduler), (group_elements),
(gst_opt_scheduler_iterate), (gst_opt_scheduler_show):
Don't try to follow the pad connections with other groups
when a loop based element is added to the scheduler because
the bin will inform the scheduler about the pad links a little
later.
2004-05-27 15:38:49 +00:00
Wim Taymans
d738f23c6a gst/schedulers/gstoptimalscheduler.c: Elements without a group can do a state change as well, just wait with the setu...
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c: (add_to_chain),
(remove_from_chain), (chain_group_set_enabled),
(setup_group_scheduler), (group_element_set_enabled),
(gst_opt_scheduler_state_transition), (gst_opt_scheduler_iterate),
(gst_opt_scheduler_show):
Elements without a group can do a state change as well, just wait
with the setup of the scheduling function when it is added to a
chain.
2004-05-27 11:29:18 +00:00
Wim Taymans
6187bf80e7 gst/schedulers/gstoptimalscheduler.c: Fixes to maintain internal consistency of the scheduler data structures.
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c: (add_to_chain),
(remove_from_chain), (chain_group_set_enabled), (add_to_group),
(merge_groups), (setup_group_scheduler),
(group_inc_links_for_element), (gst_opt_scheduler_iterate),
(gst_opt_scheduler_show):
Fixes to maintain internal consistency of the scheduler data
structures.
- adding an enabled group to a chain should increment the
number of enabled elements in that chain.
- removing an enabled group from a chain could disable the
chain.
- removing a disabled group from a chain could enable the
chain.
- add g_assert when internal inconsistency is detected.
- adding an element to a group could increase the number of
links this group has with other groups.
- merging two groups also merges the chains.
- also show group links in the _show method.

Please report regressions ASAP, so I can fix them.
2004-05-27 09:33:29 +00:00
Benjamin Otte
05c2afa7f9 gst/gstbin.c: don't
Original commit message from CVS:
* gst/gstbin.c: (gst_bin_iterate_func), (gst_bin_iterate):
don't
* gst/schedulers/entryscheduler.c: (safe_cothread_switch),
(safe_cothread_destroy),
(gst_entry_scheduler_remove_all_cothreads),
(gst_entry_scheduler_reset), (_remove_cothread),
(gst_entry_scheduler_state_transition):
hold off cothread destruction if we're not in main cothread
* configure.ac:
* testsuite/Makefile.am:
add new test dir
* testsuite/schedulers/.cvsignore:
* testsuite/schedulers/Makefile.am:
add tests
* testsuite/schedulers/relink.c: (cb_handoff), (main):
check relinking and adding/removing elements from a running pipeline
* testsuite/schedulers/unlink.c: (cb_handoff), (main):
check unlinking in a running pipeline
* testsuite/schedulers/unref.c: (cb_handoff), (main):
check unreffing a running pipeline
* testsuite/schedulers/useless_iteration.c: (main):
check iterating a pipeline that contains running threads works
2004-05-18 21:18:43 +00:00
Wim Taymans
49342d34fc gst/schedulers/gstoptimalscheduler.c: Fixed an error introduced with patch for 1.63. When setting a get based element...
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c: (remove_from_group),
(setup_group_scheduler), (gst_opt_scheduler_pad_link):
Fixed an error introduced with patch for 1.63. When setting
a get based element as the entry point in a group, make sure
to mark the group as GET based.
2004-05-18 17:03:41 +00:00
Wim Taymans
53dc1b170e gst/schedulers/gstoptimalscheduler.c: Added some more debug info and fixed a bug where the group type was set to LOOP...
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c: (create_group),
(setup_group_scheduler), (loop_group_schedule_function),
(gst_opt_scheduler_pad_link):
Added some more debug info and fixed a bug where the group
type was set to LOOP but it was in fact unknown.
2004-05-18 16:44:44 +00:00
Benjamin Otte
03e5b961dc gst/schedulers/entryscheduler.c: make resetting scheduler work twice in a row
Original commit message from CVS:
* gst/schedulers/entryscheduler.c: (gst_entry_scheduler_reset):
make resetting scheduler work twice in a row
2004-05-18 01:47:33 +00:00
Benjamin Otte
5d353409c2 gst/gstelement.c: whoops, store the signal id correctly
Original commit message from CVS:
* gst/gstelement.c: (gst_element_class_init):
whoops, store the signal id correctly
* gst/schedulers/gstbasicscheduler.c:
(gst_basic_scheduler_chain_wrapper):
detect infinfinfinfinfinf^Cinite loops in chain wrapper when the
chain function isn't linked
2004-05-13 15:07:56 +00:00
Wim Taymans
656cee1af5 gst/schedulers/gstoptimalscheduler.c: when removing an element from a group, we always need to decrement the link cou...
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c: (remove_from_group),
(group_dec_link), (gst_opt_scheduler_pad_unlink):
when removing an element from a group, we always need to
decrement the link count that this group had with other
groups through the element.
added an extra assert to catch inconsistencies when decrementing
the link count.
2004-05-04 16:43:49 +00:00
Thomas Vander Stichele
e7b9201555 reorganize C/LIB flags add gst_info to gstcompat.h
Original commit message from CVS:
reorganize C/LIB flags
add gst_info to gstcompat.h
2004-05-04 12:38:36 +00:00