diff options
| author | Stefan Monnier | 2007-09-29 17:50:09 +0000 |
|---|---|---|
| committer | Stefan Monnier | 2007-09-29 17:50:09 +0000 |
| commit | ed0c79c6fd48156b8ff578433f66764c2b68bfed (patch) | |
| tree | f64896cc76591920f46335d82db297d6bf32441d /src | |
| parent | 7fbe8079e7d80102bafb75d334b788d3d3d94d73 (diff) | |
| download | emacs-ed0c79c6fd48156b8ff578433f66764c2b68bfed.tar.gz emacs-ed0c79c6fd48156b8ff578433f66764c2b68bfed.zip | |
(load_face_font, free_realized_face, clear_face_gcs):
Don't let signal handlers run when a GC is freed but not yet NULL'ed.
(x_free_gc): Remove BLOCK_INPUT since it's now redundant.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 6 | ||||
| -rw-r--r-- | src/xfaces.c | 14 |
2 files changed, 14 insertions, 6 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index ac56b160c88..d5ca272fe51 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,9 @@ | |||
| 1 | 2007-09-29 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 2 | |||
| 3 | * xfaces.c (load_face_font, free_realized_face, clear_face_gcs): | ||
| 4 | Don't let signal handlers run when a GC is freed but not yet NULL'ed. | ||
| 5 | (x_free_gc): Remove BLOCK_INPUT since it's now redundant. | ||
| 6 | |||
| 1 | 2007-09-28 Dan Nicolaescu <dann@ics.uci.edu> | 7 | 2007-09-28 Dan Nicolaescu <dann@ics.uci.edu> |
| 2 | 8 | ||
| 3 | * Makefile.in (lisp, shortlisp): Delete server.elc, it is not | 9 | * Makefile.in (lisp, shortlisp): Delete server.elc, it is not |
diff --git a/src/xfaces.c b/src/xfaces.c index b1fcf28d9c3..01ac364589f 100644 --- a/src/xfaces.c +++ b/src/xfaces.c | |||
| @@ -744,10 +744,9 @@ x_free_gc (f, gc) | |||
| 744 | struct frame *f; | 744 | struct frame *f; |
| 745 | GC gc; | 745 | GC gc; |
| 746 | { | 746 | { |
| 747 | BLOCK_INPUT; | 747 | eassert (interrupt_input_blocked); |
| 748 | IF_DEBUG (xassert (--ngcs >= 0)); | 748 | IF_DEBUG (xassert (--ngcs >= 0)); |
| 749 | XFreeGC (FRAME_X_DISPLAY (f), gc); | 749 | XFreeGC (FRAME_X_DISPLAY (f), gc); |
| 750 | UNBLOCK_INPUT; | ||
| 751 | } | 750 | } |
| 752 | 751 | ||
| 753 | #endif /* HAVE_X_WINDOWS */ | 752 | #endif /* HAVE_X_WINDOWS */ |
| @@ -777,10 +776,8 @@ x_free_gc (f, gc) | |||
| 777 | struct frame *f; | 776 | struct frame *f; |
| 778 | GC gc; | 777 | GC gc; |
| 779 | { | 778 | { |
| 780 | BLOCK_INPUT; | ||
| 781 | IF_DEBUG (xassert (--ngcs >= 0)); | 779 | IF_DEBUG (xassert (--ngcs >= 0)); |
| 782 | xfree (gc); | 780 | xfree (gc); |
| 783 | UNBLOCK_INPUT; | ||
| 784 | } | 781 | } |
| 785 | 782 | ||
| 786 | #endif /* WINDOWSNT */ | 783 | #endif /* WINDOWSNT */ |
| @@ -807,10 +804,9 @@ x_free_gc (f, gc) | |||
| 807 | struct frame *f; | 804 | struct frame *f; |
| 808 | GC gc; | 805 | GC gc; |
| 809 | { | 806 | { |
| 810 | BLOCK_INPUT; | 807 | eassert (interrupt_input_blocked); |
| 811 | IF_DEBUG (xassert (--ngcs >= 0)); | 808 | IF_DEBUG (xassert (--ngcs >= 0)); |
| 812 | XFreeGC (FRAME_MAC_DISPLAY (f), gc); | 809 | XFreeGC (FRAME_MAC_DISPLAY (f), gc); |
| 813 | UNBLOCK_INPUT; | ||
| 814 | } | 810 | } |
| 815 | 811 | ||
| 816 | #endif /* MAC_OS */ | 812 | #endif /* MAC_OS */ |
| @@ -1257,8 +1253,10 @@ load_face_font (f, face, c) | |||
| 1257 | face->overstrike = needs_overstrike; | 1253 | face->overstrike = needs_overstrike; |
| 1258 | if (face->gc) | 1254 | if (face->gc) |
| 1259 | { | 1255 | { |
| 1256 | BLOCK_INPUT; | ||
| 1260 | x_free_gc (f, face->gc); | 1257 | x_free_gc (f, face->gc); |
| 1261 | face->gc = 0; | 1258 | face->gc = 0; |
| 1259 | UNBLOCK_INPUT; | ||
| 1262 | } | 1260 | } |
| 1263 | } | 1261 | } |
| 1264 | else | 1262 | else |
| @@ -5256,8 +5254,10 @@ free_realized_face (f, face) | |||
| 5256 | free_face_fontset (f, face); | 5254 | free_face_fontset (f, face); |
| 5257 | if (face->gc) | 5255 | if (face->gc) |
| 5258 | { | 5256 | { |
| 5257 | BLOCK_INPUT; | ||
| 5259 | x_free_gc (f, face->gc); | 5258 | x_free_gc (f, face->gc); |
| 5260 | face->gc = 0; | 5259 | face->gc = 0; |
| 5260 | UNBLOCK_INPUT; | ||
| 5261 | } | 5261 | } |
| 5262 | 5262 | ||
| 5263 | free_face_colors (f, face); | 5263 | free_face_colors (f, face); |
| @@ -5421,8 +5421,10 @@ clear_face_gcs (c) | |||
| 5421 | struct face *face = c->faces_by_id[i]; | 5421 | struct face *face = c->faces_by_id[i]; |
| 5422 | if (face && face->gc) | 5422 | if (face && face->gc) |
| 5423 | { | 5423 | { |
| 5424 | BLOCK_INPUT; | ||
| 5424 | x_free_gc (c->f, face->gc); | 5425 | x_free_gc (c->f, face->gc); |
| 5425 | face->gc = 0; | 5426 | face->gc = 0; |
| 5427 | UNBLOCK_INPUT; | ||
| 5426 | } | 5428 | } |
| 5427 | } | 5429 | } |
| 5428 | #endif /* HAVE_WINDOW_SYSTEM */ | 5430 | #endif /* HAVE_WINDOW_SYSTEM */ |