mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-26 23:14:46 +00:00
docs/random/wtay/poll-timeout: Small tweaks.
Original commit message from CVS: * docs/random/wtay/poll-timeout: Small tweaks.
This commit is contained in:
parent
bb0cd4e7f1
commit
2488c97ebd
2 changed files with 19 additions and 10 deletions
|
@ -1,3 +1,8 @@
|
|||
2008-11-13 Wim Taymans <wim.taymans@collabora.co.uk>
|
||||
|
||||
* docs/random/wtay/poll-timeout:
|
||||
Small tweaks.
|
||||
|
||||
2008-11-13 Wim Taymans <wim.taymans@collabora.co.uk>
|
||||
|
||||
* tests/old/testsuite/caps/intersection.c: (main):
|
||||
|
|
|
@ -76,12 +76,14 @@ waiting for id:
|
|||
/* we got unscheduled, see if it was because we timed out or some other
|
||||
* id got unscheduled */
|
||||
if (ret != 0) {
|
||||
lock
|
||||
/* some other id got unlocked */
|
||||
/* wait until it reads the fd and signals us */
|
||||
while (waiters)
|
||||
cond_wait ()
|
||||
unlock
|
||||
if (g_atomic_int_get (&waiters) > 0) {
|
||||
lock
|
||||
/* some other id got unlocked */
|
||||
/* wait until it reads the fd and signals us */
|
||||
while (waiters)
|
||||
cond_wait ()
|
||||
unlock
|
||||
}
|
||||
}
|
||||
else {
|
||||
/* we timed out update the status. */
|
||||
|
@ -89,16 +91,18 @@ waiting for id:
|
|||
break;
|
||||
}
|
||||
}
|
||||
else if (g_atomic_int_compare_and_exchange (&id->state, UNSCHEDULED, OK) {
|
||||
else if (g_atomic_int_get (&id->state) == UNSCHEDULED) {
|
||||
/* id became unscheduled, read the fd and broadcast */
|
||||
lock
|
||||
read (fd)
|
||||
waiters--
|
||||
g_atomic_int_dec (&waiters);
|
||||
cond_broadcast ()
|
||||
unlock
|
||||
id->state = UNSCHEDULED;
|
||||
break;
|
||||
}
|
||||
else {
|
||||
g_assert_not_reached ();
|
||||
}
|
||||
}
|
||||
|
||||
return id->state;
|
||||
|
@ -109,7 +113,7 @@ unschedule id:
|
|||
if (g_atomic_int_compare_and_exchange (&id->state, BUSY, UNSCHEDULED) {
|
||||
/* if it's busy waiting in poll, write to the fd */
|
||||
lock
|
||||
waiters++
|
||||
g_atomic_int_inc (&waiters)
|
||||
write (fd)
|
||||
unlock
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue