Is ScAreaLink::RefreshHdl run too often?

Stephan Bergmann sbergman at
Wed Jun 30 12:53:34 UTC 2021

On 30/06/2021 14:36, Jan-Marek Glogowski wrote:
> Am 30.06.21 um 14:29 schrieb Stephan Bergmann:
>> On 29/06/2021 18:51, Noel Grandin wrote:
>>> I have seen the same problem in another application I maintain.
>>> My solution is that the repeat-delay time specified in my timers is 
>>> always the time between the end of one invocation of a timer, and the 
>>> start of the next invocation of that timer.
>> Yes, but I fail to understand how that ScAreaLink -> ScRefreshTimer -> 
>> AutoTimer -> Timer -> Task inheritance chain schedules invocation.
> Timer:: / Task::SetDeletionFlags()
> It deactivates the Task before processing it. For Auto* that is skipped,
> so the task remains active, its ImplSchedulerData::mnUpdateTime is 
> updated and it will be re-scheduled.

No, that unfortunately doesn't help me at all :)

Is my naive understanding correct that AutoTimer will call Invoke() 
about every GetTimeout() milliseconds?  (Rather than doing the next call 
to Invoke() at about GetTimeout() milliseconds after the previous call 
to Invoke() finished, as we would want here?)

Then what would be the common idiom, using Timer or AutoTimer, to 
implement the behavior that we want here (assuming that this is behavior 
that we want in various places, so there should be prior art to look at 
when tackling this case)?

More information about the LibreOffice mailing list