Subject: bug#20285: 25.0.50; blink-cursor-mode sometimes stops blinking

From: Stefan Monnier <[email-masked]>
Date: Fri, 10 Apr 2015 17:50:16 -0400

> I can at least confirm that `blink-cursor-timer-function' runs every 0.5
> seconds and toggles the visibility state of the cursor.  When that state
> doesn't appear on the screen, then what else can it be except for a
> skipped redisplay.

Of course, I don't know what it is, but it could be many other things,
such as a successful redisplay which somehow just didn't think the
relevant window needed to be refreshed.
Or a misinterpretation of the state of the cursor?
Or maybe the cursor state is indeed changed, but not in the right window?

> Maybe the interval is 0.8 seconds sometimes when emacs is under heavy
> load.  But the timer not being run is definitely not the cause for not
> blinking for up to 10 seconds here.
>> Have you tried to call `redisplay' explicitly from the blink-cursor
>> timer?
> Yes, then it blinks fine even under stress.

Great, so that would hint at redisplay being skipped, indeed.
Revision 9e77c1b7bcfd0807be7fe67daf73c2320e864309 changed the way we
decide when to skip a redisplay recently.  The change should make us
skip redisplay strictly less often rather than more often, but maybe
there's a problem in that change.

You could also use a pre-redisplay-function to count how many times
redisplay happensin that particular window.

        Stefan