(fringe_bitmaps, fringe_faces): Change to pointers.
(max_fringe_bitmaps): New var.
(Fdefine_fringe_bitmap): Expand fringe_bitmaps and fringe_faces.
(init_fringe): Allocate fringe_bitmaps and fringe_faces.
(lookup_fringe_bitmap): New function.
(valid_fringe_bitmap_p, resolve_fringe_bitmap): Remove.
(Fdestroy_fringe_bitmap): Use lookup_fringe_bitmap.
Keep standard bitmaps in Vfringe_bitmaps.
(Fdefine_fringe_bitmap): Use lookup_fringe_bitmap.
(Fset_fringe_bitmap_face): Likewise.
(syms_of_fringe): DEFVAR_LISP it.
(valid_fringe_bitmap_p): Rename from valid_fringe_bitmap_id_p.
Change arg to Lisp_Object and fail if not an integer.
(get_fringe_bitmap_name, resolve_fringe_bitmap)
(destroy_fringe_bitmap): New functions.
(Fdestroy_fringe_bitmap): Change arg to bitmap symbol. Use
destroy_fringe_bitmap. Remove symbol from Vfringe_bitmaps and
clear its fringe property.
(init_fringe_bitmap): Use destroy_fringe_bitmap instead of
Fdestroy_fringe_bitmap.
(Fdefine_fringe_bitmap): Add BITMAP arg specifying new or existing
bitmap symbol; remove WHICH arg. Add symbol to Vfringe_bitmaps
and set fringe property. Signal error if no free slots.
(Fset_fringe_bitmap_face): Change arg to bitmap symbol.
(Ffringe_bitmaps_at_pos): Return bitmap symbols instead of numbers.
(syms_of_xfaces): Intern and staticpro it.
(Finternal_make_lisp_face, Finternal_set_lisp_face_attribute)
(Finternal_copy_lisp_face, update_face_from_frame_parameter):
Don't increment face_change_count when face has non-nil
face-no-inherit property.
blockinput.h.
(dosfns.o): Depend on blockinput.h, window.h, dispextern.h,
charset.h, and coding.h
(w16select.o): Depend on buffer.h, charset.h, coding.h, and
composite.h.
(term.o): Depend on window.h and keymap.h.
(abbrev.o): Depend on syntax.h.
(callint.o): Depend on keymap.h.
(casefiddle.o): Depend on charset.h and keymap.h.
(category.o): Depend on keymap.h.
(coding.o): Depend on dispextern.h.
(cmds.o): Depend on keyboard.h and keymap.h.
(dispnew.o): Depend on indent.h and intervals.h.
(doc.o): Depend on keymap.h.
(editfns.o): Depend on frame.h.
(emacs.o): Depend on dispextern.h.
(fileio.o): Don't depend on ccl.h.
(filelock.o): Depend on charset.h and coding.h.
(frame.o): Depend on w32term.h and macterm.h.
(insdel.o): Depend on region-cache.h.
(keyboard.o): Depend on keymap.h, w32term.h, and macterm.h.
(minibuf.o): Depend on $(INTERVALS_SRC) and keymap.h.
(search.o): Depend on $(INTERVALS_SRC).
(syntax.o): Depend on keymap.h, regex.h, and $(INTERVALS_SRC).
(window.o): Depend on keymap.h, blockinput.h, $(INTERVALS_SRC),
xterm.h, w32term.h, and macterm.h.
(xdisp.o): Depend on keyboard.h, $(INTERVALS_SRC), xterm.h,
w32term.h, and macterm.h.
(xfaces.o): Depend on keyboard.h, $(INTERVALS_SRC),
region-cache.h, xterm.h, w32term.h, and macterm.h.
(bytecode.o): Depend on dispextern.h, frame.h, and xterm.h.
(data.o): Depend on frame.h.
(fns.o): Depend on keymap.h, xterm.h, and blockinput.h.
(print.o): Depend on termchar.h and $(INTERVALS_SRC).
(lread.o): Depend on $(INTERVALS_SRC), termhooks.h, and coding.h.
(intervals.o): Depend on keymap.h.