Mercurial > emacs
changeset 29284:d458dee20518
(free_realized_faces): Block/unblock input.
(free_realized_multibyte_face): Ditto.
author | Gerd Moellmann <gerd@gnu.org> |
---|---|
date | Mon, 29 May 2000 12:03:45 +0000 |
parents | 6068e9acd0ff |
children | d60b37a79c54 |
files | src/xfaces.c |
diffstat | 1 files changed, 19 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/xfaces.c Mon May 29 12:00:28 2000 +0000 +++ b/src/xfaces.c Mon May 29 12:03:45 2000 +0000 @@ -4663,6 +4663,11 @@ 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]); @@ -4682,6 +4687,8 @@ clear_current_matrices (f); ++windows_or_buffers_changed; } + + UNBLOCK_INPUT; } } @@ -4698,6 +4705,11 @@ 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]; @@ -4709,11 +4721,18 @@ 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; }