Why do you need to store an info if a timer was blocked? All you need to know is if there are any timers that need to be processed, for which comparing time stamps would be enough.
In addition to increasing it during task processing itself, we also have to do it from any wine-gecko callbacks that can lead to a message loop (calling into external code).
I don't think it has to be done in this MR and I'm sure it doesn't need to be a massive single commit. It looks questionable in its current form, but I didn't look deeper into that.