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