Commit graph

2238 commits

Author SHA1 Message Date
Mathieu Duponchelle f5073e4e58 composition: Prevent update sources from being added after seek. 2014-10-31 11:58:12 +01:00
Mathieu Duponchelle 4dd0b6fe14 composition: only flush stop after seek was set to READY. 2014-10-31 11:58:12 +01:00
Thibault Saunier ee54d98fe2 composition: Also ignore all messages from children tearing them to READY
At that stage elements should not be taken into account anymore. In some
spacial cases they can post ERROR messages (when trying to push sticky
events on flushing pads) on the bus. We actually do not care about those
issues at that exact point.
2014-10-31 11:58:12 +01:00
Thibault Saunier 8154a2c96f composition: Do not try to paused the task that could have been stopped
There was a race where we ended up trying to update the pipeline and
stop our children task at the exact moment where we were actually
setting its state to PAUSED. Take the composition lock and make sure
that can't happen
2014-10-31 11:58:11 +01:00
Thibault Saunier 463626ceae composition: Post messages on the bus when it updates itself
And properly set the seqnums of those messages so that the application,
parents have the exact information about what is going on and why.
2014-10-31 11:58:11 +01:00
Mathieu Duponchelle 9bd96f9770 composition: push flush events on the target. 2014-10-31 11:58:11 +01:00
Thibault Saunier 1d089e8c80 composition: No need for action signal to add and remove objects! 2014-10-31 11:58:11 +01:00
Mathieu Duponchelle 1c083281f9 composition: we're initialized even if update_pipeline returned FALSE 2014-10-31 11:58:11 +01:00
Mathieu Duponchelle 847360368a composition: reset base time to 0 when needed. 2014-10-31 11:58:11 +01:00
Mathieu Duponchelle 5c1b2133a5 composition: Forward flushes on initialization 2014-10-31 11:58:11 +01:00
Mathieu Duponchelle 494303c263 object: make the check for self commit work in a crappy way. 2014-10-31 11:58:11 +01:00
Mathieu Duponchelle baa7863da6 composition: use g_main_context_set_dispatches_per_iteration ()
Let's hope this gets merged ...
2014-10-31 11:58:11 +01:00
Mathieu Duponchelle c391310539 composition: set next_eos_seqnum when we get seeked too.
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:11 +01:00
Thibault Saunier 48ed8c6d0e gnl: Rely on the GstElement to properly handle their seqnums
Actually it is not exactly thread safe to tweak them ourself at the GNL
level.

Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:11 +01:00
Mathieu Duponchelle 114d63003e composition: Always return a value in GSourceFuncs
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:11 +01:00
Thibault Saunier ecf353e837 composition: Rename _flush_downstream to _have_to_seek_downstrean
Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:11 +01:00
Mathieu Duponchelle bdb74c5161 source: Remove cruft code to seek sources
We now seek on ready and thus do not need to do magic trying to seek
the source as soon as possible as we now do it even sooner than soon.

Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:11 +01:00
Thibault Saunier 4e84240630 composition: Do not remove all sources when stopping task
We only want to remove updates and seek, commits should be kept

Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:11 +01:00
Mathieu Duponchelle 01ee03bc1f composition: Don't send flushes downstream on pipeline update.
The code is still a bit redundant in set_current_bin_to_ready, need
to discuss.

Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:11 +01:00
Thibault Saunier ab2d2c6e4e composition: Remove locking making sure that we manipulate children in right places
Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:11 +01:00
Mathieu Duponchelle 435e807f17 composition: Avoid a race in PAUSED_TO_READY
as we were using our children list in there without locking them.

Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:11 +01:00
Thibault Saunier 4c7731ede3 composition: No need to reset the composition when going to PAUSED or NULL
Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:11 +01:00
Mathieu Duponchelle 08da7d6d2e composition: Make sure we have a peer when we send flushes downstream
And avoid leaks

Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:11 +01:00
Thibault Saunier c81ee05c41 composition: Minor cleanups 2014-10-31 11:58:11 +01:00
Thibault Saunier 2660f20cab composition: Take the objects lock when reseting the composition
Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:11 +01:00
Mathieu Duponchelle 3f0f41f79f composition: Remove the reset children method
as it is all already done in _empty_bin ()

Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:11 +01:00
Thibault Saunier 76bf900e82 composition: Set children caps only when they are added to the composition
No need to do it again on READY_TO_PAUSED

Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:11 +01:00
Mathieu Duponchelle 73274d8391 composition: No need to children state locked anymore
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:11 +01:00
Thibault Saunier c3ba1f7351 composition: cleanup dispose / finalize
Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:11 +01:00
Mathieu Duponchelle c669477819 composition: remove children warning drop HACK.
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:11 +01:00
Thibault Saunier 0b292ea2dc composition: remove now useless notion of GnlCompositionEntry.
Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:11 +01:00
Mathieu Duponchelle caa916e509 composition: cleanup GnlCompositionEntry before its actual removal.
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:10 +01:00
Thibault Saunier dcb7577673 composition: remove now useless prop "deactivated_elements_state".
Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:10 +01:00
Mathieu Duponchelle 3b749835e9 composition: Remove now useless flag "reset_time".
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:10 +01:00
Thibault Saunier 3e3ac438a4 composition: Remove now useless flag "stackvalid".
Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:10 +01:00
Mathieu Duponchelle f826851f3b composition: remove now useless "flushing" flag.
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:10 +01:00
Thibault Saunier 619b157ec3 composition: Do not use 'update' seek for now
This is not working in our new context and the seek do not work at
all when we set seek start to CLOCK_TIME_NONE and type to TYPE_NONE.

Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:10 +01:00
Mathieu Duponchelle 0951cc07e2 composition: Add the stack start/stop that has been set in dotfile name
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:10 +01:00
Thibault Saunier 8526ba6273 composition: Push flush events *downstream* not 'somewhere' :)
Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:10 +01:00
Mathieu Duponchelle 6dae885161 source: Atomically change the probe ID
Avoiding races where the probe would be removed 2 times

Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:10 +01:00
Thibault Saunier 7d9ed1f185 composition: Avoid deadlock when setting current bin to ready (on commit or seek)
We need to make sure that between the time we send flush_start/stop and
the time we actually set the bin to READY, no buffer got prerolled again
as it would lead to a deadlock trying to set the bin to READY (while
deactivating the pads, it needs the streaming lock, which would be
taken in that case)

Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:10 +01:00
Mathieu Duponchelle 92ff7ffa6c composition: Only sync state of current bin when activating new stack.
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:10 +01:00
Thibault Saunier c94dfdc688 composition: Start kindergarten task when going to READY.
And stop it when going back to NULL.

Update tests.

Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:10 +01:00
Mathieu Duponchelle 95a2e3b570 composition: add a new failing test for finalize on commit.
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:10 +01:00
Thibault Saunier 50959f9c10 composition: Make sure to remove all updates when updating the stack
The EOS we received before that became meaningless and thus the
associated GSources should no be triggered

Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:10 +01:00
Mathieu Duponchelle 72ec11ef06 composition: Avoid emitting COMMITED like crazy
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:10 +01:00
Thibault Saunier fe5ca968d0 composition: Add an enum to define why we update the stack
Making the code simpler to follow

Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:10 +01:00
Mathieu Duponchelle ccf9a3e3d7 composition: We are now waiting for caps to restart our task
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:10 +01:00
Thibault Saunier 82cbbf3b86 composition: Remove useless functions to add GSources and add debugging
Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:10 +01:00
Mathieu Duponchelle 668331561b composition: Remove DONE fixme
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:10 +01:00