Subject: bug#79141: 31.0.50; The tab-bar-format-align-right cache doesn't take face changes and per-frame faces into account

From: Eli Zaretskii <[email-masked]>
Date: Thu, 07 Aug 2025 07:42:34 +0300

> From: Daniel Mendler <[email-masked]>
> Cc: Steven Allen <[email-masked]>,  [email-masked],
>   [email-masked]
> Date: Wed, 06 Aug 2025 21:47:57 +0200
> 
> Eli Zaretskii <[email-masked]> writes:
> 
> >> 1. Have a per-frame cache.
> >> 2. Update a global `face-modification-tick' (similar to
> >> `buffer-modification-tick') whenever faces are updated, invalidating the
> >> cache whenever this changes.
> >
> > Please be advised that the current code invalidates the frame's face
> > cache and frees all the faces whenever some face is changed.  That's
> > because we don't currently track face dependencies, and so have no
> > idea what other faces will change as result of changing some face.  So
> > if you want a more efficient face cache, you first need to solve this
> > dependency-tracking issue.
> 
> Couldn't this face cache invalidation logic be used here? Whenever such
> a face cache invalidation happens, the proposed `face-modification-tick'
> variable would be incremented.

I don't quite understand what would that tick be used for, but we
already have in Emacs indications that the face cache was invalidated,
so maybe there's no need for introducing that tick.