+2000-05-29 Gerd Moellmann <gerd@gnu.org>
+
+ * xfaces.c (free_realized_faces): Block/unblock input.
+ (free_realized_multibyte_face): Ditto.
+
2000-05-29 Dave Love <fx@gnu.org>
* textprop.c (Qkeymap): New variable.
(get_local_map): Extra arg using it.
(Qkeymap): Declare.
- * lisp.h: (get_local_map: Don't declare here.
+ * lisp.h (get_local_map): Don't declare here.
2000-05-29 Kenichi Handa <handa@etl.go.jp>
int i, size;
struct frame *f = c->f;
+ /* We must block input here because we can't process X events
+ safely while only some faces are freed, or when the frame's
+ current matrix still references freed faces. */
+ BLOCK_INPUT;
+
for (i = 0; i < c->used; ++i)
{
free_realized_face (f, c->faces_by_id[i]);
clear_current_matrices (f);
++windows_or_buffers_changed;
}
+
+ UNBLOCK_INPUT;
}
}
struct face *face;
int i;
+ /* We must block input here because we can't process X events safely
+ while only some faces are freed, or when the frame's current
+ matrix still references freed faces. */
+ BLOCK_INPUT;
+
for (i = 0; i < cache->used; i++)
{
face = cache->faces_by_id[i];
free_realized_face (f, face);
}
}
+
+ /* Must do a thorough redisplay the next time. Mark current
+ matrices as invalid because they will reference faces freed
+ above. This function is also called when a frame is destroyed.
+ In this case, the root window of F is nil. */
if (WINDOWP (f->root_window))
{
clear_current_matrices (f);
++windows_or_buffers_changed;
}
+
+ UNBLOCK_INPUT;
}