Commit graph

108 commits

Author SHA1 Message Date
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
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
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
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
Mathieu Duponchelle
c256fd1486 composition: Keep our GSources in a list making their thread safe
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:10 +01:00
Thibault Saunier
c022765529 composition: Concider the last action as DONE when we get a CAPS or SEGMENT
Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:10 +01:00
Mathieu Duponchelle
7976d55e56 composition: only forward our flush start / stops
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:10 +01:00
Mathieu Duponchelle
c6cfed94da composition: cleanup and enhance debug
Bye Bye STRAM START you were a brave little debug we will miss you.

Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:10 +01:00
Thibault Saunier
1dbf0b9146 composition: do not flush downstream when updating pipeline ourselves.
Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:10 +01:00
Mathieu Duponchelle
b7265ecde2 composition: Set update to TRUE when updating the stack because of EOS
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:10 +01:00