Commit graph

141 commits

Author SHA1 Message Date
Ronald S. Bultje
6a56e3080d gst/gstthread.c: Implement state-change error handling (#166073).
Original commit message from CVS:
* gst/gstthread.c: (gst_thread_change_state):
Implement state-change error handling (#166073).
2005-02-08 14:04:31 +00:00
Ronald S. Bultje
d8d03b6b98 docs/pwg/advanced-types.xml: Fix description for buffer-frames=0.
Original commit message from CVS:
* docs/pwg/advanced-types.xml:
Fix description for buffer-frames=0.
* docs/gst/tmpl/gstbin.sgml:
* gst/gstbin.c: (gst_bin_child_state_change_func),
(gst_bin_change_state), (gst_bin_change_state_norecurse):
* gst/gstbin.h:
* testsuite/threads/Makefile.am:
* testsuite/threads/threadi.c: (cb_timeout), (cb_quit), (cb_eos),
(cb_state), (cb_play), (main):
Fix non-recursive state changes to *really* change the state
of the object, and not just call parent_class->state_change.
Fix a lot of lockups caused by this. Fixes #132775. Add test
for the problem. Also enable test to show #142588 (fixed).
* gst/gstthread.c: (gst_thread_change_state),
(gst_thread_child_state_change):
Don't exit the thread if we go to NULL and are inside thread
context. Instead, return control to the main thread context
and exit from there.
* gst/gstelement.c: (gst_element_disable_threadsafe_properties):
Don't unset virtual functions, since those may still be used.
That's not necessarily correct, but suffices for now.
* configure.ac:
* testsuite/Makefile.am:
* testsuite/pad/Makefile.am:
* testsuite/pad/chainnopull.c: (gst_test_sink_class_init),
(gst_test_sink_base_init), (gst_test_sink_chain),
(gst_test_sink_init), (main):
* testsuite/pad/getnopush.c: (gst_test_src_class_init),
(gst_test_src_base_init), (gst_test_src_get), (gst_test_src_init),
(main):
* testsuite/pad/link.c: (gst_test_element_class_init),
(gst_test_element_base_init), (gst_test_src_get),
(gst_test_src_loop), (gst_test_src_init), (gst_test_filter_chain),
(gst_test_filter_loop), (gst_test_filter_init),
(gst_test_sink_chain), (gst_test_sink_loop), (gst_test_sink_init),
(cb_error), (main):
Add tests to show #150546. Pass, but should fail (currently
disabled from the testsuite).
* gst/gstscheduler.c: (gst_scheduler_dispose):
Dereference child schedulers on dispose (#94464).
* testsuite/bytestream/filepadsink.c: (gst_fp_sink_init):
Fix typo.
* testsuite/threads/thread.c: (main):
Add more debug.
2005-01-31 15:51:19 +00:00
Wim Taymans
12a0211728 gst/gstthread.c: Ref the thread object in the GThread mainloop. Break out of the thread mainloop if it holds the last...
Original commit message from CVS:
* gst/gstthread.c: (gst_thread_dispose), (gst_thread_change_state),
(gst_thread_child_state_change), (gst_thread_main_loop):
Ref the thread object in the GThread mainloop. Break out of the
thread mainloop if it holds the last ref. This properly exits
the threads when disposing the thread from its own context. It
also avoids possible deadlocks in the dispose function.
2004-11-25 12:46:50 +00:00
Wim Taymans
625722ecdc gst/gstthread.c: Make sure no iteration happens while performing the state change as it could mess up the internal co...
Original commit message from CVS:
* gst/gstthread.c: (gst_thread_change_state),
(gst_thread_child_state_change):
Make sure no iteration happens while performing
the state change as it could mess up the internal
consistency of the thread state.
2004-10-07 18:34:57 +00:00
Wim Taymans
c43a7670f0 gst/gstthread.c: Do not try to grab the iterate lock in the state change method when we are in the same thread as the...
Original commit message from CVS:
* gst/gstthread.c: (gst_thread_dispose), (gst_thread_sync),
(gst_thread_change_state), (gst_thread_child_state_change):
Do not try to grab the iterate lock in the state change method
when we are in the same thread as the iterate or else we
could deadlock. Some other cleanups.
2004-10-07 17:41:40 +00:00
Wim Taymans
031d317274 gst/gstthread.c: Lock the iteration and the state change so that automatic negotiation and fixation does not happen a...
Original commit message from CVS:
* gst/gstthread.c: (gst_thread_init), (gst_thread_change_state),
(gst_thread_main_loop):
Lock the iteration and the state change so that automatic
negotiation and fixation does not happen at the same time
as the in stream negotiation.
2004-10-06 09:42:27 +00:00
Thomas Vander Stichele
c06e12f42f configure.ac
Original commit message from CVS:
configure.ac
2004-10-05 08:52:37 +00:00
Wim Taymans
5905655ead Reworked the GstThread implementation, make more operations threadsafe and more reliable.
Original commit message from CVS:
* gst/gstthread.c: (gst_thread_dispose), (gst_thread_sync),
(gst_thread_change_state), (gst_thread_child_state_change),
(gst_thread_main_loop):
* gst/gstthread.h:
* testsuite/threads/Makefile.am:
* testsuite/threads/queue.c:
* testsuite/threads/thread.c: (construct_pipeline), (change_state),
(main):
* testsuite/threads/threadc.c: (construct_pipeline):
* testsuite/threads/threadd.c: (main):
* testsuite/threads/threade.c: (main):
* testsuite/threads/threadf.c:
Reworked the GstThread implementation, make more operations
threadsafe and more reliable.
Moved testcases from the failing to the working list.
2004-09-06 15:57:11 +00:00
Wim Taymans
2bb8691df2 gst/: Backported some debug logging from a reverted patch
Original commit message from CVS:
* gst/gstbin.c: (gst_bin_get_type),
(gst_bin_child_state_change_func):
* gst/gstthread.c: (gst_thread_change_state):
Backported some debug logging from a reverted patch
Don't try to destroy the thread twice. Added some more
debugging in GstThread. Unlock and signal even if we
are in the thread context.
2004-08-03 09:51:37 +00:00
Thomas Vander Stichele
8f0fda26d0 revert state change changes as agreed so we can rework them gradually
Original commit message from CVS:
revert state change changes as agreed so we can rework them gradually
2004-07-29 20:33:49 +00:00
Wim Taymans
f200c14dff gst/: Make sure that a bin state change tries to keep the children in sync.
Original commit message from CVS:
* gst/gstbin.c: (set_kid_state_func), (gst_bin_set_state):
* gst/gstthread.c: (gst_thread_release), (gst_thread_set_state):
Make sure that a bin state change tries to keep the children
in sync.
Added debug logging to the thread.
2004-07-28 10:15:08 +00:00
Benjamin Otte
28bf20507e gst/gstbin.c: make state changes work correctly and reentrant (so removing elements from bins during state changes of...
Original commit message from CVS:
* gst/gstbin.c: (gst_bin_get_type), (gst_bin_class_init),
(gst_bin_fix_state), (gst_bin_add_func), (gst_bin_remove_func),
(gst_bin_child_state_change_func), (set_kid_state_func),
(gst_bin_set_state), (gst_bin_change_state_norecurse):
make state changes work correctly and reentrant (so removing
elements from bins during state changes of bins doesn't cause
segfaults or even wrong states)
add debugging category and debugging output to print children states
* gst/gstbin.c: (gst_bin_dispose):
add some assertion checks
* gst/gstbin.h:
* gst/gstbin.c: (gst_bin_sync_children_state):
deprecate this function - it just does gst_bin_set_state (bin,
GST_STATE (bin))
* testsuite/threads/queue.c: (main):
don't use gst_bin_sync_children_state anymore
* testsuite/states/Makefile.am:
* testsuite/states/bin.c:
test that the state changes of bins work as expected
* gst/gstthread.c: (gst_thread_class_init), (gst_thread_set_state):
some adjustments to change states correctly, too
* gst/gstthread.c: (gst_thread_change_state):
don't enable/disable "threadsafe" properties, they're unused and
cause random segfaults
* testsuite/threads/Makefile.am:
the queue check randomly passes now, ignore it
2004-07-21 21:28:58 +00:00
Thomas Vander Stichele
1c5150d393 debugging additions and style cleanups
Original commit message from CVS:
debugging additions and style cleanups
2004-07-15 16:20:50 +00:00
Wim Taymans
31b478533c gst/: Since remove is virtual in GstBin we must not assume the elements GList to have anothing usefull.
Original commit message from CVS:
* gst/gstbin.c: (gst_bin_remove), (gst_bin_dispose):
* gst/gstthread.c: (gst_thread_dispose), (gst_thread_catch),
(gst_thread_main_loop):
Since remove is virtual in GstBin we must not assume the
elements GList to have anothing usefull.
Add some more logging to GstThread and be a bit more paranoid
when resetting the scheduler.
Set the state of the bin to NULL before removing the children.
2004-07-09 15:03:51 +00:00
Thomas Vander Stichele
ac9d8868a5 catch wrong state changes in element base class
Original commit message from CVS:
catch wrong state changes in element base class
2004-07-09 11:20:59 +00:00
Thomas Vander Stichele
d707aa6316 more debug info
Original commit message from CVS:
more debug info
2004-07-03 15:30:19 +00:00
Thomas Vander Stichele
f55a8091a6 remove gst_info remove gstlog.h, fold back to gstinfo.h update translations
Original commit message from CVS:
remove gst_info
remove gstlog.h, fold back to gstinfo.h
update translations
2004-05-03 16:03:24 +00:00
Benjamin Otte
3147797afb gst/: don't use memchunks for these objects, use malloc instead
Original commit message from CVS:
* gst/gstbin.c: (gst_bin_get_type):
* gst/gstclock.c: (gst_clock_get_type):
* gst/gstindex.c: (gst_index_get_type):
* gst/gstobject.c: (gst_object_get_type),
(gst_signal_object_get_type):
* gst/gstpad.c: (gst_pad_get_type), (gst_real_pad_get_type),
(gst_pad_template_get_type), (gst_ghost_pad_get_type):
* gst/gstpluginfeature.c: (gst_plugin_feature_get_type):
* gst/gstqueue.c: (gst_queue_get_type):
* gst/gstregistry.c: (gst_registry_get_type):
* gst/gstsystemclock.c: (gst_system_clock_get_type):
* gst/gstthread.c: (gst_thread_get_type):
don't use memchunks for these objects, use malloc instead
2004-04-09 19:05:03 +00:00
Benjamin Otte
3bed253042 gst/gstthread.c: fix docs
Original commit message from CVS:
* gst/gstthread.c:
fix docs
* gst/gstutils.h:
fix GST_BOILERPLATE_FULL to not throw casting errors on C++
2004-03-30 18:02:38 +00:00
Thomas Vander Stichele
7baa6c18e7 don't mix tabs and spaces
Original commit message from CVS:
don't mix tabs and spaces
2004-03-15 19:27:17 +00:00
Thomas Vander Stichele
a967370df5 gst-indent run on core
Original commit message from CVS:
gst-indent run on core
2004-03-13 15:27:01 +00:00
Benjamin Otte
7155cfae35 gst/gstevent.c: copy navigation event correctly. Check freeing tag lists.
Original commit message from CVS:
2004-02-20  Benjamin Otte  <otte@gnome.org>

* gst/gstevent.c: (_gst_event_copy), (_gst_event_free):
copy navigation event correctly. Check freeing tag lists.
* gst/gstthread.c: (gst_thread_change_state):
don't abort() on state changing mess - it might happen because of
bugs.
* gst/gstvalue.c: (gst_value_set_caps), (gst_value_get_caps):
use boxed functions
* gst/gstvalue.h:
fix GST_VALUE_HOLDS_CAPS
2004-02-20 00:38:24 +00:00
Thomas Vander Stichele
509fa3874c fixes for --disable-loadsave --disable-registry
Original commit message from CVS:
fixes for --disable-loadsave --disable-registry
2004-02-12 16:49:16 +00:00
Benjamin Otte
4749c7a4f1 gst/: get rid of gstmarshal.h dependency. It's not needed.
Original commit message from CVS:
2004-02-03  Benjamin Otte  <in7y118@public.uni-hamburg.de>

* gst/parse/Makefile.am:
* gst/gstobject.h:
get rid of gstmarshal.h dependency. It's not needed.
* gst/gst.h:
* gst/elements/gstfakesink.c:
* gst/elements/gstfakesrc.c:
* gst/elements/gstidentity.c:
* gst/gstbin.c:
* gst/gstelement.c:
* gst/gstindex.c:
* gst/gstobject.c:
* gst/gstpad.c:
* gst/gstthread.c:
* gst/gstxml.c:
* libs/gst/control/dparam.c:
* libs/gst/control/dparammanager.c:
include gstmarshal.h.
Fixes #132045
2004-02-03 03:31:26 +00:00
Benjamin Otte
192330d37a parts of the patch submitted in bug #113913
Original commit message from CVS:
2004-01-30  Laurent Vivier <Laurent.Vivier@bull.net>

reviewed by Benjamin Otte
parts of the patch submitted in bug #113913

* configure.ac:
use AC_C_INLINE. Use = instead of == with test
* examples/plugins/example.c:
* gst/autoplug/gstspideridentity.c:
* gst/elements/gstfdsrc.c:
* gst/elements/gstfilesrc.c:
* gst/elements/gstidentity.c:
* gst/elements/gstmultidisksrc.c:
* gst/elements/gststatistics.c:
* gst/gstelement.c:
* gst/gstobject.c:
* gst/gstpad.c:
* gst/gstpipeline.c:
* gst/gstthread.c:
don't end enums with a comma
* gst/gstindex.c: (gst_index_compare_func):
do explicit casting to gint
* gst/gsttrace.c: (gst_trace_text_flush):
#define strsize as a macro
2004-01-30 20:48:13 +00:00
Benjamin Otte
9df878658c gst/gstcaps.c: add sanity checks
Original commit message from CVS:
2003-12-27  Benjamin Otte  <in7y118@public.uni-hamburg.de>

* gst/gstcaps.c: (gst_caps_append):
add sanity checks
* gst/gstcaps.h: (gst_caps_debug):
remove, it doesn't exist anymore.
* gst/gstelement.c: (gst_element_threadsafe_properties_pre_run),
(gst_element_threadsafe_properties_post_run):
make debugging messages not clutter up THREAD debug category
(gst_element_negotiate_pads), (gst_element_clear_pad_caps),
(gst_element_change_state):
update to new caps API
* gst/gstinterface.c: (gst_implements_interface_cast):
don't put vital code in g_return_if_fail
* gst/gstpad.c: (gst_pad_link_try), (gst_pad_try_set_caps),
(gst_pad_link_filtered):
add pst_pad_try_link and use it.
(gst_pad_perform_negotiate), (gst_pad_renegotiate):
implement correctly, deprecate first one.
(gst_pad_link_unnegotiate), (gst_pad_unnegotiate):
add and implement.
(gst_pad_try_relink_filtered), (gst_pad_relink_filtered):
implement.
(gst_pad_get_negotiated_caps):
add and implement. Make GST_PAD_CAPS call this function.
(gst_pad_get_caps):
remove unneeded check..
(gst_pad_recover_caps_error):
disable, always return FALSE.
(gst_real_pad_dispose):
don't free caps and appfilter anymore, they're unused.
* gst/gstpad.h:
Reflect changes mentioned above.
* gst/gstsystemclock.c: (gst_system_clock_wait):
Make 'clock is way behind' a debugging message.
* gst/gstthread.c: (gst_thread_change_state):
Fix debugging message
2003-12-27 13:51:31 +00:00
Benjamin Otte
907e3e97d9 update plugin initialization restructuring (see email for details
Original commit message from CVS:
update plugin initialization restructuring (see email for details
2003-10-31 19:32:47 +00:00
Benjamin Otte
333aa50f50 clean up debugging messages in gstthread.c - includes fix for segfault from bug #118151
Original commit message from CVS:
clean up debugging messages in gstthread.c - includes fix for segfault from bug #118151
2003-07-27 13:26:38 +00:00
Benjamin Otte
f10cd44abb clean up element details structs
Original commit message from CVS:
clean up element details structs
2003-07-08 17:10:49 +00:00
Benjamin Otte
803ce6bf48 GST_DEBUG reorganization containing loads of stuff:
Original commit message from CVS:
GST_DEBUG reorganization
This is a big diff (ca 450k), containing loads of stuff:
- gstinfo.[ch] complete rewrite
- changing of all GST_DEBUG messages to reflect that change
- reorganization of subsystem disabling
- addition of gstconfig.h.in so we can track the disablings
- <gst/gst.h> does not include <unistd.h> and <config.h> anymore
- documentation updated for gstinfo stuff (build the docs yourself to know what changed)
- bugfixes for making of the docs (files from CVS are not deleted anymore
- testsuite for debugging changes in testsuite/debug

expect breakage
2003-06-29 14:05:49 +00:00
Benjamin Otte
91d22b150d fix deadlock when thread itself goes PLAYING => PAUSED => PLAYING
Original commit message from CVS:
fix deadlock when thread itself goes PLAYING => PAUSED => PLAYING
2003-04-28 00:01:31 +00:00
Wim Taymans
a6766132e6 - remove some \n in GstThread debugging
Original commit message from CVS:
- remove some \n in GstThread debugging
- move the state change g_cond_signal to the set_state function to make
sure that we don't unlock the waiters before we completed the state
change.
2003-04-26 14:38:18 +00:00
Benjamin Otte
fa69e9954c fix debugging segfault
Original commit message from CVS:
fix debugging segfault
2003-04-26 13:55:13 +00:00
Benjamin Otte
7f5dc1299b assorted fixes:
Original commit message from CVS:
assorted fixes:
- fix for #111146 (works now with lots of warnings (or maybe even without - the fun of races))
- more useful debugging output
- restructuring of when to release the lock
- emitting SHUTDOWN when holding lock so we're not destroyed while signalling
- probably something else I don't remember
2003-04-21 18:09:29 +00:00
Benjamin Otte
90dc6ded4d rewrite GstThread - should be quite a bit cleaner and does change state correctly now
Original commit message from CVS:
rewrite GstThread - should be quite a bit cleaner and does change state correctly now
2003-04-18 23:35:34 +00:00
Wim Taymans
f05a353f5c gst_object_swap -> gst_object_replace as it's a better name. Wait for next commit to make gstelement.c compile again.
Original commit message from CVS:
gst_object_swap -> gst_object_replace as it's a better name. Wait for
next commit to make gstelement.c compile again.
2003-02-02 19:49:29 +00:00
Wim Taymans
eadfe716a0 More cleanups and refcount fixage
Original commit message from CVS:
More cleanups and refcount fixage
2003-01-17 18:59:44 +00:00
Wim Taymans
ca2b17259e Use two GCond vars to work around a problem in NPTL
Original commit message from CVS:
Use two GCond vars to work around a problem in NPTL
2003-01-12 16:33:33 +00:00
Thomas Vander Stichele
7c84581a90 patch from brian cameron for iso c compliance
Original commit message from CVS:
patch from brian cameron for iso c compliance
2002-12-18 21:44:57 +00:00
Wim Taymans
29e2850eff Documentation updates
Original commit message from CVS:
Documentation updates
2002-12-14 13:02:16 +00:00
Thomas Vander Stichele
58d2d2798c typos
Original commit message from CVS:
typos
2002-12-07 14:15:52 +00:00
Wim Taymans
e04e9d291e Make sure we set the reaping flag when going to NULL before we signal the parent.
Original commit message from CVS:
Make sure we set the reaping flag when going to NULL before we signal the
parent.
2002-12-06 20:12:38 +00:00
Thomas Vander Stichele
18f9761afc cleanups
Original commit message from CVS:
cleanups
2002-11-28 21:24:01 +00:00
Wim Taymans
3fc8ad0842 - an element also has a failed state change if the scheduler setup failed.
Original commit message from CVS:
- an element also has a failed state change if the scheduler setup failed.
- set a thread to _STATE_NULL before destroying it.
2002-11-19 23:15:23 +00:00
Wim Taymans
936c0aff15 Remove bogus free
Original commit message from CVS:
Remove bogus free
2002-11-03 00:13:40 +00:00
David Schleef
e7db7a70ad Change from pthreads to GThreads
Original commit message from CVS:
Change from pthreads to GThreads
2002-11-01 21:38:39 +00:00
Andy Wingo
c92874adad licenses, ugg
Original commit message from CVS:
licenses, ugg
2002-09-29 18:12:52 +00:00
Ronald S. Bultje
fc6ac17dc1 Dont give a warning on unconnected pads (bugzilla ID 93218) - thanks Iain
Original commit message from CVS:
Dont give a warning on unconnected pads (bugzilla ID 93218) - thanks Iain
2002-09-13 13:32:28 +00:00
Thomas Vander Stichele
a0537fd60f revert this comment
Original commit message from CVS:
revert this comment
2002-09-12 20:13:21 +00:00
Thomas Vander Stichele
3a5b408709 useful comments change thread -> cothread in varnames where it's applicable code cleanups
Original commit message from CVS:
* useful comments
* change thread -> cothread in varnames where it's applicable
* code cleanups
2002-09-12 18:56:31 +00:00