(Xatom_*): Variables deleted.
Use slots in x_display_info structure instead.
(symbol_to_x_atom, x_atom_to_symbol):
New arg dpyinfo. All callers changed.
(xatoms_of_xselect): Function deleted.
(struct bp): New field heap.
(get_bloc, free_bloc, obtain, r_alloc_sbrk): Update new fields.
(reorder_bloc): New function.
(update_heap_bloc_correspondence):
Renamed from update_heap_free_pointers. Update new fields.
(relinquish): Add error check for new fields.
(x_make_frame_visible, x_make_frame_invisible):
Pass a frame ptr to x_sync.
(x_term_init): Init all the components of dpyinfo.
(x_display_info_for_display): New function.
(x_*_mod_mask): Variables deleted.
(x_x_to_emacs_modifiers, x_emacs_to_x_modifiers):
New arg dpyinfo; all callers changed.
Store the masks in that structure.
(icon_bitmap): Variable deleted.
(x_bitmap_icon): Use icon_bitmap_id in x_display_info.
(icon_font_info): Variable deleted.
(x_term_init): Set up `connection' field.
(x_find_modifier_meanings):
Arg is now struct x_display_info *.
(x_term_init): Return an x_display_info *.
Store all the data in it, including X atoms and xrdb.
Put the x_display_info structure on x_display_list.
Pass name as Lisp_Object.
(the_x_screen): Variable moved here.
(syms_of_xterm): Staticpro parts of the_x_screen.
(windowinfo): Variable deleted.
(Xatom_*): Variables deleted.
(x_iconify_frame, XTread_socket): Get atoms from the x_display_info,
(XTread_socket): Don't update Vmouse_depressed.
(x_mouse_grabbed): Variable deleted.
(note_mouse_highlight): Use grabbed field instead.
(XTmouse_position, XTread_socket): Likewise.
(x_calc_absolute_position, x_wm_set_size_hint):
Get screen height, width from the x_display_info structure.
(check_x_display_info): New function.
(Fx_create_frame): Use it.
(x_screen_planes): New function.
(EMACS_CLASS): Macro moved to xterm.h.
(Qdisplay): New variable.
(syms_of_xfns): Set it up.
(Fx_create_frame): Handle display parameter
which says where to get the FRAME_X_DISPLAY_INFO.
(x_display_info_for_name): New function.
(select_visual): New arg dpy.
(Fx_open_connection): Get dpyinfo from x_term_init.
Don't set up atoms, xrdb here. Pass name as Lisp_Object.
(the_x_screen): Variable moved to xterm.c.
(syms_of_xfns): Don't staticpro it here.
(xrdb): Variable deleted.
(Fx_get_resource): Use selected_frame's xrdb.
(x_get_resource_string): Likewise.
(Fx_open_connection): Store the atoms in x_display_info.
(hack_wm_protocols): New arg f. Get atoms from x_display_info.
(x_window): Get atoms from x_display_info.
(Vmouse_depressed, mouse_buffer_offset): Variables deleted.
(syms_of_xfns): Delete Lisp variables too.
(Fx_synchronize): Take frame as arg.
(Fx_close_current_connection): Take frame as arg. Error is not fatal.
(mouse_timestamp): Variable deleted.
(screen_visual, x_screen_planes): Variables deleted.
(x_screen, x_screen_height, x_screen_width): Variables deleted.
(Fx_open_connection): Don't set them here.
Put that info in the x_display_info structure.
(x_window): Get the visual from x_display_info structure.
(x_decode_color): Use n_planes from x_display_info structure.
Use FRAME_X_DISPLAY instead of x_current_display and XDISPLAY.
(x_in_use): New variable,
(check_x, using_x_p): Test x_in_use.
(Fx_open_connection): Set x_in_use.
(check_x_frame): New function.
(defined_color): New arg f specifies frame. Callers changed.
(x_decode_color): New arg f. All callers changed.
(Fx_color_values, Fx_color_defined_p): New arg FRAME.
Use check_x_frame.
(Fx_list_fonts): Use check_x_frame.
(EVENT_QUEUES_EMPTY, Ftrack_mouse, tracking_off): Changed accordingly.
(kbd_buffer_get_event): Let do_mouse_tracking specify the display
for mouse tracking.
selected_frame. Pass frame to x_stop_queuing_selection_requests and
x_start_queuing_selection_requests.
(x_own_selection, Fx_disown_selection_internal, Fx_selection_exists_p)
(Fx_store_cut_buffer_internal, Fx_get_cut_buffer_internal)
(Fx_rotate_cut_buffers_internal): Get display from selected_frame.
search_fastmap.
(syms_of_search): Initialize it.
(searchbuf_head): New variable.
(compile_pattern_1): Renamed from compile_pattern and made static.
Copy the regexp string in case the caller modifies it in place later.
(compile_pattern): New code, uses a cached entry if one is available.
The pattern buffer is now a return value instead of an arg.
(set_search_regs): Set num_regs directly, since there's no active
pattern buffer to pass to re_set_registers.
(Fstore_match_data): Likewise.
(Flooking_at): Use the new calling convention for compile_pattern.
(Fstring_match, fast_string_match, search_buffer): Likewise.
(struct heap): New slot `free'.
(obtain): Set `free' for new heap.
(get_bloc): Update `free'.
(find_heap): New function.
(update_heap_free_pointers): New function.
(resize_bloc, r_alloc_sbrk): Call update_heap_free_pointers.
(x_bitmap_icon): Arg FILE is now a Lisp_Object.
(x_iconify_frame, x_make_frame_visible): Supply FILE arg to it.
(x_bitmap_icon): Properly discard the previous bitmap.
(x_text_icon): Discard bitmap only if we have one.
(copy_face, merge_faces): Copy the pixmap_h and pixmap_w.
(intern_face): Store the stipple in the GC.
(unload_color): Really do free the color.
(free_frame_faces): Call unload_pixmap.
(Fset_face_attribute_internal): Handle background pixmap.
Destroy old pixmap when necessary.
(free_frame_faces): Destroy pixmaps.
(load_pixmap): New function.
(Fpixmap_spec_p): New function.
(syms_of_xfaces): Set up Lisp function pixmap-spec-p.
Set up Qpixmap_spec_p.
(compute_base_face): Don't set cached_index field.
(compute_base_face): Use FRAME_FOREGROUND_PIXEL,
FRAME_BACKGROUND_PIXEL, FRAME_FONT.
Support background stipple, and search path for bitmap files:
(x_set_icon_type): Pass x_bitmap_icon 2nd arg as Lisp_Object.
(x_icon_type): Return a Lisp_Object.
(x_destroy_bitmap, x_reference_bitmap): Take frame as arg. Callers changed.
(struct x_bitmap_record): New fields height, width, depth.
(x_create_bitmap_from_data): Fill in those fields.
(x_bitmap_height, x_bitmap_width, x_bitmap_pixmap): New functions.
(x_create_bitmap_from_file): Arg FILE is now a Lisp_Object.
Search Vbitmap_file_path for it. Fill in new fields.
(syms_of_xfns): Set up Vbitmap_file_path.