Subject: Re: bug#51490: Show an indicator when Emacs is busy somewhere in the Emacs window

From: Gregory Heytings <[email-masked]>
Date: Thu, 22 Sep 2022 15:57:04 +0000

>> I'm thinking aloud here, sorry if it isn't useful.  But I think we have 
>> at least one similar occurrence: XTflash.
>
> Which part of it seemed similar to what is being discussed here?
>

The fact that a portion of the frame is modified without a complete 
redisplay of the frame, through primitive drawing functions?  Am I missing 
something?  Would it not be possible to draw a busy indicator at a fixed 
position of the frame with XDrawRectangle for the background, followed by 
XDrawPoints for the foreground?

>> But would it be really necessary to access these faces each time the 
>> indicator would be drawn?  We could for example cache the values of 
>> these two colors somewhere
>
> Faces are already cached.  But for each cache there comes a time when it 
> must be flushed and/or refreshed, and during those times you cannot 
> safely use the cache.
>

What I had in mind is a more primitive cache mechanism: two C variables.

>> or decide to do something different and use a specific function to set 
>> these two colors without going through the whole face machinery, 
>> something like (set-busy-indicator-colors FOREGROUND BACKGROUND).
>
> As soon as we allow set-busy-indicator-colors or somesuch, we have a 
> problem with Lisp programs doing that exactly when there's time to 
> redraw the indicator.
>

We could specify that set-busy-indicator-colors is only meant to be used 
in init files, for example.