Subject: bug#73862: [PATCH] Add `header-line-active` and `header-line-inactive` faces.

From: Eli Zaretskii <[email-masked]>
Date: Tue, 24 Dec 2024 14:44:40 +0200

> From: Aaron Jensen <[email-masked]>
> Date: Mon, 23 Dec 2024 21:17:16 -0800
> Cc: [email-masked], [email-masked], [email-masked], 
> 	[email-masked], [email-masked]
> 
>  Are there any tradeoffs with this approach other than additional code complexity? Any
>  performance concerns? 
> 
>  I didn't time the code. It is a bit more expensive, but I don't know by how much. Maybe you could see
>  what happens in a session with lots and lots of faces and report?
> 
> Does the change impact anything more than the infrequent basic face calculation (whatever the thing was
> we were triggering by changing the default face size) or is it in the standard render path?

It affects realization of basic faces and also their lookup (by face
ID, which is what the display engine uses).  But these two operations
are not so rare.  In particular, any change of attributes of a "named
face" (a face identified by its symbol) will usually cause us free and
re-realize all of the frame's faces, including the basic ones.  Given
what current Lisp programs like to do, this happens surprisingly
frequently.  And face look up happens every time a window is
redisplayed.