Original commit message from CVS:
* gst/Makefile.am: remove gstcpu.[ch]. The gst_cpu functionality
is broken and should be implemented in a different library.
* gst/gst.c: (init_post): don't call _gst_cpu_initialize()
* gst/gst.h: remove gstcpu.h
* gst/gstcpu.c: remove
* gst/gstcpu.h: remove
* gst/Makefile.am.future: Remove this file. It's ancient.
Original commit message from CVS:
* gst/gstbin.c: (gst_bin_class_init), (gst_bin_set_manager),
(gst_bin_send_event):
Add default event/set_manager handlers. The set_manager handler
takes care that the manager is distributed over kids that were
already in the bin before the manager was set. The event handler
is a utility virtual function that sends the event over all sinks,
so that gst_element_send_event (bin, event); has the expected
behaviour.
* gst/gstpad.c: (gst_pad_event_default):
Re-install default event handling for discontinuities, so that
seeking works without requiring hacks in applications or extra
code in sinks.
* gst/gstpipeline.c: (gst_pipeline_class_init),
(gst_pipeline_send_event):
Half hack, half utility: set a pipeline to PAUSED for seek events,
since that is the only way we can guarantee a/v sync. Means that
you can do gst_element_seek (pipeline, method, pos); on a pipeline
and it "just works".
Original commit message from CVS:
* docs/faq/gst-uninstalled:
add gst-plugins-base
* docs/gst/Makefile.am:
don't error out until docs are fixed
* docs/gst/gstreamer.types:
remove thread
Original commit message from CVS:
Next big merge.
Added GstBus for mainloop integration.
Added GstMessage for sending notifications on the bus.
Added GstTask as an abstraction for pipeline entry points.
Removed GstThread.
Removed Schedulers.
Simplified GstQueue for multithreaded core.
Made _link threadsafe, removed old capsnego.
Added STREAM_LOCK and PREROLL_LOCK in GstPad.
Added pad blocking functions.
Reworked scheduling functions in GstPad to prepare for
scheduling updates soon.
Moved events out of data stream.
Simplified GstEvent types.
Added return values to push/pull.
Removed clocking from GstElement.
Added prototypes for state change function for next merge.
Removed iterate from bins and state change management.
Fixed some elements, disabled others for now.
Fixed -inspect and -launch.
Added check for GstBus.
Original commit message from CVS:
Added GstBin test.
Added GstSystemClock test.
Implemented clock distribution code in GstBin.
Implemented iterate sinks method for future use.
Rearranged gstelement.h
Fix GstIterator comparison bug.
Moved some code to GstPipeline, mostly clocking related.
Original commit message from CVS:
Remove threadsafe properties. Fix elements because GObject
complains when installing a property before declaring a
set/get_property handler.
Rearrange gstelement.h file, use STATE macros for state locks.
Free mutexes in the finalize method instead of dispose.
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.
Original commit message from CVS:
2005-02-24 Andy Wingo <wingo@pobox.com>
* tests/bench-complexity.scm:
* tests/complexity.gnuplot: New files, good for running complexity
benchmarks.
Original commit message from CVS:
2005-02-24 Andy Wingo <wingo@pobox.com>
* tests/Makefile.am:
* tests/complexity.c: New test, sets up N elements, at each level
teeing into M streams per element. Eeeenteresting.
Original commit message from CVS:
2005-02-24 Andy Wingo <wingo@pobox.com>
* tests/mass_elements.gnuplot: gnuplot file for the mass_elements
benchmark. Run as gnuplot mass_elements.gnuplot > foo.ps, after
running bench-mass_elements.scm.
* tests/bench-mass_elements.scm: New script, runs mass_elements
for various numbers of identities, outputting the results to a
file. Requires guile 1.6. Just for testing.
Original commit message from CVS:
* gst/gstelementfactory.c: (gst_element_factory_create):
* gst/gstobject.c: (gst_object_init),
(gst_object_set_name_default), (gst_object_set_name):
name objects by default, not in gst_element_factory_create. Allows
using elements created with g_object_new. (fixes#167283)
Original commit message from CVS:
* gst/gstinfo.c: (_gst_debug_init), (gst_debug_log_default):
make the time that debugging functions print relative to when
gst_init was called
Original commit message from CVS:
2005-02-18 Zaheer Abbas Merali <zaheerabbas at merali dot org>
* libs/gst/dataprotocol/dataprotocol.c: (gst_dp_dump_byte_array):
Allocate the 1 byte more memory that was forgotten!!!!!
Original commit message from CVS:
fixed a few typos, relabeled introductionary list of types
more notes abut dparam changes
many comments and notes on dparam implementation
new dparams are were not initialized to the default value
from param specs
Original commit message from CVS:
2005-02-04 Andy Wingo <wingo@pobox.com>
* gst/gstelement.c (gst_element_get_compatible_pad_template): Fix
the debugging on whether the caps are compatible.
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.
Original commit message from CVS:
* testsuite/threads/Makefile.am:
* testsuite/threads/threadi.c: (cb_data), (cb_play), (main):
On Wim's request, split the test in three separately-compiled
tests that each test a very specific bug. Two of them still fail,
will create bugs for those. threadi.c indicates why they fail.
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c:
(get_group_schedule_function):
Try to work with the threading mess that queue_link is.
Original commit message from CVS:
* gst/gstbin.c: (gst_bin_remove_func):
Explicitely make an element release locks in a group when being
remove from a bin.
* gst/gstqueue.c: (gst_queue_chain), (gst_queue_get):
If there's no scheduler, always return immediately (similar to
gst_element_interrupt).
Original commit message from CVS:
* gst/gstbin.c: (gst_bin_child_state_change_func):
Remove a piece of code that could never be reached.
* docs/gst/gstreamer-sections.txt:
* gst/gstpad.c: (gst_pad_push), (gst_pad_pull),
(gst_pad_call_get_function):
* gst/gstpad.h:
* testsuite/pad/Makefile.am:
Fix#150546, enable tests.
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.
Original commit message from CVS:
* gst/gstpad.c: (gst_pad_push):
Add check that the pad on which the push is performed is not a
get-based pad (#150546).
Original commit message from CVS:
* gst/elements/gsttypefindelement.c:
(gst_type_find_element_handle_event):
Fix buffer pushing if stream EOSes during typefinding.
Original commit message from CVS:
Reviewed by: Ronald S. Bultje <rbultje@ronald.bitfreak.net>
* gst/gstvalue.c: (gst_string_wrap):
Allow NULL-strings as argument (#165365).
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.
Original commit message from CVS:
* gst/autoplug/gstspideridentity.c:
Cosmetic fix - spider_find_peek should be static
* gst/parse/parse.l:
Applying fix for #164261
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.
Original commit message from CVS:
* docs/pwg/advanced-types.xml:
* docs/random/mimetypes:
Add documentation on libsndfile types (#163309), by Steve Baker
<steve@stevebaker.org>.
* gst/gstelement.c: (gst_element_release_request_pad):
If an element has no explicit function, just remove the pad.
Original commit message from CVS:
Reviewed by: Ronald S. Bultje <rbultje@ronald.bitfreak.net>
* gst/registries/gstxmlregistry.c: (gst_xml_registry_load):
Fix memleak (#163801).
Original commit message from CVS:
* gst/gstprobe.c: (gst_probe_dispatcher_dispatch):
Another workaround for memory access while destroyed in callback.
Please, someone with refcount knowledge, have a look at this.
Original commit message from CVS:
* docs/random/omega/caps2:
* testsuite/caps/caps_strings:
replace framerate aproximations by their real value
(24000/1001, 30000/1001, 60000/1001)
Partially fixes bug #164049
Original commit message from CVS:
* docs/random/release:
updates
* gst/gst_private.h:
* gst/gstinfo.c:
* gst/gstobject.c:
move deep_notify logging to a new category
* gst/gstprobe.c:
* gst/gstprobe.h:
add stuff so bindings can wrap probes
Original commit message from CVS:
Reviewed by: Ronald S. Bultje <rbultje@ronald.bitfreak.net>
* gst/gstpluginfeature.c: (gst_plugin_feature_ensure_loaded):
Protect plugin loading by a mutex so it's threadsafe. Fixes
#163234.
Original commit message from CVS:
* gst/gstevent.c: (_gst_event_copy):
Reference source object when copying events, since it'll be
dereferenced on event dereferencing as well.
Original commit message from CVS:
* docs/gst/gstreamer-sections.txt:
* docs/gst/tmpl/gstevent.sgml:
* gst/gstevent.c: (gst_event_new_filler_stamped),
(gst_event_filler_get_duration):
* gst/gstevent.h:
Add two new functions for filler events (which are used to
synchronize streams if one of them is not having any data
for a while) without interrupting the actual data-stream.
Basically a no-op.
* gst/gstqueue.c: (gst_queue_init), (gst_queue_getcaps),
(gst_queue_link_sink), (gst_queue_link_src),
(gst_queue_change_state):
Allow for renegotiation while filled. Required for stream
switching while playing.
Original commit message from CVS:
* gst/gstelement.c: (gst_element_link_many):
fix up g_return_if_fail's
* po/LINGUAS:
* po/de.po:
add German translation, that was somehow not included
Original commit message from CVS:
* gst/gstprobe.c: (gst_probe_dispatcher_dispatch):
Check for existence of probe after performing the probe before
re-accessing it to prevent segfaults caused by removal of the
probe in the callback.
Original commit message from CVS:
* testsuite/registry/Makefile.am:
* testsuite/registry/gst-print-formats.c:
(print_pad_templates_info), (print_element_list),
(print_typefind_list), (list_sort_func), (get_typefind_mime_list),
(g_list_uniqify), (get_pad_templates_info),
(get_element_mime_list), (print_mime_list), (main): A little
program that looks through the registry to find elements of
a given type. Not particularly interesting as a test, except
that there's no other test covering the same area.
Original commit message from CVS:
* tools/gst-launch.c: (idle_func), (fault_handler_sighandler),
(fault_handler_sigaction), (fault_spin),
(sigint_handler_sighandler), (play_handler), (main): Fix deadlocks
in signal.h-type signal handlers by not calling forbidden functions,
including gst_element_set_state().
Original commit message from CVS:
Reviewed by: Ronald S. Bultje <rbultje@ronald.bitfreak.net>
* gst/gstregistry.h:
* gst/registries/gstxmlregistry.c:
Fix macro's for Mingw (fixes#162276).
Original commit message from CVS:
quick shell oneliner to find undocumented members in docs/README
more enumtypes cleanup
activated documentation comments, now someone needs to document the enums :(
Original commit message from CVS:
* gst/gstplugin.c:
document gst_library_load a bit more (riff special case + return value if already loaded)
* testsuite/bytestream/filepadsink.c:
plugin name is 'gstbytestream', not 'bytestream'
Original commit message from CVS:
* docs/manual/advanced-dataaccess.xml:
Add section on how to use fakesrc/fakesink/identity in your
application, plus section on how to embed plugins. Also mention
probes.
* docs/manual/appendix-checklist.xml:
* docs/manual/appendix-debugging.xml:
* docs/manual/appendix-gnome.xml:
* docs/manual/appendix-integration.xml:
Debug -> checklist, GNOME -> integration, add sections on Linux,
KDE integration and add other things useful for application
development.
* docs/manual/manual.xml:
Remove some fixmes, update some file pointers.
* docs/pwg/appendix-checklist.xml:
Fix typo.
* docs/pwg/building-boiler.xml:
Remove ugly header and add commented fixme.
* docs/pwg/pwg.xml:
Add fixme.
* examples/manual/Makefile.am:
Add example for added docs.
Original commit message from CVS:
* docs/manual/advanced-autoplugging.xml:
* docs/manual/advanced-schedulers.xml:
* docs/manual/advanced-threads.xml:
Rewrites. Remove cothreads, go a bit into opt specifically,
document threads and their gotchas, and do some technical stuff
on autoplugging plus add some working examples. Fixes#157395.
* examples/manual/Makefile.am:
Add typefind/autoplugger example (one that actually works).
Remove queue example since it's a duplicate of the thread one.
Original commit message from CVS:
* gst/gstvalue.c: (gst_value_deserialize_string):
use deprecated g_value_set_string_take_ownership to keep compatible
with glib 2.2
Original commit message from CVS:
* gst/gstvalue.c: (gst_value_deserialize_string):
revert last patch, only dom a g_utf8_validate now before accepting
the string - caps parsing strips " from strings so we can't rely on
them
* testsuite/caps/value_serialize.c: (test_string_deserialization):
disable a test that tested the above and comment it
Original commit message from CVS:
* gst/gstpad.c: (gst_pad_query):
Do query on realized pad, similar to how convert/send_event handle
this. Also makes sense, since this pad belongs to the function to
which this query will be sent. Fixes#158163.
Original commit message from CVS:
* gst/gstvalue.c: (gst_value_deserialize_string):
check that a simple string that gets deserialized does not contain
invalid characters
* testsuite/caps/value_serialize.c: (test_string_deserialization):
remove a test that tested a wring behaviour
Original commit message from CVS:
Reviewed by: Ronald S. Bultje <rbultje@ronald.bitfreak.net>
* docs/gst/tmpl/gstprobe.sgml:
Fix documentation of probe callback - it is supposed to return
FALSE, not TRUE, to remove data from the stream (#159087).
Original commit message from CVS:
Reviewed by: Ronald S. Bultje <rbultje@ronald.bitfreak.net>
* gst/gstelementfactory.c: (gst_element_factory_create):
Fix compile failure if compiling without libxml2 support (#149936).
Original commit message from CVS:
* docs/manual/advanced-autoplugging.xml:
* docs/manual/highlevel-components.xml:
Move spider from autoplugging to components. Autoplugging is for
internals, not for solutions. ;-).
Original commit message from CVS:
* docs/manual/advanced-autoplugging.xml:
* docs/manual/advanced-clocks.xml:
* docs/manual/advanced-interfaces.xml:
* docs/manual/advanced-metadata.xml:
* docs/manual/advanced-position.xml:
* docs/manual/advanced-schedulers.xml:
* docs/manual/advanced-threads.xml:
* docs/manual/appendix-gnome.xml:
* docs/manual/appendix-programs.xml:
* docs/manual/appendix-quotes.xml:
* docs/manual/autoplugging.xml:
* docs/manual/basics-bins.xml:
* docs/manual/basics-data.xml:
* docs/manual/basics-elements.xml:
* docs/manual/basics-helloworld.xml:
* docs/manual/basics-init.xml:
* docs/manual/basics-pads.xml:
* docs/manual/basics-plugins.xml:
* docs/manual/bins-api.xml:
* docs/manual/bins.xml:
* docs/manual/buffers-api.xml:
* docs/manual/buffers.xml:
* docs/manual/clocks.xml:
* docs/manual/components.xml:
* docs/manual/cothreads.xml:
* docs/manual/debugging.xml:
* docs/manual/dparams-app.xml:
* docs/manual/dynamic.xml:
* docs/manual/elements-api.xml:
* docs/manual/elements.xml:
* docs/manual/factories.xml:
* docs/manual/gnome.xml:
* docs/manual/goals.xml:
* docs/manual/helloworld.xml:
* docs/manual/helloworld2.xml:
* docs/manual/highlevel-components.xml:
* docs/manual/highlevel-xml.xml:
* docs/manual/init-api.xml:
* docs/manual/intro-basics.xml:
* docs/manual/intro-motivation.xml:
* docs/manual/intro-preface.xml:
* docs/manual/intro.xml:
* docs/manual/links-api.xml:
* docs/manual/links.xml:
* docs/manual/manual.xml:
* docs/manual/motivation.xml:
* docs/manual/pads-api.xml:
* docs/manual/pads.xml:
* docs/manual/plugins-api.xml:
* docs/manual/plugins.xml:
* docs/manual/programs.xml:
* docs/manual/queues.xml:
* docs/manual/quotes.xml:
* docs/manual/schedulers.xml:
* docs/manual/states-api.xml:
* docs/manual/states.xml:
* docs/manual/threads.xml:
* docs/manual/typedetection.xml:
* docs/manual/win32.xml:
* docs/manual/xml.xml:
Try 2. This time, include a short preface as a "general
introduction", also add code blocks around all code samples
so they get compiled. We still need a way to tell readers
the filename of the code sample. In some cases, don't show
all code in the documentation, but do include it in the generated
code. This allows for focussing on specific bits in the docs,
while still having a full test application available.
* examples/manual/Makefile.am:
Fix up examples for new ADM. Add several of the new examples that
were either added or were missing from the build system.
* examples/manual/extract.pl:
Allow nameless blocks.
Original commit message from CVS:
* docs/manual/elements-api.xml:
* docs/manual/helloworld.xml:
* examples/manual/extract.pl:
fix last example. Add example of adding code blocks that are not
shown in docbook output.
Original commit message from CVS:
* docs/manual/dynamic.xml:
* docs/manual/elements-api.xml:
* docs/manual/gnome.xml:
* docs/manual/helloworld2.xml:
* docs/manual/init-api.xml:
* docs/manual/queues.xml:
* docs/manual/threads.xml:
* docs/manual/xml.xml:
* examples/manual/extract.pl:
Make it possible to extract example code from separate blocks.
Should make Ronald happy.
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..
Original commit message from CVS:
* configure.ac: remove all mmx stuff, because it's not used.
* docs/random/ds/0.9-suggested-changes: additional notes
* include/Makefile.am: we don't use these anymore
* include/mmx.h: remove
* include/sse.h: remove
Original commit message from CVS:
* gst/gstcaps.c: (gst_caps_compare_structures):
Simple caps go first. This has the nice side-effect of fixing an
obscure warning.
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.
Original commit message from CVS:
* gst/gstpad.c: (gst_pad_is_negotiated),
(gst_pad_get_negotiated_caps):
GST_RPAD_* will only operate on a RealPad (it casts the pointer,
it doesn't actually check the contents), so be sure to hand it
a RealPad else we'll crash.
Original commit message from CVS:
* gst/gstqueue.c: (gst_queue_init), (gst_queue_getcaps),
(gst_queue_link), (gst_queue_handle_src_query):
Reverted to 1.110 until this makes the testsuite and various
apps work.
Original commit message from CVS:
Reviewed by: Ronald S. Bultje <rbultje@ronald.bitfreak.net>
* gst/gstelement.c: (gst_element_error_full):
Use g_error_new_literal because error text may have
percentage signs in it. Fixes#160019.
Original commit message from CVS:
* gst/elements/gstbufferstore.c:
(gst_buffer_store_add_buffer_func):
don't try to make subbuffers bigger than they can be. (fixes
#159970)
Original commit message from CVS:
* gst/gstcaps.c: (gst_caps_is_fixed_foreach):
* gst/gstpad.c: (_gst_pad_default_fixate_value),
(_gst_pad_default_fixate_foreach):
* gst/gstvalue.c: (gst_type_is_fixed), (gst_value_is_fixed):
* gst/gstvalue.h:
Deprecate _type_is_fixed, use _value_is_fixed instead, since
in some cases (arrays), the fixedness depends on the content.
* gst/gstqueue.c: (gst_queue_handle_src_query):
Check for availability before doing something.
Original commit message from CVS:
* testsuite/threads/Makefile.am:
* testsuite/threads/signals.c: (gst_test_get_type),
(gst_test_class_init), (gst_test_init), (gst_test_dispose),
(gst_test_set_property), (gst_test_get_property),
(gst_test_do_signal1), (signal2_handler), (gst_test_do_signal2),
(gst_test_do_prop), (run_thread), (main):
Added a bunch of testcases that show threadsafety bugs in glib.
Original commit message from CVS:
* gst/gstelement.c: (gst_element_negotiate_pads):
simplify
* gst/gstvalue.c: (gst_string_wrap), (gst_string_unwrap),
(gst_value_serialize_string), (gst_value_deserialize_string):
add unwrapping of previously wrapped strings. Fix bug in wrapping
while at it.
* testsuite/caps/value_serialize.c: (test1),
(test_string_serialization), (test_string_deserialization), (main):
add tests for string (de)serialization
Original commit message from CVS:
* testsuite/threads/159566.c: (object_deep_notify), (main):
* testsuite/threads/Makefile.am:
Added testsuite to show bug #159566
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.
Original commit message from CVS:
2004-11-24 Martin Soto <martinsoto@users.sourceforge.net>
* gst/gstqueue.c (gst_queue_link_sink): Grab the lock only when
it is necessary to wait.
Original commit message from CVS:
* docs/pwg/appendix-checklist.xml:
Add some random notes on thinks to check when writing an element.
This list can be extended as people see fit.
Original commit message from CVS:
2004-11-23 Martin Soto <martinsoto@users.sourceforge.net>
* gst/gstqueue.c (gst_queue_init, gst_queue_link_sink)
(gst_queue_link_src): Allow for renegotiating the caps of the sink
pad. The queue will now wait until it is empty and forward the new
caps to the source.
* gst/gstbin.c (gst_bin_set_element_sched)
(gst_bin_unset_element_sched): Make sure that all elements and
links are registered and unregistered with the scheduler exactly
once. This elaborates on a fix by Benjamin Otte, but
guarantees that decoupled elements are also registered.
Original commit message from CVS:
* docs/manual/quotes.xml:
add a quote
* configure.ac:
* gst/gst.c:
* gst/gstinfo.c:
add LIBDIR and move init message higher up so it's at the start
Original commit message from CVS:
* gst/elements/gstfakesink.c: (gst_fakesink_class_init):
* gst/elements/gstidentity.c: (gst_identity_class_init):
Use G_SIGNAL_TYPE_STATIC_SCOPE, patch by Christophe Fergeau
<teuf@gnome.org> (#157263).
* gst/elements/gsttypefindelement.c: (gst_type_find_element_init),
(gst_type_find_handle_src_query):
Subtract size of internally stored data from position queries.
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.
Original commit message from CVS:
* gst/autoplug/gstspideridentity.c:
(gst_spider_identity_sink_loop_type_finding):
Don't crash if that function is not implemented.
Original commit message from CVS:
* docs/pwg/intro-preface.xml:
Hm, ok, so the brackets weren't really useful...
* docs/pwg/other-ntoone.xml:
Fix embarassing typo.
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.
Original commit message from CVS:
2004-11-03 Christophe Fergeau <teuf@gnome.org>
* docs/random/signal: added notes about using BOXED for GstBuffer
signal marshallers, not POINTER
Original commit message from CVS:
2004-11-03 Christophe Fergeau <teuf@gnome.org>
* gst/elements/gstidentity.c: (gst_identity_class_init): GstBuffer is
a boxed type, marshal the signal with VOID__BOXED, not VOID__POINTER
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.
Original commit message from CVS:
* gst/gststructure.c: (gst_structure_get_abbrs),
(gst_structure_from_abbr), (gst_structure_to_abbr):
Remove that ugly if-then thing in the code that converts
between strings and types.
Original commit message from CVS:
* gst/gstscheduler.c: (gst_scheduler_add_element),
(gst_scheduler_remove_element), (gst_scheduler_state_transition):
Aplied clock distribution patch, this should fix bug
#148787.
Original commit message from CVS:
* gst/parse/parse.l:
* testsuite/parse/parse1.c: (main):
Since parse can do 'element name=a:b' make 'a:b.' work as
well.
Added testcase to verify fix.
Original commit message from CVS:
* tools/gst-inspect.c: (print_pad_info), (print_plugin_features):
Use the realpad when printing the direction.
Add extra \n when printing extensions of typefind factories.
Original commit message from CVS:
* gst/gstqueue.c: (gst_queue_init), (gst_queue_handle_src_query):
Subtract current queue contents from position queries.
Original commit message from CVS:
2004-10-09 Zaheer Abbas Merali <zaheerabbas at merali dot org>
* gst/elements/gstfakesrc.c: (gst_fakesrc_get):
Set element to EOS before sending EOS event
Original commit message from CVS:
* gst/elements/gsttypefindelement.c:
(gst_type_find_element_handle_event):
Handle EOS events when doing the transition from
typefind to data passing. This should fix the
infinite loops in short files.
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.
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.
Original commit message from CVS:
* gst/elements/gsttypefindelement.c: (stop_typefinding):
Push the buffer store instead of clearing it in case that
the stream is not seekable.
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.
Original commit message from CVS:
* docs/Makefile.am:
* docs/manual/elements-api.xml:
restructure so that common stuff is shown first
* docs/manual/init-api.xml:
convert to examples
* docs/manual/manual.xml:
* docs/manuals.mak:
* docs/url.entities:
link to API on the website, possibly override later in build
* examples/manual/.cvsignore:
ignore more
* examples/manual/Makefile.am:
add more examples
* examples/manual/extract.pl:
error out on failure
Original commit message from CVS:
* gst/gstelement.c: (gst_element_change_state):
Well, actually, I was about to remove this insane assert when
I noticed Wim already did that. A warning is nice so we can
fix actual ugs (using --g-fatal-warnings and backtraces), so
I added that instead.
Original commit message from CVS:
* gst/gstelement.c: (gst_element_threadsafe_properties_pre_run),
(gst_element_threadsafe_properties_post_run),
(gst_element_set_state), (gst_element_change_state):
Added extra refcounting around various places.
Original commit message from CVS:
* gst/autoplug/gstspider.c: (gst_spider_class_init),
(gst_spider_identity_plug):
add a template for spider's sink
* gst/gst.c: (gst_register_core_elements):
queue's rank should be NULL, we don't want spider to add it.
Original commit message from CVS:
* gst/elements/gstfilesrc.c: (gst_filesrc_get_mmap):
work with non-regular files that can be mmapped (like /dev/zero)
* gst/elements/gsttypefindelement.c: (gst_type_find_element_chain):
get rid of typefinds that require a seek when we can't seek instead
of trying them over and over again
* tools/gst-launch.c: (idle_func), (error_cb), (main):
return non-zero failure value when the pipeline was interrupted or
an error occurred
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
Original commit message from CVS:
2004-08-10 Colin Walters <walters@redhat.com>
* gst/registries/gstxmlregistry.c (gst_xml_registry_open_func):
Don't use O_EXCL to open temporary registry. It will prevent
registry creation if a temporary one already exists, which
is unnecessary.
Original commit message from CVS:
* tests/mass_elements.c: (main):
allow specifying src and sink element explicitly, so I can test
videotestsrc instead of fakesrc
Original commit message from CVS:
* gst/gststructure.c: (gst_structure_id_empty_new_with_size),
(gst_structure_id_empty_new), (gst_structure_empty_new),
(gst_structure_copy):
add gst_structure_id_empty_new_with_size to allow preallocating
value array sizes. Use this in gst_structure_copy to get rid of
reallocs.
don't do quark=>string=>quark when copying structures
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
Original commit message from CVS:
* gst/gst.c: (gst_register_core_elements):
fix for G_DISABLE_ASSERT
* gst/gstinfo.c: (__gst_in_valgrind):
add for GST_DISABLE_DEBUG
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.
Original commit message from CVS:
* libs/gst/dataprotocol/dataprotocol-test.c: (conversion_test):
Use GST_READ_GUINTxx_BE(), since it accesses unaligned memory.
Original commit message from CVS:
* testsuite/caps/fraction-convert.c: (check_from_double_convert),
(check_from_fraction_convert), (transform_test), (main):
Make the test less pedantic about float roundoff errors.
Original commit message from CVS:
* gst/elements/gstfilesrc.c: (gst_filesrc_open_file),
(gst_filesrc_srcpad_event):
make seek events to before start/after end of file not fail, but
seek to start/end instead
* testsuite/caps/fraction-convert.c: (check_from_double_convert):
add more output
Original commit message from CVS:
* gst/gstpad.c: (gst_pad_set_explicit_caps):
check that caps are fixed
* gst/gstpad.c: (gst_pad_template_new):
don't try to simplify caps, costs too much time on gst_init
* gst/gstplugin.c: (gst_plugin_add_feature):
G_ERROR if features are added twice
* gst/gsttypefind.c: (gst_type_find_register):
* gst/gstelementfactory.c: (gst_element_register):
don't add features twice
* docs/random/ds/0.9-suggested-changes:
add note about possible gst_init optimization
Original commit message from CVS:
* testsuite/elements/Makefile.am:
* testsuite/elements/struct_i386.h:
* testsuite/elements/struct_size.c: (main): A little test
to keep distcheck from working if someone changes a structure
size accidentally.
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.
Original commit message from CVS:
update the version number
add gstinterface to the build
add many definitions needed by plugins, GST_CAT_DEFAULT only available in the Debug build ?
Original commit message from CVS:
* gst/autoplug/gstspideridentity.c: (gst_spider_identity_link):
don't delay links on the sink elements, it causes unnegotiated
links.
* gst/elements/gsttypefindelement.c:
(gst_type_find_element_base_init):
add our padtemplates, we indeed do have some.
* gst/elements/gsttypefindelement.c:
(gst_type_find_element_handle_event),
(gst_type_find_element_chain):
don't push data when typefinding failed.
* gst/gstpad.c: (gst_pad_link_fixate):
check that no fixate function returns empty caps.
* gst/gstpad.c: (gst_pad_push):
check that the link is negotiated before data gets pushed.
* tools/gst-register.c: (main):
don't assert (fixes#148283)
Original commit message from CVS:
2004-07-23 Zaheer Abbas Merali <zaheerabbas at merali dot org>
* gst/elements/gstmultifilesrc.c: (gst_multifilesrc_class_init),
(gst_multifilesrc_init), (gst_multifilesrc_set_property),
(gst_multifilesrc_get_property), (gst_multifilesrc_get):
* gst/elements/gstmultifilesrc.h:
Added newmedia property so it generates newmedia events between each
file when property is set, as well as fixed eos handling
Original commit message from CVS:
* gst/gststructure.c: (gst_structure_id_empty_new),
(gst_structure_empty_new): Set type field correctly.
* gst/gststructure.h: Check type field correctly.
* testsuite/caps/Makefile.am:
* testsuite/caps/structure.c: (test1), (main): Add a very small
test for structures.
Original commit message from CVS:
* docs/random/ds/0.9-suggested-changes: more comments
* tools/gst-launch.c: (idle_func): Fix hard-to-translate string.
Original commit message from CVS:
* gst/gstelementfactory.c: (gst_element_register):
set the factory in the class struct, so gst_element_get_factory
actually works
* gst/parse/grammar.y:
set element to playing when it gets unlocked as we can't rely on the
bin state - all elements in the bin state might still be locked in
NULL)
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.
Original commit message from CVS:
* testsuite/schedulers/147894-2.c: (queue_empty), (queue_filled),
(handoff_identity), (main):
* testsuite/schedulers/147894.c: (queue_empty), (queue_filled),
(handoff_identity), (main):
* testsuite/schedulers/Makefile.am:
* testsuite/schedulers/group_link.c: (main):
Show bug in scheduler when linking chain and loop based element
where the chain based element was not yet in a group.
Original commit message from CVS:
* gst/.cvsignore:
* gst/autoplug/.cvsignore:
* gst/elements/.cvsignore:
* gst/indexers/.cvsignore:
* libs/gst/bytestream/.cvsignore:
* libs/gst/control/.cvsignore:
* libs/gst/getbits/.cvsignore:
* testsuite/states/.cvsignore:
* testsuite/threads/.cvsignore:
keep this up to date, since I seem to be the only one who cares
about not missing files on commits
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
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
Original commit message from CVS:
* gst/gstelement.c: (gst_element_link_pads_filtered):
use correct sinkpad, if only sinkpad is specified, but not srcpad
(fixes#147889)
* gst/gstelement.c: (gst_element_set_state_func),
(gst_element_change_state): ref/unref the element, signal handlers
could get rid of the element otherwise
Original commit message from CVS:
* docs/random/ds/0.9-suggested-changes:
Make note about renaming fixed-list to array.
* gst/gstvalue.c: (gst_value_intersect_fixed_list),
(_gst_value_initialize):
Add array intersections.
* testsuite/caps/intersect2.c: (main):
Add test for array intersections.
Original commit message from CVS:
* testsuite/schedulers/142183-2.c: (handoff_identity), (main):
* testsuite/schedulers/142183.c: (handoff_identity), (main):
* testsuite/schedulers/Makefile.am:
Added testsuite for bug 142183 in its two incarnations. Refcount
is not increased for scheduled elements and threadsafe properties
mutexes are not properly unlocked.
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.
Original commit message from CVS:
* testsuite/schedulers/143777-2.c: (main):
* testsuite/schedulers/147713.c: (handoff_src), (handoff_sink),
(main):
* testsuite/schedulers/Makefile.am:
Added cleanup code to testcase 143777-2.
Added testcase to show bug 147713, does not really show the
deadlock as I can't figure out how to trigger it, but it does
demonstrate bad ordering in the scheduler.
Original commit message from CVS:
* gst/gstvalue.c: (gst_greatest_common_divisor):
use ints and return ints, fractions only use ints, too, so this
avoids accidently casting multiplications to unsigned
(gst_value_lcopy_fraction): it's ints, not uint32
(gst_value_set_fraction): disallow minint, multiplying and negation
are broken with it
(gst_value_fraction_multiply): fix to make large numbers work and get
rid of the assumption that the multiplication of two ints fits an
int64 - dunno if that's true for all systems
* testsuite/caps/Makefile.am:
* testsuite/caps/fraction-multiply-and-zero.c:
(check_multiplication), (check_equal), (zero_test), (main):
add tests for all the stuff above
* testsuite/caps/value_compare.c: (test1):
fix comment
* tests/.cvsignore:
* testsuite/caps/.cvsignore:
* testsuite/debug/.cvsignore:
* testsuite/dlopen/.cvsignore:
* testsuite/states/.cvsignore:
get up to date
Original commit message from CVS:
2004-07-16 Zaheer Abbas Merali <zaheerabbas at merali dot org>
* docs/manual/bins-api.xml:
* docs/manual/factories.xml:
* docs/manual/helloworld.xml:
* docs/manual/links-api.xml:
fixes for out of date info, incorrect info and grammar
Original commit message from CVS:
2004-07-15 Zaheer Abbas Merali <zaheerabbas at merali dot>
* docs/manual/pads.xml:
* docs/manual/pads-api.xml: grammar fix
Original commit message from CVS:
2004-07-15 Zaheer Abbas Merali <zaheerabbas at merali dot org>
* docs/manual/states.xml: Fix inconsistent information
Original commit message from CVS:
2004-07-15 Zaheer Abbas Merali <zaheerabbas at merali dot org>
* docs/manual/motivation.xml:
Bonobo is no longer "emerging" and added sentence regarding tcp plugins
Original commit message from CVS:
* gst/gstelement.h:
Don't GST_ERROR_OBJECT smpty strings - Solaris doesn't like NULL
strings.
* gst/gstelement.c (gst_element_class_init):
GError's are boxed, not objects
* gst/gstmarshal.list:
update list for the fixed error signal
Original commit message from CVS:
2004-07-14 Andy Wingo <wingo@pobox.com>
* gst/gsttag.c: Add a tag merge func for pointers. The header was
there all along, but the function wasn't. (guile-gstreamer's build
system uses the address of the function -- I wasn't actually
trying to use this.)
2004-07-13 Andy Wingo <wingo@pobox.com>
* gst/gstpad.c (gst_pad_try_set_caps): Naive link functions (such
as gst_pad_proxy_pad_link) just link to every other pad when they
are called. In the case where the graph has cycles, this will mean
that a call to try_set_caps will recurse. Allow this recursion
and return OK, while we wait for the first try_set_caps to give a
proper return value.
(gst_pad_link_call_link_functions): Since this function is the
only one to set the NEGOTIATING flag on a pad, if the flag is set
it means that the link functions have indirectly recursed. If this
happens, error out to avoid infinite recursion and an eventual
SEGV.
(gst_real_pad_class_init): Remove a crufty GtkObject comment.
(gst_pad_proxy_getcaps): Intersect the result with the template
caps to ensure that the return value is valid.
2004-07-11 Andy Wingo <wingo@pobox.com>
* gst/gstdata.c (gst_data_is_writable): s/>=/>/. If there is only
one refcount, the calling function is the owner of the buffer.
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.
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.
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.
Original commit message from CVS:
compatibility fixes for Solaris 8/gcc 2.95
* configure.ac:
include libintl libs in LDFLAGS
* gstvalue.c (gst_value_deserialize_buffer):
cast isxdigit stuff to int to silence compiler warning
Original commit message from CVS:
* gst/gsttypes.h:
get rid of GST_O_READONLY, GST_FILE_MODE_READ and
GST_FILE_MODE_WRITE, I don't want them in the exported headers. It
just causes support madness
* gst/elements/gstfilesrc.c: (gst_filesrc_open_file):
make it work without this
* gst/indexers/gstfileindex.c: (_file_index_id_save_entries),
(gst_file_index_commit):
glib IO channels don't want binary mode
* testsuite/bytestream/filepadsink.c: (main):
* testsuite/bytestream/test1.c: (read_param_file):
use "rb" instead of GST_FILE_MODE_READ, it works on POSIX systems
Original commit message from CVS:
* gst/gstelement.c: (gst_element_class_init),
(gst_element_set_state), (gst_element_set_state_func):
virutalize gst_element_set_state, use set_state member in class
struct that was already added in 0.7 for this.
* gst/gstbin.c: (gst_bin_foreach), (set_kid_state_func),
(gst_bin_change_state):
make gst_bin_foreach works similar to other foreach functions, plug
memleaks in it. Make functions using it work with the new approach.
Document gst_bin_foreach, so it can be exported if we want to
* gst/gstbin.c: (gst_bin_class_init), (gst_bin_set_state):
use virtualized set_state to make set_state on bins set the state of
all its children.
Original commit message from CVS:
* configure.ac:
require valgrind >= 2.1 (fixes Gentoo bug 53967, see
http://bugs.gentoo.org/show_bug.cgi?id=53967)
* gst/gstpad.c: (gst_pad_alloc_buffer):
allow buffer_alloc functions to return NULL and allocate a normal
buffer in that case
Original commit message from CVS:
* docs/manual/quotes.xml:
Keep the quotes file alive
* docs/random/ds/0.9-suggested-changes:
Add the suggestion of including a 'rowstride' as part of video
format caps
Original commit message from CVS:
* gst/gstclock.h:
GST_SECOND shouldn't cause a conversion to unsigned.
* testsuite/clock/.cvsignore:
* testsuite/clock/Makefile.am:
* testsuite/clock/signedness.c: (main):
make sure it never will again
Original commit message from CVS:
2004-07-11 Andy Wingo <wingo@pobox.com>
* gst/gstbin.c (gst_bin_add_func): If we're adding an element
whose state is higher than the bin state, raise the bin state to
ensure that bin state := highest child state.
Original commit message from CVS:
2004-07-11 Andy Wingo <wingo@pobox.com>
* gst/gstbin.c (gst_bin_foreach): New static function. Calls a
procedure on the children of a bin. Assumes that the procedure can
change the set of children.
(set_kid_state_func): New static function.
(gst_bin_change_state): Use gst_bin_foreach to call
set_kid_state_func. Fixes a bug: if a child had a state-change
handler that removes it from the bin, there would be a segfault.
Hopefully it should also work in the case where the state-change
handler on one child adds or removes other children. In any case,
fixes should go to gst_bin_foreach.
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.
Original commit message from CVS:
2004-07-09 Zaheer Abbas Merali <zaheerabbas at merali dot org>
* testsuite/threads/Makefile.am:
* testsuite/threads/threadg.c:
added test to check if problem when removing all elements from a
GstThread before setting GstThread state to NULL