mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-24 02:31:03 +00:00
42 lines
650 B
Text
42 lines
650 B
Text
|
|
||
|
blocking wait
|
||
|
-------------
|
||
|
|
||
|
- allocate a new clock entry
|
||
|
- add to list of pending sync waits
|
||
|
- do {
|
||
|
wait on entry
|
||
|
} while (entry != restart)
|
||
|
- free entry/remove from list
|
||
|
|
||
|
async wait
|
||
|
----------
|
||
|
|
||
|
- if no thread, start thread
|
||
|
- alloc a new clock entry
|
||
|
- add to list of pending async waits
|
||
|
- signal thread to restart timeouts
|
||
|
|
||
|
async thread
|
||
|
------------
|
||
|
|
||
|
while (true) {
|
||
|
if (no entry) wait for restart
|
||
|
do {
|
||
|
take first entry
|
||
|
wait on it
|
||
|
} while (entry != restart)
|
||
|
call entry signal function
|
||
|
free entry/remove from list
|
||
|
}
|
||
|
|
||
|
clock adjust
|
||
|
------------
|
||
|
|
||
|
- loop over sync/async entries
|
||
|
- restart all entries
|
||
|
|
||
|
|
||
|
|
||
|
|