mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-26 04:26:14 +00:00
Loop the clock providers until we find one with a clock.
Original commit message from CVS: Loop the clock providers until we find one with a clock.
This commit is contained in:
parent
ce100a8211
commit
a358f61b5f
1 changed files with 9 additions and 2 deletions
|
@ -426,6 +426,7 @@ gst_scheduler_get_clock (GstScheduler *sched)
|
||||||
{
|
{
|
||||||
GstClock *clock = NULL;
|
GstClock *clock = NULL;
|
||||||
|
|
||||||
|
/* if we have a fixed clock, use that one */
|
||||||
if (GST_FLAG_IS_SET (sched, GST_SCHEDULER_FLAG_FIXED_CLOCK)) {
|
if (GST_FLAG_IS_SET (sched, GST_SCHEDULER_FLAG_FIXED_CLOCK)) {
|
||||||
clock = sched->clock;
|
clock = sched->clock;
|
||||||
|
|
||||||
|
@ -434,7 +435,9 @@ gst_scheduler_get_clock (GstScheduler *sched)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
GList *schedulers = sched->schedulers;
|
GList *schedulers = sched->schedulers;
|
||||||
|
GList *providers = sched->clock_providers;
|
||||||
|
|
||||||
|
/* try to get a clock from one of the schedulers we manage first */
|
||||||
while (schedulers) {
|
while (schedulers) {
|
||||||
GstScheduler *scheduler = GST_SCHEDULER (schedulers->data);
|
GstScheduler *scheduler = GST_SCHEDULER (schedulers->data);
|
||||||
|
|
||||||
|
@ -444,9 +447,13 @@ gst_scheduler_get_clock (GstScheduler *sched)
|
||||||
|
|
||||||
schedulers = g_list_next (schedulers);
|
schedulers = g_list_next (schedulers);
|
||||||
}
|
}
|
||||||
if (!clock && sched->clock_providers) {
|
/* still no clock, try to find one in the providers */
|
||||||
clock = gst_element_get_clock (GST_ELEMENT (sched->clock_providers->data));
|
while (!clock && providers) {
|
||||||
|
clock = gst_element_get_clock (GST_ELEMENT (providers->data));
|
||||||
|
|
||||||
|
providers = g_list_next (providers);
|
||||||
}
|
}
|
||||||
|
/* still no clock, use a system clock */
|
||||||
if (!clock && sched->parent_sched == NULL) {
|
if (!clock && sched->parent_sched == NULL) {
|
||||||
clock = gst_system_clock_obtain ();
|
clock = gst_system_clock_obtain ();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue