/*** Condition variables ***/
enum
{
- CLOCK_REALTIME=0, /* must be zero for VLC_STATIC_COND */
+ CLOCK_STATIC=0, /* must be zero for VLC_STATIC_COND */
CLOCK_MONOTONIC,
+ CLOCK_REALTIME,
};
static void vlc_cond_init_common (vlc_cond_t *p_condvar, unsigned clock)
void vlc_cond_signal (vlc_cond_t *p_condvar)
{
- if (!p_condvar->handle)
+ if (!p_condvar->clock)
return;
/* This is suboptimal but works. */
void vlc_cond_broadcast (vlc_cond_t *p_condvar)
{
- if (!p_condvar->handle)
+ if (!p_condvar->clock)
return;
/* Wake all threads up (as the event HANDLE has manual reset) */
{
DWORD result;
- if (!p_condvar->handle)
+ if (!p_condvar->clock)
{ /* FIXME FIXME FIXME */
msleep (50000);
return;
{
DWORD result;
- if (!p_condvar->handle)
- { /* FIXME FIXME FIXME */
- msleep (50000);
- return 0;
- }
-
do
{
vlc_testcancel ();
mtime_t total;
switch (p_condvar->clock)
{
+ case CLOCK_MONOTONIC:
+ total = mdate();
+ break;
case CLOCK_REALTIME: /* FIXME? sub-second precision */
total = CLOCK_FREQ * time (NULL);
break;
default:
- assert (p_condvar->clock == CLOCK_MONOTONIC);
- total = mdate();
- break;
+ assert (!p_condvar->clock);
+ /* FIXME FIXME FIXME */
+ msleep (50000);
+ return 0;
}
total = (deadline - total) / 1000;
if( total < 0 )