RunLoop::Timer::isActive() is true for one-shot timers even when they're not active
Created attachment 403168 [details]
Looks like a variant of gtk had this bug too.
Created attachment 403223 [details]
Comment on attachment 403223 [details]
View in context: https://bugs.webkit.org/attachment.cgi?id=403223&action=review
> + if (!CFRunLoopTimerDoesRepeat(cfTimer))
> + timer->stop();
Could we have put this code inside TimerBase::fired instead? Or does it not have an efficient way to check if the timer is non-repeating?
If stop() would do the trick on GLib too that would be neat.
Glib already had the implicit stop behavior. It needed the inverse fix: be sure to restart if you are a repeating timer.
I do think we can/should do a shared implementation of isActive in TimerBase. Windows already has all the code we need; just need to migrate it. I hope to return and do that after I finish off callOnMainThread.
Committed r263783: <https://trac.webkit.org/changeset/263783>
All reviewed patches have been landed. Closing bug and clearing flags on attachment 403223 [details].
Reopening to attach new patch.
Created attachment 403265 [details]
Committed r263786: <https://trac.webkit.org/changeset/263786>
All reviewed patches have been landed. Closing bug and clearing flags on attachment 403265 [details].