2008/7/19 Dan Hipschman <dsh(a)linux.ucla.edu>:
+static void CALLBACK timer_queue_cb2(PVOID p, BOOLEAN timedOut) +{ + struct timer_queue_data1 *d = (struct timer_queue_data1 *) p; + ok(timedOut, "Timer callbacks should always time out\n"); + /* Wait until our own timer handle is set to avoid a pretty much + impossible race condition (better safe than sorry). */ + if (d->t) + if (++d->num_calls == d->max_calls)
You could change the above two lines to just "if (d->t && ++d->num_calls == d->max_calls)" and remove a level of indentation.
+ { + BOOL ret; + SetLastError(0xdeadbeef); + /* Note, XP SP2 does *not* do any deadlock checking, so passing + INVALID_HANDLE_VALUE here will just hang. */ + ret = pDeleteTimerQueueTimer(d->q, d->t, NULL); + ok(!ret, "DeleteTimerQueueTimer\n"); + todo_wine + ok(GetLastError() == ERROR_IO_PENDING, "DeleteTimerQueueTimer\n"); + } +} + +static void CALLBACK timer_queue_cb3(PVOID p, BOOLEAN timedOut) +{ + struct timer_queue_data1 *d = (struct timer_queue_data1 *) p; + ok(timedOut, "Timer callbacks should always time out\n"); + /* Wait until our own timer handle is set to avoid a pretty much + impossible race condition (better safe than sorry). */ + if (d->t) + if (++d->num_calls == d->max_calls)
Ditto.
+ { + /* Basically kill the timer since it won't have time to run + again. */ + BOOL ret = pChangeTimerQueueTimer(d->q, d->t, 10000, 0); + ok(ret, "ChangeTimerQueueTimer\n"); + } +} +
-- Rob Shearman