bitmap from that file.
(Fx_create_frame): Set icon_bitmap field to -1.
(struct x_bitmap_record): New structure type.
(x_bitmaps, x_bitmaps_size, x_bitmaps_last, x_bitmaps_free): New variables.
(x_allocate_bitmap_record): New function.
(x_reference_bitmap, x_create_bitmap, x_create_bitmap_from_file)
(x_destroy_bitmap, x_lookup_pixmap): New functions.
(line_dance, line_dance_len, line_dance_in_progress): New vars.
(XTins_del_lines): Don't do any X calls; just update the array.
(do_line_dance): New function. Do the X calls here.
(XTupdate_end, XTwrite_glyphs): Call do_line_dance.
(face_vector, nfaces, nfaces_allocated): Vars deleted.
(free_frame_faces): Free GCs in the computed faces.
Free the computed faces themselves.
(clear_face_cache): Renamed from clear_face_vector
and completely rewritten to free GCs in the computed faces.
(get_cached_face): Function deleted.
(build_face): Function deleted; code moved into intern_face.
(intern_face): Don't treat default and modeline faces specially.
(recompute_basic_faces): Call intern_face, not build_face.
(intern_face, clear_face_vector, load_font, unload_font)
(load_color, free_frame_faces, recompute_basic_faces): Use FRAME_X_DISPLAY.
superset type, not just markers.
(allocate_misc): New function, extracted from Fmake_marker.
(Fpurecopy): Check the substructure.
(clear_marks, mark_object, gc_sweep): Likewise.
type codes as well).
(XMARKER, SETMARKER, MARKERP): Check/set the new type field.
(XMISC, SETMISC, MISCP): New accessor macros for the superset type.
(struct Lisp_Free): New structure.
(Lisp_Misc_Free): Type code for that structure.
buffer's display table doesn't match the width table the cache was
built for.
(display_text_line): Use compute_motion to skip forward to the
left edge of the window when the window is hscrolled; this is
faster than rendering all the characters into the bit bucket when
the hscroll is large.
Doc fixes.
(display_count_lines): Call scan_buffer with new args.
(max, min): Make these functions, not macros; we'd like to pass
them arguments that would be bad to evaluate more than once.
(newline_cache_on_off): New function.
(scan_buffer): New argument END. Call newline_cache_on_off. If
this buffer's newline cache is enabled, consult it to see if we
need to scan a region for newlines, and store information in the
cache after doing so.
(find_next_newline): Pass new arg to scan_buffer.
(find_before_next_newline): New function.
(character_width, disptab_matches_widthtab, recompute_width_table,
width_run_cache_on_off): New functions.
(compute_motion): Call width_run_cache_on_off. If this buffer's
width run cache is enabled, consult it to see if we need to
traverse a region character-by-character; store information in the
cache after doing so. Call find_before_next_newline instead of
writing out an equivalent loop explicitly, to take advantage of
the newline cache.
Doc fixes.