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