Merge pull request #106 from vibe-d/issue-104-unreferenced-periodic-timers
Fix unreferenced periodic timers
This commit is contained in:
commit
c5443f0fc8
|
@ -1103,7 +1103,7 @@ struct TimerCallbackHandler {
|
|||
cb();
|
||||
}
|
||||
|
||||
if (!eventDriver.timers.isUnique(timer))
|
||||
if (!eventDriver.timers.isUnique(timer) || eventDriver.timers.isPending(timer))
|
||||
eventDriver.timers.wait(timer, &handle);
|
||||
}
|
||||
}
|
||||
|
|
23
tests/issue-104-unreferenced-periodic-timer.d
Normal file
23
tests/issue-104-unreferenced-periodic-timer.d
Normal file
|
@ -0,0 +1,23 @@
|
|||
/+ dub.sdl:
|
||||
name "test"
|
||||
dependency "vibe-core" path=".."
|
||||
+/
|
||||
module test;
|
||||
|
||||
import vibe.core.core;
|
||||
|
||||
import core.memory;
|
||||
import core.time;
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
setTimer(10.seconds, { assert(false, "Event loop didn't exit in time."); });
|
||||
|
||||
// make sure that periodic timers for which no explicit reference is stored
|
||||
// are still getting invoked periodically
|
||||
size_t i = 0;
|
||||
setTimer(50.msecs, { if (i++ == 3) exitEventLoop(); }, true);
|
||||
|
||||
return runEventLoop();
|
||||
}
|
Loading…
Reference in a new issue