[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#11822: 24.1; emacsclient terminal mode captures escape characters as
From: |
Eli Zaretskii |
Subject: |
bug#11822: 24.1; emacsclient terminal mode captures escape characters as text |
Date: |
Fri, 10 Aug 2012 11:08:21 +0300 |
> Date: Fri, 10 Aug 2012 10:46:23 +0300
> From: Eli Zaretskii <eliz@gnu.org>
> Cc: 11822@debbugs.gnu.org
>
> > Is there a reason recompute_basic_faces can't just clear the cache for its
> > own frame and leave the others alone?
>
> Are you saying that the used flag of the frame's cache is not a
> sufficient condition for clearing the face caches?
According to my reading of the code: The used flag being zero means
there are no cached faces in the cache. So clearing the cache in that
case doesn't sound like we are losing anything.
Moreover, clear_face_cache does not necessarily clear all the caches
of all frames, it does that only conditionally on this test:
if (clear_fonts_p
|| ++clear_font_table_count == CLEAR_FONT_TABLE_COUNT)
Otherwise, it only clears the GC of each face:
else
{
/* Clear GCs of realized faces. */
FOR_EACH_FRAME (tail, frame)
{
struct frame *f = XFRAME (frame);
if (FRAME_WINDOW_P (f))
clear_face_gcs (FRAME_FACE_CACHE (f));
}
clear_image_caches (Qnil);
}
Which of these happens for you? Also, can you show the backtraces of
each call to recompute_basic_faces?
In any case, it is only worth our while to talk about the call to
recompute_basic_faces if you time these calls and see that they indeed
take a significant amount of time. Do they?