1. 18 Jun, 2019 1 commit
    • YAMAMOTO Mitsuharu's avatar
      Support font driver supersession · 64767008
      YAMAMOTO Mitsuharu authored
      * src/font.c (font_update_drivers): If argument NEW_DRIVERS is t, then don't
      use superseded drivers.
      (syms_of_font) <Qfont_driver_superseded_by>: New DEFSYM.
      
      * src/ftfont.c (syms_of_ftfont) [HAVE_HARFBUZZ]:
      * src/ftcrfont.c (syms_of_ftcrfont) [HAVE_HARFBUZZ]:
      * src/w32font.c (syms_of_w32font) [HAVE_HARFBUZZ]:
      * src/xftfont.c (syms_of_xftfont) [HAVE_HARFBUZZ]: Make Harfbuzz variants
      supersede non-Harfbuzz ones.
      
      * src/w32fns.c (Fx_create_frame, w32_create_tip_frame): Remove font backend
      determination code.
      64767008
  2. 02 Jun, 2019 4 commits
    • YAMAMOTO Mitsuharu's avatar
      Implement the get_variation_glyphs method for FreeType >= 2.3.6 · 295572c6
      YAMAMOTO Mitsuharu authored
      * configure.ac: Check availability of FT_Face_GetCharVariantIndex.
      
      * src/ftfont.c (ftfont_variation_glyphs) [HAVE_FT_FACE_GETCHARVARIANTINDEX]:
      Add function implementation.
      
      * src/ftcrfont.c (ftcrfont_variation_glyphs)
      [HAVE_FT_FACE_GETCHARVARIANTINDEX]: Use function implementation for
      HAVE_OTF_GET_VARIATION_GLYPHS.
      
      * src/ftfont.c (ftfont_driver) [HAVE_FT_FACE_GETCHARVARIANTINDEX]:
      * src/xftfont.c (xftfont_driver) [HAVE_FT_FACE_GETCHARVARIANTINDEX]:
      * src/ftxfont.c (ftxfont_driver) [HAVE_FT_FACE_GETCHARVARIANTINDEX]:
      * src/ftcrfont.c (ftcrfont_driver) [HAVE_FT_FACE_GETCHARVARIANTINDEX]:
      Populate the get_variation_glyphs method.
      295572c6
    • YAMAMOTO Mitsuharu's avatar
      Revert previous commit · 2ae0c7a4
      YAMAMOTO Mitsuharu authored
      This reverts commit 1ab69630.
      It has a wrong commit message.
      2ae0c7a4
    • YAMAMOTO Mitsuharu's avatar
      Make fthbfont and derivatives use common HarfBuzz code in hbfont.c · 1ab69630
      YAMAMOTO Mitsuharu authored
      * src/font.h (fthbfont_shape, fthbfont_combining_capability)
      [HAVE_HARFBUZZ]: Remove prototypes.
      
      * src/ftfont.c: Don't include math.h.
      (uni_combining, uni_general, uni_mirroring, get_hb_unicode_funcs)
      (fthbfont_shape_by_hb, fthbfont_combining_capability, fthbfont_shape)
      [HAVE_HARFBUZZ]: Remove functions.
      
      * src/ftfont.c (syms_of_ftfont_for_pdumper) [HAVE_HARFBUZZ]:
      * src/xftfont.c (syms_of_xftfont_for_pdumper) [HAVE_HARFBUZZ]:
      * src/ftcrfont.c (syms_of_ftcrfont_for_pdumper) [HAVE_HARFBUZZ]: Use
      hbfont_shape and hbfont_combining_capability for fthbfont_shape and
      fthbfont_combining_capability, respectively.
      1ab69630
    • YAMAMOTO Mitsuharu's avatar
      Make fthbfont and derivatives use common HarfBuzz code in hbfont.c · ab1d5d40
      YAMAMOTO Mitsuharu authored
      * src/font.h (fthbfont_shape, fthbfont_combining_capability)
      [HAVE_HARFBUZZ]: Remove prototypes.
      
      * src/ftfont.c: Don't include math.h.
      (uni_combining, uni_general, uni_mirroring, get_hb_unicode_funcs)
      (fthbfont_shape_by_hb, fthbfont_combining_capability, fthbfont_shape)
      [HAVE_HARFBUZZ]: Remove functions.
      
      * src/ftfont.c (syms_of_ftfont_for_pdumper) [HAVE_HARFBUZZ]:
      * src/xftfont.c (syms_of_xftfont_for_pdumper) [HAVE_HARFBUZZ]:
      * src/ftcrfont.c (syms_of_ftcrfont_for_pdumper) [HAVE_HARFBUZZ]: Use
      hbfont_shape and hbfont_combining_capability instead of fthbfont_shape
      and fthbfont_combining_capability, respectively.
      ab1d5d40
  3. 23 May, 2019 1 commit
    • YAMAMOTO Mitsuharu's avatar
      Make Cairo build obey hint-style font setting (Bug#35781) · 03feb937
      YAMAMOTO Mitsuharu authored
      * src/ftfont.h (ftfont_open2): Remove extern.
      (ftfont_fix_match, ftfont_add_rendering_parameters)
      (ftfont_entity_pattern): Add externs.
      (struct font_info): Remove member bitmap_strike_index.
      (struct font_info) [USE_CAIRO]: Remove member ft_size_draw.  All uses removed.
      Add member bitmap_position_unit.
      
      * src/xftfont.c (xftfont_fix_match, xftfont_add_rendering_parameters): Move
      functions from here ...
      * src/ftfont.c (ftfont_fix_match, ftfont_add_rendering_parameters): ... to
      here.  All uses changed.
      * src/xftfont.c (xftfont_open): Extract FcPattern creation from font entity
      from here ...
      * src/ftfont.c (ftfont_entity_pattern):	... to here.
      * src/xftfont.c (syms_of_xftfont): Move DEFSYMs for Fontconfig's rendering
      parameters from here ...
      * src/ftfont.c (syms_of_ftfont): ... to here.
      
      * src/ftfont.c (ftfont_open, ftfont_open2): Undo introduction of
      bitmap_strike_index.  Merge functions into ftfont_open.
      
      * src/ftcrfont.c (ftcrfont_open): Align code with xftfont_open rather than
      ftfont_open.
      (ftcrfont_close): Likewise.
      (ftcrfont_has_char, ftcrfont_encode_char):
      (ftcrfont_otf_capability) [HAVE_LIBOTF]:
      (ftcrfont_variation_glyphs) [HAVE_OTF_GET_VARIATION_GLYPHS]: New functions.
      (ftcrfont_driver): Register them.
      (ftcrfont_get_bitmap, ftcrfont_anchor_point):
      (ftcrfont_shape) [HAVE_M17N_FLT && HAVE_LIBOTF]: Use bitmap_position_unit
      instead of bitmap_strike_index to screen bitmap fonts.
      (ftcrfont_get_bitmap, ftcrfont_anchor_point):
      (ftcrfont_otf_capability) [HAVE_LIBOTF]:
      (ftcrfont_shape) [HAVE_M17N_FLT && HAVE_LIBOTF]:
      (ftcrfont_variation_glyphs) [HAVE_OTF_GET_VARIATION_GLYPHS]: Temporarily
      assign ftcrfont_info->ft_size and call corresponding ftfont functions.
      (ftcrfont_draw): Don't flush cairo surface when exporting.
      03feb937
  4. 20 May, 2019 2 commits
    • YAMAMOTO Mitsuharu's avatar
    • Alexander Gramiak's avatar
      Replace XChar2b with unsigned in all font backends · a4fe9c70
      Alexander Gramiak authored
      The xfont backend using XChar2b in its API doesn't mean that we should
      use it everywhere else.
      
      * src/dispextern.h (glyph_string):
      * src/ftcrfont.c (ftcrfont_draw):
      * src/ftxfont.c (ftxfont_draw):
      * src/w32term.c (w32_draw_glyphless_glyph_string_foreground):
      * src/xdisp.c (init_glyph_string, get_char_face_and_encoding)
      (get_glyph_face_and_encoding, get_char_glyph_code)
      (fill_gstring_glyph_string, fill_stretch_glyph_string)
      (normal_char_ascent_descent, gui_get_glyph_overhangs)
      (compute_overhangs_and_x, gui_produce_glyphs):
      * src/xfont.c (xfont_get_pcm, xfont_chars_supported, xfont_open)
      (xfont_encode_char, xfont_text_extents, xfont_draw)
      * src/xftfont.c (xftfont_draw):
      * src/xterm.c (x_compute_glyph_string_overhangs)
      (x_draw_glyphless_glyph_string_foreground): Use unsigned over XChar2b.
      
      * src/nsgui.h:
      * src/w32gui.h:
      * src/xterm.h: Remove XChar2b, STORE_XCHAR2B, XCHAR2B_BYTE1, and
      XCHAR2B_BYTE2 typedefs and macros.
      
      * src/font.h (font_driver):
      (ftfont_text_extents)
      * src/ftcrfont.c (ftcrfont_text_extents):
      * src/ftfont.c (ftfont_text_extents):
      * src/macfont.m (macfont_text_extents):
      * src/nsfont.m (nsfont_text_extents):
      * src/w32font.h (w32_font_text_extents):
      * src/font.c (xfont_text_extents):
      * src/xftfont.c (xftfont_text_extents): Make code parameter const.
      a4fe9c70
  5. 14 May, 2019 1 commit
    • YAMAMOTO Mitsuharu's avatar
      Avoid artifacts in ftx and ftcr font backend drivers · 9b28a508
      YAMAMOTO Mitsuharu authored
      * src/ftcrfont.c (ftcrfont_open):
      * src/ftfont.c (ftfont_open2): Make font->height equal to sum of font->ascent
      and font->descent.  Respect :minspace property.
      (ftfont_open2): Remove redundant assignment.
      (syms_of_ftfont) <QCminspace>: New DEFSYM.
      9b28a508
  6. 04 May, 2019 1 commit
    • YAMAMOTO Mitsuharu's avatar
      Add new font backend drivers for text shaping by HarfBuzz · f208d5ae
      YAMAMOTO Mitsuharu authored
      * etc/NEWS: Mention new font backend drivers xfthb and ftcrhb.
      
      * src/font.h [HAVE_HARFBUZZ]: Include hb.h.
      (struct font_driver) [HAVE_HARFBUZZ]: New members begin_hb_font and
      end_hb_font.
      (ftfont_match, ftfont_list): Remove externs.
      (ftfont_match2, ftfont_list2):
      (fthbfont_combining_capability, fthbfont_begin_hb_font)
      (fthbfont_shape) [HAVE_HARFBUZZ]:
      (xfthbfont_driver) [HAVE_XFT && HAVE_HARFBUZZ]:
      (ftcrhbfont_driver) [USE_CAIRO && HAVE_HARFBUZZ]: Add externs.
      
      * src/ftcrfont.c (ftcrfont_list): Use ftfont_list2.
      (ftcrfont_match): Use ftfont_match2.
      (ftcrfont_open): Get font type from entity.
      (ftcrfont_open) [HAVE_HARFBUZZ]: Use HarfBuzz version of driver if specified.
      (ftcrfont_shape) [HAVE_HARFBUZZ]: Make shaping fail.
      (ftcrhbfont_list, ftcrhbfont_match)
      (ftcrhbfont_begin_hb_font) [HAVE_HARFBUZZ]: New functions.
      (ftcrhbfont_driver) [HAVE_HARFBUZZ]: New variable.
      (syms_of_ftcrfont_for_pdumper) [HAVE_HARFBUZZ]: Initialize and register it.
      (syms_of_ftcrfont) [HAVE_HARFBUZZ]: New symbol Qftcrhb.
      
      * src/ftfont.c: Include math.h for lround.
      (fthbfont_driver) [HAVE_HARFBUZZ]: New variable.
      (ftfont_get_hb_font) [HAVE_HARFBUZZ]: Remove function.
      (ftfont_list, ftfont_match): Make static.
      (ftfont_list2, ftfont_match2): New functions.
      (ftfont_open2) [HAVE_HARFBUZZ]: Use HarfBuzz version of driver if specified.
      (ftfont_open): Get font type from entity.
      (ftfont_shape, ftfont_combining_capability, ftfont_driver) [HAVE_HARFBUZZ]:
      Move HarfBuzz specific part from here ...
      (fthbfont_shape, fthbfont_combining_capability)
      (fthbfont_driver) [HAVE_HARFBUZZ]: ... to here.   New functions and variable.
      (fthbfont_begin_hb_font) [HAVE_HARFBUZZ]: New function.
      (fthbfont_shape_by_hb) [HAVE_HARFBUZZ]: Rename from ftfont_shape_by_hb.
      Don't take FreeType specific arguments ft_face and matrix.  Use begin_hb_font
      and end_hb_font font driver functions.  Use text_extents font driver functions
      instead of ftfont_glyph_metrics.
      (syms_of_ftfont) [HAVE_HARFBUZZ]: New symbol Qfreetypehb.
      (syms_of_ftfont_for_pdumper) [HAVE_HARFBUZZ]: Initialize and register
      fthbfont_drivert.
      
      * src/ftxfont.c (ftxfont_list): Use ftfont_list2.
      (ftxfont_match): Use ftfont_match2.
      (ftxfont_driver) [HAVE_HARFBUZZ]: Don't initialize shape member explicitly.
      
      * src/xfns.c (Fx_create_frame) [USE_CAIRO && HAVE_HARFBUZZ]:
      (Fx_create_frame) [HAVE_XFT && HAVE_HARFBUZZ]: Register HarfBuzz versions of
      font drivers.
      
      * src/xftfont.c (xftfont_list): Use ftfont_list2.
      (xftfont_match): Use ftfont_match2.
      (xftfont_open): Get font type from entity.
      (xftfont_open) [HAVE_HARFBUZZ]: Use HarfBuzz version of driver if specified.
      (xftfont_shape) [HAVE_HARFBUZZ]: Make shaping fail.
      (xfthbfont_list, xfthbfont_match, xfthbfont_begin_hb_font)
      (xfthbfont_end_hb_font) [HAVE_HARFBUZZ]: New functions.
      (xftfont_driver) [HAVE_HARFBUZZ]: Don't initialize shape member explicitly.
      (xfthbfont_driver) [HAVE_HARFBUZZ]: New variable.
      (syms_of_xftfont_for_pdumper) [HAVE_HARFBUZZ]: Initialize and register it.
      (syms_of_xftfont) [HAVE_HARFBUZZ]: New symbol Qxfthb.
      f208d5ae
  7. 20 Apr, 2019 2 commits
  8. 19 Apr, 2019 2 commits
  9. 18 Apr, 2019 1 commit
  10. 17 Apr, 2019 1 commit
    • YAMAMOTO Mitsuharu's avatar
      Use cairo_scaled_font_t object for text drawing and metrics calculation · acec59c9
      YAMAMOTO Mitsuharu authored
      * src/ftfont.h (struct font_info): Replace member cr_font_face of type
      cairo_font_face_t * with cr_scaled_font of type cairo_scaled_font_t *.
      * src/ftcrfont.c: Include math.h for floor, ceiling, and lround.
      (ftcrfont_glyph_extents): Use cairo_scaled_font_glyph_extents.
      (ftcrfont_open): Create cairo_scaled_font_t object and set it to
      cr_scaled_font member of struct font_info.
      (ftcrfont_close): Use cairo_scaled_font_destroy.
      (ftcrfont_draw): Use cairo_set_scaled_font.
      acec59c9
  11. 08 Feb, 2019 2 commits
    • Robert Pluim's avatar
      Unify three font info structures · 015a6e1d
      Robert Pluim authored
      * src/ftfont.h (struct font_info): New type, unifies similar types
      from ftcrfont.c, ftfont.c and xftfont.c
      * src/xftfont.c (struct xftfont_info): Remove, replace with struct
      font_info.  Adjust all uses.
      * src/ftcrfont.c (struct ftcrfont_info): Likewise.
      * src/ftfont.c (struct ftfont_info): Likewise.
      
      (cherry picked from commit 9e0d69b5)
      015a6e1d
    • Robert Pluim's avatar
      Unify three font info structures · 9e0d69b5
      Robert Pluim authored
      * src/ftfont.h (struct font_info): New type, unifies similar types
      from ftcrfont.c, ftfont.c and xftfont.c
      * src/xftfont.c (struct xftfont_info): Remove, replace with struct
      font_info.  Adjust all uses.
      * src/ftcrfont.c (struct ftcrfont_info): Likewise.
      * src/ftfont.c (struct ftfont_info): Likewise.
      9e0d69b5
  12. 15 Jan, 2019 1 commit
    • Daniel Colascione's avatar
      Add portable dumper · d12e5d00
      Daniel Colascione authored
      Add a new portable dumper as an alternative to unexec.  Use it by default.
      
      * src/dmpstruct.awk: New file.
      * src/doc.c (get_doc_string): use will_dump_p().
      * src/editfns.c (styled_format): silence compiler warning
      with UNINIT.
      * src/emacs-module.c (syms_of_module): staticpro ltv_mark.
      * src/emacs.c (gflags): new variable.
      (init_cmdargs): unwrap
      (string_starts_with_p, find_argument, dump_error_to_string)
      (load_pdump): new functions.
      (main): detect pdumper and --temacs invocation; actually load
      portable dump when detected; set gflags as appropriate; changes to
      init functions throughout to avoid passing explicit
      'initialized' argument.
      * src/eval.c (inhibit_lisp_code): remove unused variable.
      (init_eval_once_for_pdumper): new function.
      (init_eval_once): call it.
      * src/filelock.c: CANNOT_DUMP -> will_dump_p()
      * src/fingerprint-dummy.c: new file
      * src/fingerprint.h: new file
      * src/fns.c: CANNOT_DUMP -> will_dump_p(), etc.
      (weak_hash_tables): remove
      (hashfn_equal, hashfn_eql): un-staticify
      (make_hash_table): set new 'next_weak' hash table field; drop
      global weak_hash_tables logic.
      (copy_hash_table): drop global weak_hash_tables logic.
      (hash_table_rehash): new function.
      (hash_lookup, hash_put, hash_remove_from_table, hash_clear):
      rehash if needed.
      (sweep_weak_table): un-staticify; explain logic; bool-ify.
      (sweep_weak_hash_tables): remove function.
      * src/font.c (syms_of_font): remember pdumper stuff.
      * src/fontset.c (syms_of_fontset): remember pdumper stuff.
      * src/frame.c (make_initial_frame): don't reset Vframe_list.
      (init_frame_once_for_pdumper, init_frame_once): new functions.
      (syms_of_frame): remove redundant staticpro.
      * src/fringe.c (init_fringe_once_for_pdumper): new functin.
      (init_fringe_once): call it.
      * src/ftcrfont.c (syms_of_ftcrfont_for_pdumper): new function.
      (syms_of_ftcrfont): call it.
      * src/ftfont.c (syms_of_ftfont_for_pdumper): new function.
      (syms_of_ftfont): call it.
      * src/ftxont.c (syms_of_ftxfont_for_pdumper): new function.
      (syms_of_ftxfont): call it.
      * src/gmalloc.c: adjust for pdumper througout
      (DUMPED): remove weird custom dumped indicator.
      * src/gnutls.c (syms_of_gnutls): pdumper note for
      gnutls_global_initialized.
      * src/image.c (syms_of_image): add pdumper comment,
      initializer note.
      * src/insdel.c (prepare_to_modify_buffer_1): account
      for buffer contents possibly being in dump image.
      * src/keyboard.c (syms_of_keyboard_for_pdumper): new function.
      (syms_of_keyboard): staticpro more; call pdumper syms function.
      * src/lisp.h: add comments throughout
      (gflags): declare.
      (will_dump_p, will_bootstrap_p, will_dump_with_pdumper_p)
      (dumped_with_pdumper_p, will_dump_with_unexec_p)
      (dumped_with_unexec_p, definitely_will_not_unexec_p): new
      functions.
      (POWER_OF_2, ROUNDUP): move macros.
      (PSEUDOVECTOR_TYPE, PSEUDOVECTOR_TYPEP): take vectorlike header
      pointer instead of vector; constify.
      (Lisp_Hash_Table): add comment about need to rehash on access; add
      comment for next_weak.
      (HASH_KEY, HASH_VALUE, HASH_HASH, HASH_TABLE_SIZE): const-ify.
      (hash_table_rehash): declare.
      (hash_rehash_needed_p, hash_rehash_if_needed): new functions.
      (finalizers, doomed_finalizers): declare extern.
      (SUBR_SECTION_ATTRIBUTE): new macro.
      (staticvec, staticidx): un-static-ify.
      (sweep_weak_hash_tables): remove declaration.
      (sweep_weak_table): declare.
      (hashfn_eql, hashfn_equal): declare.
      (number_finalizers_run): new variable.
      (Vdead): externify when ENABLE_CHECKING.
      (gc_root_type): new enumeration.
      (gc_root_visitor): new struct.
      (visit_static_gc_roots): declare.
      (vectorlike_nbytes): declare.
      (vector_nbytes): define as trivial inline function wrapper for
      vectorlike_nbytes.
      (init_obarray_once): change signature.
      (primary_thread): extern-ify.
      (init_buffer): change signature.
      (init_frame_once): declare.
      * src/lread.c (readevalloop): adjust for new dumped predicates.
      (init_obarray_once): new function.
      (ndefsubr): new variable.
      (defsubr): increment it.
      (load_path_check): adjust for pdumper.
      (load_path_default): use pdumper functions; adjust for
      dump search.
      * src/macfont.m (macfont_init_font_change_handler): avoid
      shadowing global.
      (syms_of_macfont_for_pdumper): new function.
      (syms_of_macfont): call it.
      * src/menu.c (syms_of_menu): staticpro more stuff.
      * src/minibuf.c (Ftry_completion): rehash if needed.
      (init_minibuf_once_for_pdumper): new function.
      (init_minibuf_once): call it.
      * src/nsfont.m (syms_of_nsfns): staticpro more.
      * src/nsfont.m (syms_of_nsfont_for_pdumper): new function.
      (syms_of_nsfont): call it.
      * src/nsterm.m (syms_of_nsfont): remember pdumper stuff.
      * src/pdumper.c: new file.
      * src/pdumper.h: new file.
      * src/process.c (init_process_emacs): use new pdumper functions
      instead of CANNOT_DUMP.
      * src/profiler.c (syms_of_profiler_for_pdumper): new function.
      (syms_of_profiler_for_pdumper): call it.
      * src/search.c (syms_of_search_for_pdumper): new function.
      (syms_of_search_for_pdumper): call it.
      * src/sheap.c (bss_sbrk_did_unexec): remove.
      * src/sheap.h (bss_sbrk_did_unexec): remove.
      * src/syntax.c (syms_of_syntax): don't redundantly staticpro
      re_match_object.
      * src/sysdep.c: use will_dump_with_unexec_p() instead of bss
      hack thing.
      * src/syssignals.h (init_sigsegv): declare.
      * src/systime.h (init_timefns): remove bool from signature.
      * src/textprop.c (syms_of_textprop): move staticpro.
      * src/thread.c (main_thread_p): constify.
      * src/thread.h (main_thread_p): constify.
      * src/timefns.c (init_timefns): remove bool from signature.
      (syms_of_timefns_for_pdumper): new function.
      (syms_of_timefns): call it.
      * src/w32.c: rearrange code.
      * src/w32.h (w32_relocate): declare.
      * src/w32fns.c (syms_of_w32fns): add pdumper note.
      * src/w32font.c (syms_of_w32font_for_pdumper): new function.
      (syms_of_w32font): call it.
      * src/w32heap.c (using_dynamic_heap): new variable.
      (init_heap): use it.
      * src/w32menu.c (syms_of_w32menu): add pdumper note.
      * src/w32proc.c
      (ctrl_c_handler, mainCRTStartup, _start, open_input_file)
      (rva_to_section, close_file_data): move here.
      * src/w32uniscribe.c (syms_of_w32uniscribe_for_pdumper):
      new function.
      (syms_of_w32uniscribe): call it.
      * src/window.c (init_window_once_for_pdumper): new function.
      (init_window_once): call it; staticpro more stuff.
      * src/xfont.c (syms_of_xfont_for_pdumper): new function.
      (syms_of_xfont): call it.
      * src/xftfont.c (syms_of_xftfont_for_pdumper): new function.
      (syms_of_xftfont): call it.
      * src/xmenu.c (syms_of_xmenu_for_pdumper): new function.
      (syms_of_xmenu): call it.
      * src/xselect.c (syms_of_xselect_for_pdumper): new function.
      (syms_of_xselect): call it.
      * src/xsettings.c (syms_of_xsettings): add more pdumper notes.
      * src/term.c (syms_of_xterm): add pdumper note.
      
      * src/dispnew.c (init_faces_initial): new function.
      (init_display_interactive): rename from init_display; use
      will_dump_p instead of !initialized.  Initialize faces early for
      pdumper if needed.
      (init_display): new function.
      (syms_of_display_for_pdumper): new function.
      (syms_of_display): call it.
      
      * src/dbusbind.c (syms_of_dbusbind): Add TODO for bus reset
      on pdumper load.
      
      * src/data.c (Fdefalias): Use will_dump_p
      instead of Vpurify_flag.
      (Fmake_variable_buffer_local): silence compiler warning with -Og
      by making valcontents UNINIT.
      (arith_driver): silence compiler warning with UNINIT.
      
      * src/conf_post.h (ATTRIBUTE_SECTION): new macro.
      
      * src/composite.c (composition_gstring_put_cache): rehash hash
      table if needed.
      
      * src/coding.c (init_coding_once, syms_of_coding): remember
      pdumper stuff.
      
      * src/charset.h (charset_table_size, charset_table_user): declare.
      
      * src/charset.c (charset_table_used, charset_table_size): un-static.
      (init_charset_oncem, syms_of_charset): remember pdumper stuff.
      
      * src/category.c (category_table_version): remove obsolete
      variable.
      
      * src/callint.c (syms_of_callint): staticpro 'preserved_fns'
      (init_callproc): use will_dump_p instead of !CANNOT_DUMP.
      
      * src/bytecode.c (exec_byte_code): rehash table tables if needed
      
      * src/buffer.c (alloc_buffer_text, free_buffer_text): account for
      pdumper
      (init_buffer_once): add TODO; remember stuff for pdumper.
      (init_buffer): don't take initialized argument; adjust
      for pdumper.
      
      * src/atimer.c (init_atimer): initialize subr only if
      !initialized.
      
      * src/alloc.c: (vector_marked_p, set_vector_marked)
      (vectorlike_marked_p, set_vectorlike_marked, cons_marked_p)
      (set_cons_marked, string_marked_p, set_string_marked)
      (symbol_marked_p, set_symbol_marked, interval_marked_p)
      (set_interval_marked): new accessor routines.  Use them
      instead of raw GC access throughout.
      (Vdead): make non-static when ENABLE_CHECKING.
      (vectorlike_nbytes): rename of 'vector_nbytes'; take a vectorlike
      header as input instead of a vector.
      (number_finalizers_run): new internal C variable.
      (mark_maybe_object): check for pdumper objects.
      (valid_pointer_p): don't be gratuitously inefficient under rr(1).
      (make_pure_c_string): add support for size_byte = -2 mode
      indicating that string data points into Emacs image rodata.
      (visit_vectorlike_root): visits GC roots embedded in
      vectorlike objects.
      (visit_buffer_root): visits GC roots embedded in
      our totally-not-a-buffer buffer global objects.
      (visit_static_gc_roots): visit GC roots in the Emacs data section.
      (mark_object_root_visitor): root callback used for conventional GC
      marking
      (weak_hash_tables): new internal variable for tracking found weak
      hash tables during GC.
      (mark_and_sweep_weak_table_contents): new weak hash table marking.
      (garbage_collect_1): use new GC root visitor machinery.
      (mark_vectorlike): accept a vectorlike_header instead of a
      Lisp_Vector.
      (mark_frame, mark_window, mark_hash_table): new functions.
      (mark_object): initialize 'm'; check for pdumper objects and use
      new mark-bit accessors throughout.  Remove some object-specific
      marking code and move to helper functions above.
      (survives_gc_p): check for pdumper objects.
      (gc-sweep): clear pdumper mark bits.
      (init_alloc_once_for_pdumper): new helper function for early init
      called both during normal init and pdumper load.
      (init_alloc_once): pdumper integration.
      
      * src/Makefile.in: Rewrite dumping for pdumper; add pdumper.o;
      invoke temacs with --temacs command line option; build dmpstruct.h
      from dmpstruct.awk; stop relying on CANNOT_DUMP; clean up pdumper
      intermediate files during build.
      
      * nextstep/Makefile.in: build emacs.pdmp into NS packages
      
      * lisp/startup.el: account for new '--temacs' and '--dump-file'
      command line option.
      
      * lisp/loadup.el: rewrite early init to account for pdumper; use
      injected 'dump-mode' variable (set via the new '--temacs' option)
      instead of parsing command line.
      
      * lisp/cus-start.el: Check 'dump-mode' instead of 'purify-flag',
      since the new 'dump-mode'
      
      * lib-src/make-fingerprint.c: new program
      
      * lib-src/Makefile.in: built make-fingerprint utility program
      
      * configure.ac: Add --with-pdumper toggle to control pdumper
      support; add --with-unexec toggle to control unexec support.
      Add --with-dumping option to control which dumping strategy we use
      by default.  Adjust for pdumper throughout.  Check for
      posix_madvise.
      
      * Makefile.in: Add @DUMPING@ substitution; add pdumper mode.
      
      * .gitignore: Add make-fingerprint, temacs.in, fingerprint.c,
      dmpstruct.h, and pdumper dump files.
      d12e5d00
  13. 05 Jan, 2019 1 commit
    • Paul Eggert's avatar
      Improve GC+Cairo workaround · 99e2ad9e
      Paul Eggert authored
      Suggested by Eli Zaretskii (Bug#20890#31).
      * src/font.h (font_data_structures_may_be_ill_formed): New function.
      * src/ftfont.c (ftfont_close):
      * src/ftcrfont.c (ftcrfont_close): Use it.
      
      (cherry picked from commit d02fd482)
      99e2ad9e
  14. 01 Jan, 2019 1 commit
  15. 22 Dec, 2018 1 commit
    • Khaled Hosny's avatar
      Properly fix building with HarfBuzz and without libotf · 47ed5640
      Khaled Hosny authored
      HarfBuzz support does not depend on libotf, the build breakage when
      libotf is missing was because code guarded with:
      
       #if defined HAVE_M17N_FLT && defined HAVE_LIBOTF
      
      was incorrectly changed to:
      
       #if defined HAVE_M17N_FLT || defined HAVE_HARFBUZZ
      
      this is now properly fixed by making it:
      
       #if (defined HAVE_M17N_FLT && defined HAVE_LIBOTF) || defined HAVE_HARFBUZZ
      
      Other changes in previous commits were reverted.
      47ed5640
  16. 17 Dec, 2018 3 commits
  17. 14 Dec, 2018 2 commits
    • Robert Pluim's avatar
      Document font structure layout constraints · f14d5742
      Robert Pluim authored
      The layout of the initial members of ftcrfont_info must match
      ftfont_info
      
      * src/ftcrfont.c (struct ftcrfont_info): Likewise.
      
      * src/ftfont.c (struct ftfont_info): Document layout constraints.
      f14d5742
    • Ari Roponen's avatar
      Fix crash in the Cairo build · 2f721622
      Ari Roponen authored
      * src/ftcrfont.c (struct ftcrfont_info) [HAVE_HARFBUZZ]: New
      member 'hb_font'.  (Bug#33739)
      2f721622
  18. 09 Dec, 2018 1 commit
  19. 08 Aug, 2018 1 commit
    • Tom Tromey's avatar
      More macro renamings for bignum · d1ec3a0a
      Tom Tromey authored
      * src/alloc.c, src/bidi.c, src/buffer.c, src/buffer.h, src/bytecode.c,
      src/callint.c, src/callproc.c, src/casefiddle.c, src/casetab.c,
      src/category.c, src/ccl.c, src/character.c, src/character.h,
      src/charset.c, src/charset.h, src/chartab.c, src/cmds.c, src/coding.c,
      src/composite.c, src/composite.h, src/data.c, src/dbusbind.c,
      src/decompress.c, src/dired.c, src/dispextern.h, src/dispnew.c,
      src/disptab.h, src/doc.c, src/dosfns.c, src/editfns.c,
      src/emacs-module.c, src/emacs.c, src/eval.c, src/fileio.c,
      src/floatfns.c, src/fns.c, src/font.c, src/font.h, src/fontset.c,
      src/frame.c, src/frame.h, src/fringe.c, src/ftcrfont.c, src/ftfont.c,
      src/gfilenotify.c, src/gnutls.c, src/gtkutil.c, src/image.c,
      src/indent.c, src/insdel.c, src/intervals.c, src/json.c,
      src/keyboard.c, src/keymap.c, src/kqueue.c, src/lcms.c, src/lisp.h,
      src/lread.c, src/macros.c, src/marker.c, src/menu.c, src/minibuf.c,
      src/msdos.c, src/print.c, src/process.c, src/profiler.c, src/search.c,
      src/sound.c, src/syntax.c, src/syntax.h, src/sysdep.c, src/term.c,
      src/termhooks.h, src/textprop.c, src/undo.c, src/w32.c,
      src/w32console.c, src/w32fns.c, src/w32font.c, src/w32inevt.c,
      src/w32proc.c, src/w32select.c, src/w32term.c, src/w32term.h,
      src/w32uniscribe.c, src/window.c, src/xdisp.c, src/xfaces.c,
      src/xfns.c, src/xfont.c, src/xftfont.c, src/xmenu.c, src/xml.c,
      src/xrdb.c, src/xselect.c, src/xsettings.c, src/xterm.c, src/xwidget.c
      Rename XINT->XFIXNUM, XFASTINT->XFIXNAT, XUINT->XUFIXNUM.
      d1ec3a0a
  20. 04 Apr, 2018 1 commit
    • Paul Eggert's avatar
      Improve GC+Cairo workaround · d02fd482
      Paul Eggert authored
      Suggested by Eli Zaretskii (Bug#20890#31).
      * src/font.h (font_data_structures_may_be_ill_formed): New function.
      * src/ftfont.c (ftfont_close):
      * src/ftcrfont.c (ftcrfont_close): Use it.
      d02fd482
  21. 01 Jan, 2018 1 commit
  22. 13 Sep, 2017 1 commit
    • Paul Eggert's avatar
      Prefer HTTPS to FTP and HTTP in documentation · bc511a64
      Paul Eggert authored
      Most of this change is to boilerplate commentary such as license URLs.
      This change was prompted by ftp://ftp.gnu.org's going-away party,
      planned for November.  Change these FTP URLs to https://ftp.gnu.org
      instead.  Make similar changes for URLs to other organizations moving
      away from FTP.  Also, change HTTP to HTTPS for URLs to gnu.org and
      fsf.org when this works, as this will further help defend against
      man-in-the-middle attacks (for this part I omitted the MS-DOS and
      MS-Windows sources and the test tarballs to keep the workload down).
      HTTPS is not fully working to lists.gnu.org so I left those URLs alone
      for now.
      bc511a64
  23. 16 Jul, 2017 1 commit
    • Paul Eggert's avatar
      Use memset, not bzero · b740b02d
      Paul Eggert authored
      * src/ftcrfont.c (ftcrfont_glyph_extents): Use memset instead
      of the (less-portable) bzero.
      b740b02d
  24. 01 Jan, 2017 1 commit
  25. 12 Dec, 2016 1 commit
  26. 02 Dec, 2016 1 commit
    • Paul Eggert's avatar
      Make struct font_drivers read-only · ebb96114
      Paul Eggert authored
      This simplifies the code a bit, and makes the structs more
      shareable and less likely to become corrupt.
      * src/alloc.c (cleanup_vector):
      * src/font.c (valid_font_driver, font_prepare_cache)
      (font_finish_cache, font_get_cache, font_clear_cache)
      (register_font_driver, font_update_drivers):
      * src/font.h (struct font, struct font_driver_list)
      (valid_font_driver):
      struct font_drivers are now const.
      * src/font.c, src/ftcrfont.c, src/ftfont.c, src/nsfont.m, src/xfont.c:
      Omit no-longer-necessary decls.
      * src/ftcrfont.c (syms_of_ftcrfont):
      * src/ftxfont.c (syms_of_ftxfont):
      * src/xftfont.c (syms_of_xftfont):
      Omit no-longer-necessary initialization code.
      * src/ftcrfont.c (ftcrfont_driver):
      * src/ftfont.c (ftfont_driver):
      * src/ftxfont.c (ftxfont_driver):
      * src/macfont.m (macfont_driver):
      * src/nsfont.m (nsfont_driver):
      * src/xfont.c (xfont_driver):
      * src/xftfont.c (xftfont_driver):
      Use C99-style initializer for ease of maintenance, and make it const.
      * src/ftcrfont.c, src/ftxfont.c, src/xftfont.c:
      Refer to functions like ftfont_text_extents directly.
      * src/ftfont.c (ftfont_get_cache, ftfont_list, ftfont_list_family)
      (ftfont_has_char, ftfont_encode_char, ftfont_text_extents)
      (ftfont_get_bitmap, ftfont_anchor_point, ftfont_otf_capability)
      (ftfont_variation_glyphs, ftfont_filter_properties)
      (ftfont_combining_capability):
      * src/xfont.c (xfont_get_cache):
      Now extern, so that other modules’ struct font_drivers can use
      them directly.
      * src/macfont.m (macfont_descriptor_entity):
      * src/nsfont.m (nsfont_open):
      Use constant directly; this is clearer.
      ebb96114
  27. 10 Mar, 2016 1 commit
    • Paul Eggert's avatar
      Rework C source files to avoid ^( · 7352c6c6
      Paul Eggert authored
      Work around Bug#22884 by rewording comments and strings to avoid ‘(’
      at the start of a line unless it starts a function.  This change
      is a short-term hack; in the longer run we plan to fix cc-mode’s
      performance for C files that have ‘(’ at the start of a line in a
      comment or string.
      7352c6c6
  28. 01 Jan, 2016 1 commit
  29. 21 Oct, 2015 1 commit
    • Paul Eggert's avatar
      Include-file cleanup for src directory · 63cfb75f
      Paul Eggert authored
      Omit ‘#include "foo.h"’ unless the file needs foo.h (Bug#21707).
      In a few cases, add ‘#include "foo.h"’ if the file needs foo.h
      but does not include it directly.  As a general rule, a source
      file should include foo.h if it needs the interfaces that foo.h
      defines.
      * src/alloc.c: Don’t include process.h.  Include dispextern.h,
      systime.h.
      * src/atimer.c: Don’t include blockinput.h.
      * src/buffer.c: Include coding.h, systime.h.  Don’t include
      keyboard.h, coding.h.
      * src/callint.c: Don’t include commands.h, keymap.h.
      * src/callproc.c: Don’t include character.h, ccl.h, composite.h,
      systty.h, termhooks.h.
      * src/casetab.c: Don’t include character.h.
      * src/category.c: Don’t include charset.h, keymap.h.
      * src/ccl.h: Don’t include character.h.
      * src/character.c: Don’t include charset.h.
      * src/charset.c: Don’t include disptab.h.
      * src/chartab.c: Don’t include ccl.h.
      * src/cm.c: Don’t include frame.h, termhooks.h.
      * src/cmds.c: Don’t include window.h, dispextern.h.
      * src/coding.c: Don’t include window.h, frame.h.
      * src/composite.c: Include composite.h.  Don’t include window.h,
      font.h.
      * src/data.c: Don’t include syssignal.h, termhooks.h, font.h.
      * src/dbusbind.c: Don’t include frame.h.
      * src/decompress.c: Don’t include character.h.
      * src/dired.c: Don’t include character.h, commands.h, charset.h.
      * src/dispnew.c: Don’t include character.h, indent.h, intervals.h,
      process.h, timespec.h.  Include systime.h.
      * src/doc.c: Include coding.h.  Don’t include keyboard.h.
      * src/editfns.c: Include composite.h.  Don’t include frame.h.
      * src/emacs.c: Include fcntl.h, coding.h.  Don’t include
      commands.h, systty.h..
      * src/fileio.c: Don’t include intervals.h, dispextern.h.
      Include composite.h.
      * src/filelock.c: Don’t include character.h, systime.h.
      * src/fns.c: Don’t include time.h, commands.h, keyboard.h,
      keymap.h, frame.h, blockinput.h, xterm.h.  Include composite.h.
      * src/font.c: Include termhooks.h.
      * src/font.h: Don’t include ccl.h, frame.h.  Add forward decls of
      struct composition_it, struct face, struct glyph_string.
      * src/fontset.c: Don’t include buffer.h, ccl.h, keyboard.h,
      intervals.h, window.h, termhooks.h.
      * src/frame.c: Don’t include character.h, commands.h, font.h.
      * src/frame.h: Don’t include dispextern.h.
      * src/fringe.c: Don’t include character.h.
      * src/ftcrfont.c: Don’t include dispextern.h, frame.h,
      character.h, charset.h, fontset.h.
      * src/ftfont.c: Don’t include frame.h, blockinput.h, coding.h,
      fontset.h.
      * src/ftxfont.c: Don’t include dispextern.h, character.h,
      charset.h, fontset.h.
      * src/gfilenotify.c: Don’t include frame.h, process.h.
      * src/gtkutil.c: Include dispextern.h, frame.h, systime.h.
      Don’t include syssignal.h, buffer.h, charset.h, font.h.
      * src/gtkutil.h: Don’t include frame.h.
      * src/image.c: Include fcntl.h and stdio.h instead of sysstdio.h.
      Don’t include character.h.
      * src/indent.c: Don’t include keyboard.h, termchar.h.
      * src/inotify.c: Don’t include character.h, frame.h.
      * src/insdel.c: Include composite.h.  Don’t include blockinput.h.
      * src/intervals.c: Don’t include character.h, keyboard.h.
      * src/intervals.h: Don’t include dispextern.h, composite.h.
      * src/keyboard.c: Don’t include sysstdio.h, disptab.h, puresize.h.
      Include coding.h.
      * src/keyboard.h: Don’t incldue systime.h.
      * src/keymap.c: Don’t include charset.h, frame.h.
      * src/lread.c: Include dispextern.h and systime.h.
      Don’t include frame.h.  Include systime.h.
      * src/macros.c: Don’t include commands.h, character.h, buffer.h.
      * src/menu.c: Include character.h, coding.h.  Don’t include
      dispextern.h.
      * src/menu.h: Don’t include systime.h.
      * src/minibuf.c: Don’t include commands.h, dispextern.h, syntax.h,
      intervals.h, termhooks.h.
      * src/print.c: Include coding.h.  Don’t include keyboard.h,
      window.h, dispextern.h, termchar.h, termhooks.h, font.h.
      Add forward decl of struct terminal.
      * src/process.c: Don’t include termhooks.h, commands.h,
      dispextern.h, composite.h.
      * src/region-cache.c: Don’t include character.h.
      * src/scroll.c: Don’t include keyboard.h, window.h.
      * src/search.c: Don’t include category.h, commands.h.
      * src/sound.c: Don’t include dispextern.h.
      * src/syntax.c: Don’t include command.h, keymap.h.
      * src/sysdep.c: Don’t include window.h, dispextern.h.
      * src/systime.h: Use ‘#ifdef emacs’, not ‘#ifdef EMACS_LISP_H’,
      * src/term.c: Don’t include systty.h, intervals.h, xterm.h.
      * src/terminal.c: Include character.h.
      Don’t include charset.h, coding.h.
      * src/textprop.c: Don’t include character.h.
      * src/undo.c: Don’t include character.h, commands.h, window.h.
      * src/unexsol.c: Don’t include character.h, charset.h.
      * src/widget.c: Include widget.h.  Don’t include keyboard.h,
      window.h, dispextern.h, blockinput.h, character.h, font.h.
      * src/widgetprv.h: Don’t include widget.h.
      * src/window.c: Don’t include character.h, menu.h, intervals.h.
      * src/xdisp.c: Include composite.h, systime.h.  Don’t include
      macros.h, process.h.
      * src/xfaces.c: Don’t include charset.h, keyboard.h, termhooks.h,
      intervals.h.
      * src/xfns.c: Don’t include menu.h, character.h, intervals.h,
      epaths.h, fontset.h, systime.h, atimer.h, termchar.h.
      * src/xfont.c: Don’t include dispextern.h, fontset.h, ccl.h.
      * src/xftfont.c: Don’t include dispextern.h, character.h, fontset.h.
      * src/xgselect.c: Don’t include timespec.h, frame.h.
      Include systime.h.
      * src/xgselect.h: Don’t include time.h.
      Use a forward decl to struct timespec instead.
      * src/xmenu.c: Don’t include keymap.h, character.h, charset.h,
      dispextern.h.  Include systime.h.
      * src/xml.c: Don’t include character.h.
      * src/xrdb.c [USE_MOTIF]: Don’t include keyboard.h.
      * src/xselect.c: Don’t include dispextern.h, character.h,
      buffer.h, process.h.
      * src/xsmfns.c: Don’t include systime.h, sysselect.h.
      * src/xterm.c: Don’t include syssignal.h, charset.h, disptab.h,
      intervals.h process.h, keymap.h, xgselect.h.  Include composite.h.
      63cfb75f
  30. 15 Jun, 2015 1 commit