Mercurial > emacs
comparison src/frame.c @ 90562:9d76594a90f0
(x_set_font_backend): Do more works that were done in
font_update_drivers before.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Tue, 01 Aug 2006 01:22:48 +0000 |
parents | 51be6e7b3881 |
children | 7f3f771c85fa |
comparison
equal
deleted
inserted
replaced
90561:73750c4e078a | 90562:9d76594a90f0 |
---|---|
3177 void | 3177 void |
3178 x_set_font_backend (f, new_value, old_value) | 3178 x_set_font_backend (f, new_value, old_value) |
3179 struct frame *f; | 3179 struct frame *f; |
3180 Lisp_Object new_value, old_value; | 3180 Lisp_Object new_value, old_value; |
3181 { | 3181 { |
3182 Lisp_Object frame; | |
3183 | |
3184 if (! NILP (new_value) | 3182 if (! NILP (new_value) |
3185 && !CONSP (new_value)) | 3183 && !CONSP (new_value)) |
3186 { | 3184 { |
3187 char *p0, *p1; | 3185 char *p0, *p1; |
3188 | 3186 |
3197 new_value); | 3195 new_value); |
3198 if (*p1) | 3196 if (*p1) |
3199 p1++; | 3197 p1++; |
3200 p0 = p1; | 3198 p0 = p1; |
3201 } | 3199 } |
3202 } | 3200 new_value = Fnreverse (new_value); |
3203 | 3201 } |
3204 font_update_drivers (f, new_value, FRAME_FONT_OBJECT (f)); | 3202 |
3203 if (! NILP (old_value) && ! NILP (Fequal (old_value, new_value))) | |
3204 return; | |
3205 | |
3206 if (FRAME_FONT_OBJECT (f)) | |
3207 { | |
3208 free_all_realized_faces (Qnil); | |
3209 Fclear_font_cache (); | |
3210 } | |
3211 | |
3212 new_value = font_update_drivers (f, new_value); | |
3213 if (NILP (new_value)) | |
3214 error ("No font backend available"); | |
3215 store_frame_param (f, Qfont_backend, new_value); | |
3216 | |
3217 if (FRAME_FONT_OBJECT (f)) | |
3218 { | |
3219 Lisp_Object frame; | |
3220 | |
3221 XSETFRAME (frame, f); | |
3222 x_set_font (f, Fframe_parameter (frame, Qfont), Qnil); | |
3223 ++face_change_count; | |
3224 ++windows_or_buffers_changed; | |
3225 } | |
3205 } | 3226 } |
3206 #endif /* USE_FONT_BACKEND */ | 3227 #endif /* USE_FONT_BACKEND */ |
3207 | 3228 |
3208 | 3229 |
3209 void | 3230 void |