• Jim Blandy's avatar
    * xterm.h: New section for declarations for xfaces.c. · 660ed669
    Jim Blandy authored
    	(init_frame_faces, free_frame_faces, intern_face,
    	face_name_id_number, same_size_fonts, recompute_basic_faces,
    	compute_char_face, compute_glyph_face): Declare these here.
    	* xfaces.c (same_size_fonts): We can now remove this extern
    	declaration.
    	* xfns.c (face_name_id_number): Likewise.
    	* xterm.c (intern_face): Likewise.
    
    	* xfaces.c (build_face, unload_font, free_frame_faces): Don't
    	forget to block input while making X calls.
    
    	Treat faces as structures specifying modifications to the frame's
    	parameters, rather than things which need to specify a complete
    	set of parameters by themselves.
    	* xfaces.c (init_frame_faces): Don't set up the two frame display
    	faces by querying the GC - just leave all their fields blank, and
    	call recompute_basic_faces, letting build_face do the work of
    	consulting the frame when necessary.
    	(recompute_basic_faces): New function.
    	(compute_base_faces): New function for obtaining the "identity"
    	for compute_char_face and compute_glyph_face.
    	(compute_char_face, compute_glyph_face): Call it, instead of copying
    	FRAME_DEFAULT_FACE.
    	* xfns.c (x_make_gc): No need to call init_frame_faces here.
    
    	* xfaces.c (intern_frame_face): This can be static.
    
    	* dispextern.h (struct face): New field - `copy', to help us with
    	resource allocation.
    	* xfaces.c (free_frame_faces): Do free the first two faces; don't
    	free anything from a face that's a copy.
    	(intern_frame_face): Mark every face we intern as a copy; its
    	resources are actually a combination of the real faces.
    	(Fset_face_attribute_internal): No need to check if we're trying
    	to free one of the frame's GC's; they never enter into the
    	picture.
    
    	* xfns.c (Fx_list_fonts): New function.
    	(face_name_id_number): Add extern declaration for this.
    	* xfaces.c (face_name_id_number): Make this externally visible,
    	and make the FRAME argument a FRAME_PTR, not a Lisp_Object.
    	(compute_char_face): Call face_name_id_number properly.
    660ed669
xfaces.c 27.2 KB