[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#11822: 24.1; emacsclient terminal mode captures escape characters as
bug#11822: 24.1; emacsclient terminal mode captures escape characters as text
Fri, 10 Aug 2012 11:08:21 +0300
> Date: Fri, 10 Aug 2012 10:46:23 +0300
> From: Eli Zaretskii <address@hidden>
> Cc: address@hidden
> > 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:
|| ++clear_font_table_count == CLEAR_FONT_TABLE_COUNT)
Otherwise, it only clears the GC of each face:
/* 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));
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?