1. 25 Aug, 2014 1 commit
    • Dmitry Antipov's avatar
      One more minor cleanup of font subsystem. · 8661ebaa
      Dmitry Antipov authored
      * font.h (struct font_driver): Convert text_extents to
      return void because returned value is never actually used.
      * macfont.c (macfont_text_extents):
      * w32font.c (w32font_text_extents):
      * xftfont.c (xftfont_text_extents): Adjust to return void
      and assume that 'metrics' argument is always non-NULL.
      * ftfont.c (ftfont_text_extents):
      * xfont.c (xfont_text_extents): Likewise.  Avoid redundant memset.
      8661ebaa
  2. 09 Jul, 2014 1 commit
    • Dmitry Antipov's avatar
      Next minor cleanup of font subsystem. · 876d043f
      Dmitry Antipov authored
      * font.h (enum font_property_index): Remove FONT_ENTITY_INDEX (no
      users) and FONT_FORMAT_INDEX (set by a few font drivers but never
      really used).
      (FONT_ENTITY_NOT_LOADABLE, FONT_ENTITY_SET_NOT_LOADABLE): Remove;
      unused.
      * ftfont.h (ftfont_font_format): Remove prototype.
      * ftfont.c (ftfont_font_format): Remove; now unused.
      (ftfont_open):
      * nsfont.m (nsfont_open):
      * w32font.c (w32font_open_internal):
      * w32uniscribe.c (uniscribe_open):
      * xfont.c (xfont_open):
      * xftfont.c (xftfont_open): All users changed.
      876d043f
  3. 08 Jul, 2014 1 commit
  4. 04 Jul, 2014 1 commit
    • Dmitry Antipov's avatar
      * font.h (struct font_driver): Remove get_outline and free_outline; · 9d7b0167
      Dmitry Antipov authored
      not used by any font driver.
      * ftfont.c (ftfont_driver):
      * macfont.m (macfont_driver):
      * nsfont.m (nsfont_driver):
      * w32font.c (w32font_driver):
      * w32uniscribe.c (uniscribe_font_driver):
      * xfont.c (xfont_driver): Related users changed.
      * xselect.c (x_get_window_property): Use convenient xmalloc.
      Call to xfree only if some data was really allocated.
      9d7b0167
  5. 25 May, 2014 1 commit
    • Jan Djärv's avatar
      Simplify NS font driver draw, merge from Macport. · d6e8093a
      Jan Djärv authored
      * macfont.m (macfont_draw): Merge changes from Macport.
      
      * nsterm.m (ns_draw_glyph_string): Move isComposite and end from
      macfont.m, call draw with adjusted arguments so font drivers
      don't need to do that.
      
      * nsfont.m (nsfont_draw): Simplify as arguments are adjusted in
      nsterm.m now.
      d6e8093a
  6. 01 Jan, 2014 1 commit
  7. 13 Dec, 2013 1 commit
  8. 12 Dec, 2013 1 commit
    • Dmitry Antipov's avatar
      * font.h (struct font_entity) [HAVE_NS]: New field to record · cf86e18b
      Dmitry Antipov authored
      font driver which was used to create this entity.
      (struct font) [HAVE_WINDOW_SYSTEM]: New field to record
      frame where the font was opened.
      (font_close_object): Add prototype.
      * font.c (font_make_entity) [HAVE_NS]: Zero out driver field.
      (font_close_object): Not static any more.  Lost frame arg.
      Adjust comment and users.
      * alloc.c (cleanup_vector): Call font_close_object to adjust
      per-frame font counters correctly.  If HAVE_NS, also call
      driver-specific cleanup for font-entity objects.
      * ftfont.c (ftfont_open):
      * nsfont.m (nsfont_open):
      * w32font.c (w32font_open_internal):
      * xfont.c (xfont_open):
      * xftfont.c (xftfont_open): Save frame pointer in font object.
      * macfont.m (macfont_open): Likewise.
      (macfont_descriptor_entity): Save driver pointer to be able
      to call its free_entity routine when font-entity is swept.
      * ftxfont.c (ftxfont_open): Add eassert because frame
      pointer should be saved by ftfont_driver.open.
      cf86e18b
  9. 04 Dec, 2013 1 commit
  10. 25 Oct, 2013 1 commit
    • Dmitry Antipov's avatar
      Omit unused frame argument of font API's close function. · 78e0b35c
      Dmitry Antipov authored
      * font.h (struct font): Drop frame argument.  Adjust comment.
      * font.c (font_clear_cache, font_close_object): Adjust users.
      * ftfont.c (ftfont_close):
      * ftxfont.c (ftxfont_close):
      * macfont.m (macfont_close):
      * nsfont.m (nsfont_close):
      * w32font.c (w32font_close):
      * xfont.c (xfont_close):
      * xftfont.c (xftfont_close): Adjust driver-specific close
      functions, tweak comments and make functions safe if called
      more than once for the same font object.
      78e0b35c
  11. 22 Sep, 2013 1 commit
    • Jan Djärv's avatar
      Fix compiler warnings from XCode 5.0 on OSX. · fb83ea63
      Jan Djärv authored
      * nsterm.m (setMarkedText:selectedRange:):
      (deleteWorkingText):
      * nsmenu.m (addDisplayItemWithImage:idx:tag:helpText:enabled:):
      * nsfont.m (ns_get_covering_families, ns_findfonts): Cast NSLog
      argument to unsigned long to avoid warning.
      (nsfont_draw): Use 0.25 instead of  Fix2X (kATSItalicQDSkew).
      
      * process.c (wait_reading_process_output): Change int pnamelen to
      socklen_t.
      fb83ea63
  12. 15 Sep, 2013 1 commit
    • Jan Djärv's avatar
      Port the font backend from the Mac port. · 3fa2054e
      Jan Djärv authored
      * configure.ac: Add check for OSX 10.5, required for macfont.o.
      
      * etc/NEWS: Mention the macfont backend.
      
      * src/Makefile.in (NS_OBJ, SOME_MACHINE_OBJECTS): Add macfont.o.
      
      * src/font.c (syms_of_font): Call syms_of_macfont.
      
      * src/font.h: Declare syms_of_macfont.
      
      * src/nsfns.m: Include macfont.h.
      (Fx_create_frame): Register macfont driver, make a better default font.
      (Fns_popup_font_panel): Get font from macfont driver, if used.
      
      * src/nsfont.m (ns_tmp_flags, ns_tmp_font): Remove.
      (nsfont_open): Set font driver type.
      Set font->ascent and font->descent.  Figure out font instead of
      ns_tmp_font, and flags instead of ns_tmp_flags.
      Fix indentation. Remove call to ns_draw_text_decoration,
      moved to nsterm.
      
      * src/nsterm.m: Include macfont.h.
      (ns_tmp_flags, ns_tmp_font): Remove.
      (ns_compute_glyph_string_overhangs): Check for driver Qns.
      (ns_draw_glyph_string): Use local variables instead of ns_tmp_flags,
      ns_tmp_font.  Call ns_draw_text_decoration here instead of nsfont.m.
      (changeFont:): Fix code style.  Check for font driver type when
      getiing font.
      
      * src/nsterm.h (FONT_DESCENT, FONT_ASCENT): Define to (f)->ascent and
      (f)->descent.
      3fa2054e
  13. 13 Sep, 2013 1 commit
    • Dmitry Antipov's avatar
      Unify FRAME_window_system_DISPLAY_INFO macros between all ports. · aad3612f
      Dmitry Antipov authored
      All of them are replaced with FRAME_DISPLAY_INFO, defined in
      each port to reference the port-specific window system data.
      * msdos.h (FRAME_X_DISPLAY_INFO): Remove.
      (FRAME_DISPLAY_INFO): Define.
      * w32term.h (FRAME_W32_DISPLAY_INFO, FRAME_X_DISPLAY_INFO): Remove.
      (FRAME_DISPLAY_INFO): Define.  Adjust users.
      * xterm.h (FRAME_X_DISPLAY_INFO): Remove.
      (FRAME_DISPLAY_INFO): Define.  Adjust users.
      * frame.h (FRAME_RES_X, FRAME_RES_Y): Unify.
      * font.c, frame.c, gtkutil.c, image.c, menu.c, msdos.c, nsfns.m:
      * nsfont.m, nsterm.m, w32fns.c, w32font.c, w32menu.c, w32term.c:
      * w32xfns.c, widget.c, xdisp.c, xfaces.c, xfns.c, xfont.c, xmenu.c:
      * xselect.c, xterm.c: All related users changed.
      aad3612f
  14. 03 Sep, 2013 1 commit
  15. 09 Aug, 2013 1 commit
    • Dmitry Antipov's avatar
      Use xstrdup and build_unibyte_string where applicable. · 309f24d1
      Dmitry Antipov authored
      * alloc.c (xstrdup): Tiny cleanup.  Add eassert.
      * xfns.c (x_window):
      * xrdb.c (x_get_customization_string):
      * xterm.c (xim_initialize):
      * w32fns.c (w32_window): Use xstrdup.
      (w32_display_monitor_attributes_list):
      * emacs.c (init_cmdargs):
      * keyboard.c (PUSH_C_STR):
      * nsfont.m (nsfont_open):
      * sysdep.c (system_process_attributes):
      * w32.c (system_process_attributes):
      * xdisp.c (message1, message1_nolog): Use build_unibyte_string.
      309f24d1
  16. 03 Aug, 2013 1 commit
    • Dmitry Antipov's avatar
      Drop FRAME_PTR typedef. · a10c8269
      Dmitry Antipov authored
      * composite.c, font.c, font.h, fontset.c, fontset.h, frame.c, frame.h:
      * ftfont.c, ftxfont.c, gtkutil.c, gtkutil.h, image.c, keyboard.c:
      * menu.c, menu.h, msdos.c, nsfns.m, nsfont.m, nsmenu.m, nsterm.h:
      * nsterm.m, scroll.c, term.c, w32fns.c, w32font.c, w32font.h:
      * w32inevt.c, w32inevt.h, w32menu.c, w32notify.c, w32term.c, w32term.h:
      * w32uniscribe.c, w32xfns.c, widget.c, window.c, xdisp.c, xfaces.c:
      * xfns.c, xfont.c, xftfont.c, xmenu.c, xselect.c, xterm.c:
      All related users changed.
      a10c8269
  17. 01 Aug, 2013 1 commit
    • Dmitry Antipov's avatar
      Avoid redundant Lisp_Object <-> struct frame conversions in font API. · fdb396e2
      Dmitry Antipov authored
      * font.h (struct font_driver): Change list, match, and list_family
      functions to accept struct frame * as first arg.
      * font.c (font_score, font_compare, font_sort_entities): Remove
      prototypes.
      (font_sort_entities, font_list_entities, font_select_entity):
      (font_find_for_lface, Flist_fonts, Ffont_family_list): Adjust to
      match font API change.
      * xfont.c (xfont_list, xfont_match, xfont_list_family):
      * ftfont.c (ftfont_list, ftfont_match, ftfont_list_family):
      * ftxfont.c (ftxfont_list, ftxfont_match):
      * xftfont.c (xftfont_list, xftfont_match):
      * nsfont.m (nsfont_list, nsfont_match, nsfont_list_family):
      * w32font.c (w32font_list, w32font_match, w32font_list):
      (w32font_list_internal, w32_font_match_internal): Likewise.
      * xfaces.c (Fx_family_fonts): Adjust user.
      fdb396e2
  18. 16 Jul, 2013 1 commit
    • Paul Eggert's avatar
      Prefer list1 (X) to Fcons (X, Qnil) when building lists. · 6c6f1994
      Paul Eggert authored
      This makes the code easier to read and the executable a bit smaller.
      Do not replace all calls to Fcons that happen to create lists,
      just calls that are intended to create lists.  For example, when
      creating an alist that maps FOO to nil, use list1 (Fcons (FOO, Qnil))
      rather than list1 (list1 (FOO)) or Fcons (Fcons (FOO, Qnil), Qnil).
      Similarly for list2 through list5.
      * buffer.c (Fget_buffer_create, Fmake_indirect_buffer):
      * bytecode.c (exec_byte_code):
      * callint.c (quotify_arg, Fcall_interactively):
      * callproc.c (Fcall_process, create_temp_file):
      * charset.c (load_charset_map_from_file)
      (Fdefine_charset_internal, init_charset):
      * coding.c (get_translation_table, detect_coding_system)
      (Fcheck_coding_systems_region)
      (Fset_terminal_coding_system_internal)
      (Fdefine_coding_system_internal, Fdefine_coding_system_alias):
      * composite.c (update_compositions, Ffind_composition_internal):
      * dired.c (directory_files_internal, file_name_completion)
      (Fsystem_users):
      * dispnew.c (Fopen_termscript, bitch_at_user, init_display):
      * doc.c (Fsnarf_documentation):
      * editfns.c (Fmessage_box):
      * emacs.c (main):
      * eval.c (do_debug_on_call, signal_error, maybe_call_debugger)
      (Feval, eval_sub, Ffuncall, apply_lambda):
      * fileio.c (make_temp_name, Fcopy_file, Faccess_file)
      (Fset_file_selinux_context, Fset_file_acl, Fset_file_modes)
      (Fset_file_times, Finsert_file_contents)
      (Fchoose_write_coding_system, Fwrite_region):
      * fns.c (Flax_plist_put, Fyes_or_no_p, syms_of_fns):
      * font.c (font_registry_charsets, font_parse_fcname)
      (font_prepare_cache, font_update_drivers, Flist_fonts):
      * fontset.c (Fset_fontset_font, Ffontset_info, syms_of_fontset):
      * frame.c (make_frame, Fmake_terminal_frame)
      (x_set_frame_parameters, x_report_frame_params)
      (x_default_parameter, Fx_parse_geometry):
      * ftfont.c (syms_of_ftfont):
      * image.c (gif_load):
      * keyboard.c (command_loop_1):
      * keymap.c (Fmake_keymap, Fmake_sparse_keymap, access_keymap_1)
      (Fcopy_keymap, append_key, Fcurrent_active_maps)
      (Fminor_mode_key_binding, accessible_keymaps_1)
      (Faccessible_keymaps, Fwhere_is_internal):
      * lread.c (read_emacs_mule_char):
      * menu.c (find_and_return_menu_selection):
      * minibuf.c (get_minibuffer):
      * nsfns.m (Fns_perform_service):
      * nsfont.m (ns_script_to_charset):
      * nsmenu.m (ns_popup_dialog):
      * nsselect.m (ns_get_local_selection, ns_string_from_pasteboard)
      (Fx_own_selection_internal):
      * nsterm.m (append2):
      * print.c (Fredirect_debugging_output)
      (print_prune_string_charset):
      * process.c (Fdelete_process, Fprocess_contact)
      (Fformat_network_address, set_socket_option)
      (read_and_dispose_of_process_output, write_queue_push)
      (send_process, exec_sentinel):
      * sound.c (Fplay_sound_internal):
      * textprop.c (validate_plist, add_properties)
      (Fput_text_property, Fadd_face_text_property)
      (copy_text_properties, text_property_list, syms_of_textprop):
      * unexaix.c (report_error):
      * unexcoff.c (report_error):
      * unexsol.c (unexec):
      * xdisp.c (redisplay_tool_bar, store_mode_line_string)
      (Fformat_mode_line, syms_of_xdisp):
      * xfaces.c (set_font_frame_param)
      (Finternal_lisp_face_attribute_values)
      (Finternal_merge_in_global_face, syms_of_xfaces):
      * xfns.c (x_default_scroll_bar_color_parameter)
      (x_default_font_parameter, x_create_tip_frame):
      * xfont.c (xfont_supported_scripts):
      * xmenu.c (Fx_popup_dialog, xmenu_show, xdialog_show)
      (menu_help_callback, xmenu_show):
      * xml.c (make_dom):
      * xterm.c (set_wm_state):
      Prefer list1 (FOO) to Fcons (FOO, Qnil) when creating a list,
      and similarly for list2 through list5.
      6c6f1994
  19. 05 Jul, 2013 1 commit
    • Paul Eggert's avatar
      Remove duplicate #include directives. · 47ba6d43
      Paul Eggert authored
      * alloc.c [GC_MARK_STACK == GC_USE_GCPROS_CHECK_ZOMBIES]:
      * xfaces.c:
      Don't include stdio.h twice.
      * buffer.c [USE_MMAP_FOR_BUFFERS]:
      Don't include sys/types.h or stdio.h twice.
      * fileio.c [WINDOWSNT | MSDOS]: Don't include fcntl.h twice.
      * lread.c: Don't include coding.h twice.
      * nsfont.m: Don't include frame.h twice.
      * process.c [HAVE_RES_INIT]: Don't include <netinet/in.h> twice.
      * ralloc.c: Don't include <unistd.h> twice.
      * xdisp.c: Don't include font.h twice.
      * xterm.c: Don't include fontset.h twice.
      * xterm.h [USE_X_TOOLKIT]: Don't include X11/StringDefs.h twice.
      47ba6d43
  20. 17 Jun, 2013 1 commit
  21. 02 Jun, 2013 1 commit
    • Jan Djärv's avatar
      Update the GNUStep port so it works OK. Redraw and sizing bugs remain. · c0342369
      Jan Djärv authored
      * nextstep/templates/Info-gnustep.plist.in: Add NSDocumentClass EmacsDocument.
      
      * src/nsfns.m (x_set_foreground_color, x_set_background_color): Use
      EmacsCGFloat.
      (ns_implicitly_set_icon_type, Fx_create_frame): Make static, remove
      unused variables.
      (Fns_read_file_name): Keep track if panel is for save.  Use
      ns_filename_from_panel/ns_directory_from_panel.
      (Fns_list_services): delegate only used for COCOA.
      (Fns_convert_utf8_nfd_to_nfc): Remove warning for GNUStep.  Just
      return the input if GNUStep.
      (x_screen_planes): Remove.
      (Fxw_color_values): Use EmacsCGFloat
      (Fns_display_monitor_attributes_list): Only get screen number for
      Cocoa.
      (getDirectory, getFilename): Removed from EmacsOpenPanel and
      EmacsSavePanel.
      (EmacsOpenPanel:ok:): Use ns_filename_from_panel and
      ns_directory_from_panel.
      
      * src/nsfont.m (ns_attribute_fvalue, ns_spec_to_descriptor)
      (ns_charset_covers, ns_get_covering_families, nsfont_open):
      Use F suffix on floats.
      (ns_char_width): Returns CGFloat.
      (ns_ascii_average_width): w is CGFloat instead of float.
      (nsfont_draw): cbuf and c are unsigned. Cast to char* in call to
      DPSxshow.
      (ns_glyph_metrics): CGFloat instead of float.
      
      * src/nsimage.m (setXBMColor:, getPixelAtX:Y:): Use EmacsCGFloat.
      
      * src/nsmenu.m (ns_update_menubar): Make static.
      (x_activate_menubar): Surround with ifdef NS_IMPL_COCOA
      (fillWithWidgetValue:): Add cast to SEL for setAction.
      (addSubmenuWithTitle:forFrame:): Add cast to SEL for action.
      (update_frame_tool_bar): Update code for GNUStep.
      (clearAll): New method.
      (addDisplayItemWithImage:idx:tag:helpText:enabled:): Handle new tag
      argument. Call insertItemWithItemIdentifier when NS_IMPL_GNUSTEP. Move
      identifierToItem setObject and activeIdentifiers addObject before
      call to insertItemWithItemIdentifier.
      (validateVisibleItems): Fix indentation.
      (toolbarAllowedItemIdentifiers:): Return activeIdentifiers.
      (initWithContentRect:styleMask:backing:defer:): Add ClosableWindow and
      UtilityWindow to aStyle, remove call to setStyleMask.
      
      * src/nsselect.m (ns_get_local_selection): Remove unused variable type.
      
      * src/nsterm.h (EmacsCGFloat): Typedef for OSX and GNUStep when the size
      of CGFloat differs.
      (EmacsApp): New variable nextappdefined.  Declare sendFromMainThread
      when NS_IMPL_GNUSTEP.
      (EmacsDocument): Declare when NS_IMPL_GNUSTEP.
      (EmacsView): Remove unlockFocusNeedsFlush, add windowDidMove.
      (EmacsToolbar): Add clearAll.  Add tag argument to
      addDisplayItemWithImage.
      (EmacsSavePanel, EmacsOpenPanel): Remove getFilename and getDirectory.
      
      * src/nsterm.m: Include src/process.h if NS_IMPL_GNUSTEP.
      (ns_menu_bar_is_hidden, menu_will_open_state): Define only if
      NS_IMPL_COCOA.
      (x_set_cursor_type): Remove declaration.
      (ns_update_begin): Only use r and bp if NS_IMPL_COCOA.
      (ns_update_end, ns_focus, ns_unfocus): Remove GNUStep specific code.
      (x_set_window_size): Remove 3 pixels from toolbar if NS_IMPL_GNUSTEP.
      (ns_get_color): Use F suffix on float.
      (ns_color_to_lisp, ns_query_color): Use EmacsCGFloat.
      (ns_get_rgb_color): Remove.
      (x_set_frame_alpha): Move view inside NS_IMPL_COCOA.
      (note_mouse_movement): x and y are CGFloat.
      (ns_draw_fringe_bitmap): Remove unused rowY.
      Change #if to COCOA && >= 10_6.
      (ns_draw_window_cursor): Remove unused overspill.
      (ns_draw_underwave): width and x are EamcsCGFloat.
      (ns_draw_box): thickness is CGFloat.
      (ns_dumpglyphs_image): Change #if to COCOA && >= 10_6.
      (ns_send_appdefined): When NS_IMPL_GNUSTEP, redirect to main thread
      if not in main thread.
      (ns_get_pending_menu_title, ns_check_menu_open)
      (ns_check_pending_open_menu): Put inside #if COCOA && >= 10_5.
      (ns_term_init): Call catch_child_signal if NS_IMPL_GNUSTEP && SIGCHLD.
      (sendFromMainThread:): New method.
      (changeFont:): size is CGFloat.
      (keyDown:): Check for Delete when NS_IMPL_GNUSTEP.
      Disable warning about permanent text.
      (characterIndexForPoint:): Adjust return type depending on GNUStep
      version.
      (mouseDown:): delta is CGFloat.
      (updateFrameSize): Remove unised variable f.
      (initFrameFromEmacs): Move toggleButton inside NS_IMPL_COCOA.
      Cast float to EmacsCGFloat.
      (windowWillUseStandardFrame:defaultFrame:): Set maximized_height
      also to -1 when restoring.
      (windowDidExitFullScreen:): Put call to updateCollectionBehaviour
      inside NS_IMPL_COCOA.
      (toggleFullScreen:): Put call to toggleFullScreen inside
      NS_IMPL_COCOA.  Cast float to EmacsCGFloat.
      (setPosition:portion:whole:): por is CGFloat.
      (getMouseMotionPart:window:x:y:): Add F suffix to float.
      (mouseDown:): Use CGFloat.
      (mouseDragged:): Remove unised variable edge.
      (EmacsDocument): Implement for NS_IMPL_GNUSTEP.
      
      * src/process.c (catch_child_signal): New function.
      (init_process_emacs): Call it.
      
      * src/process.h (catch_child_signal): Declare.
      c0342369
  22. 14 May, 2013 1 commit
  23. 24 Jan, 2013 1 commit
  24. 13 Jan, 2013 2 commits
  25. 01 Jan, 2013 1 commit
  26. 09 Nov, 2012 2 commits
  27. 08 Nov, 2012 1 commit
  28. 21 Oct, 2012 1 commit
  29. 12 Oct, 2012 1 commit
  30. 09 Oct, 2012 1 commit
  31. 08 Oct, 2012 1 commit
  32. 23 Sep, 2012 1 commit
    • Paul Eggert's avatar
      Simplify and avoid signal-handling races. · 4d7e6e51
      Paul Eggert authored
      * nt/inc/ms-w32.h (emacs_raise): New macro.
      * src/alloc.c (die):
      * src/sysdep.c (emacs_abort) [HAVE_NTGUI]:
      Avoid recursive loop if there's a fatal error in the function itself.
      * src/atimer.c (pending_atimers):
      * src/blockinput.h: Don't include "atimer.h"; no longer needed.
      (interrupt_input_pending): Remove.  All uses removed.
      pending_signals now counts both atimers and ordinary interrupts.
      This is less racy than having three separate pending-signal flags.
      (block_input, unblock_input, totally_unblock_input, unblock_input_to)
      (input_blocked_p):
      Rename from their upper-case counterparts BLOCK_INPUT,
      UNBLOCK_INPUT, TOTALLY_UNBLOCK_INPUT, UNBLOCK_INPUT_TO,
      INPUT_BLOCKED_P, and turn into functions.  All uses changed.
      This makes it easier to access volatile variables more accurately.
      (BLOCK_INPUT_RESIGNAL): Remove.  All uses replaced by unblock_input ().
      (input_blocked_p): Prefer this to 'interrupt_input_blocked', as
      that's more reliable if the code is buggy and sets
      interrupt_input_blocked to a negative value.  All uses changed.
      * src/atimer.c (deliver_alarm_signal):
      Remove.  No need to deliver this to the parent; any thread can
      handle this signal now.  All uses replaced by underlying handler.
      * src/atimer.c (turn_on_atimers):
      * src/dispnew.c (handle_window_change_signal):
      * src/emacs.c (handle_danger_signal):
      * src/keyboard.c (kbd_buffer_get_event):
      Don't reestablish signal handler; not needed with sigaction.
      * src/blockinput.h (UNBLOCK_INPUT_TO, TOTALLY_UNBLOCK_INPUT)
      (UNBLOCK_INPUT_TO):
      Rework to avoid unnecessary accesses to volatile variables.
      (UNBLOCK_INPUT_TO): Now a function.
      (totally_unblock_input, unblock_input): New decls.
      * src/data.c (handle_arith_signal, deliver_arith_signal): Move to sysdep.c
      (init_data): Remove.  Necessary stuff now done in init_signal.
      * src/emacs.c, src/xdisp.c: Include "atimer.h", since we invoke atimer functions.
      * src/emacs.c (handle_fatal_signal, deliver_fatal_signal): Move to sysdep.c.
      (fatal_error_code): Remove; no longer needed.
      (terminate_due_to_signal): Rename from fatal_error_backtrace, since
      it doesn't always backtrace.  All uses changed.  No need to reset
      signal to default, since sigaction and/or die does that for us now.
      Use emacs_raise (FOO), not kill (getpid (), FOO).
      (main): Check more-accurately whether we're dumping.
      Move fatal-error setup to sysdep.c
      * src/floatfns.c: Do not include "syssignal.h"; no longer needed.
      * src/gtkutil.c (xg_get_file_name, xg_get_font):
      Remove no-longer-needed signal-mask manipulation.
      * src/keyboard.c, src/process.c (POLL_FOR_INPUT):
      Don't depend on USE_ASYNC_EVENTS, a symbol that is never defined.
      * src/keyboard.c (read_avail_input): Remove.
      All uses replaced by gobble_input.
      (Ftop_level): Use TOTALLY_UNBLOCK_INPUT rather than open code.
      (kbd_buffer_store_event_hold, gobble_input):
      (record_asynch_buffer_change) [USABLE_SIGIO]:
      (store_user_signal_events):
      No need to mess with signal mask.
      (gobble_input): If blocking input and there are terminals, simply
      set pending_signals to 1 and return.  All hooks changed to not
      worry about whether input is blocked.
      (process_pending_signals): Clear pending_signals before processing
      them, in case a signal comes in while we're processing.
      By convention callers now test pending_signals before calling us.
      (UNBLOCK_INPUT_TO, unblock_input, totally_unblock_input):
      New functions, to support changes to blockinput.h.
      (handle_input_available_signal): Now extern.
      (reinvoke_input_signal): Remove.  All uses replaced by
      handle_async_input.
      (quit_count): Now volatile, since a signal handler uses it.
      (handle_interrupt): Now takes bool IN_SIGNAL_HANDLER as arg.  All
      callers changed.  Block SIGINT only if not already blocked.
      Clear sigmask reliably, even if Fsignal returns, which it can.
      Omit unnecessary accesses to volatile var.
      (quit_throw_to_read_char): No need to restore sigmask.
      * src/keyboard.c (gobble_input, handle_user_signal):
      * src/process.c (wait_reading_process_output):
      Call signal-handling code rather than killing ourselves.
      * src/lisp.h: Include <float.h>, for...
      (IEEE_FLOATING_POINT): New macro, moved here to avoid duplication.
      (pending_signals): Now volatile.
      (syms_of_data): Now const if IEEE floating point.
      (handle_input_available_signal) [USABLE_SIGIO]:
      (terminate_due_to_signal, record_child_status_change): New decls.
      * src/process.c (create_process): Avoid disaster if memory is exhausted
      while we're processing a vfork, by tightening the critical section
      around the vfork.
      (send_process_frame, process_sent_to, handle_pipe_signal)
      (deliver_pipe_signal): Remove.  No longer needed, as Emacs now
      ignores SIGPIPE.
      (send_process): No need for setjmp/longjmp any more, since the
      SIGPIPE stuff is now gone.  Instead, report an error if errno
      is EPIPE.
      (record_child_status_change): Now extern.  PID and W are now args.
      Return void, not bool.  All callers changed.
      * src/sysdep.c (wait_debugging) [(BSD_SYSTEM || HPUX) && !defined (__GNU__)]:
      Remove.  All uses removed.  This bug should be fixed now in a
      different way.
      (wait_for_termination_1): Use waitpid rather than sigsuspend,
      and record the child status change directly.  This avoids the
      need to futz with the signal mask.
      (process_fatal_action): Move here from emacs.c.
      (emacs_sigaction_flags): New function, containing
      much of what used to be in emacs_sigaction_init.
      (emacs_sigaction_init): Use it.  Block nonfatal system signals that are
      caught by emacs, to make races less likely.
      (deliver_process_signal): Rename from handle_on_main_thread.
      All uses changed.
      (BACKTRACE_LIMIT_MAX): Now at top level.
      (thread_backtrace_buffer, threadback_backtrace_pointers):
      New static vars.
      (deliver_thread_signal, deliver_fatal_thread_signal):
      New functions, for more-accurate delivery of thread-specific signals.
      (handle_fatal_signal, deliver_fatal_signal): Move here from emacs.c.
      (deliver_arith_signal): Handle in this thread, not
      in the main thread, since it's triggered by this thread.
      (maybe_fatal_sig): New function.
      (init_signals): New arg DUMPING so that we can be more accurate
      about whether we're dumping.  Caller changed.
      Treat thread-specific signals differently from process-general signals.
      Block all signals while handling fatal error; that's safer.
      xsignal from SIGFPE only on non-IEEE hosts, treating it as fatal
      on IEEE hosts.
      When batch, ignore SIGHUP, SIGINT, SIGTERM if they were already ignored.
      Ignore SIGPIPE unless batch.
      (emacs_backtrace): Output backtrace for the appropriate thread,
      which is not necessarily the main thread.
      * src/syssignal.h: Include <stdbool.h>.
      (emacs_raise): New macro.
      * src/xterm.c (x_connection_signal): Remove; no longer needed
      now that we use sigaction.
      (x_connection_closed): No need to mess with sigmask now.
      (x_initialize): No need to reset SIGPIPE handler here, since
      init_signals does this for us now.
      
      Fixes: debbugs:12471
      4d7e6e51
  33. 15 Sep, 2012 1 commit
    • Paul Eggert's avatar
      Port better to POSIX hosts lacking _setjmp. · 0328b6de
      Paul Eggert authored
      * configure.ac (HAVE__SETJMP, HAVE_SIGSETJMP): New symbols.
      (_setjmp, _longjmp): Remove.
      * src/lisp.h: Include <setjmp.h> here, since we use its symbols here.
      All instances of '#include <setjmp.h>' removed, if the
      only reason for the instance was because "lisp.h" was included.
      (sys_jmp_buf, sys_setjmp, sys_longjmp): New symbols.
      Unless otherwise specified, replace all uses of jmp_buf, _setjmp,
      and _longjmp with the new symbols.  Emacs already uses _setjmp if
      available, so this change affects only POSIXish hosts that have
      sigsetjmp but not _setjmp, such as some versions of Solaris and
      Unixware.  (Also, POSIX-2008 marks _setjmp as obsolescent.)
      * src/image.c (_setjmp, _longjmp) [HAVE_PNG && !HAVE__SETJMP]: New macros.
      (png_load_body) [HAVE_PNG]:
      (PNG_LONGJMP) [HAVE_PNG && PNG_LIBPNG_VER < 10500]:
      (PNG_JMPBUF) [HAVE_PNG && PNG_LIBPNG_VER >= 10500]:
      Use _setjmp and _longjmp rather than sys_setjmp and sys_longjmp,
      since PNG requires jmp_buf.  This is the only exception to the
      general rule that we now use sys_setjmp and sys_longjmp.
      This exception is OK since this code does not change the signal
      mask or longjmp out of a signal handler.
      
      Fixes: debbugs:12446
      0328b6de
  34. 06 Sep, 2012 1 commit
    • Paul Eggert's avatar
      Use bool for booleans in font-related modules. · a864ef14
      Paul Eggert authored
      * font.c (font_intern_prop, font_style_to_value)
      (font_style_symbolic, font_parse_xlfd, font_parse_fcname)
      (generate_otf_features, font_check_otf_features, font_check_otf)
      (font_match_p, font_list_entities, font_at):
      * fontset.c (fontset_id_valid_p, reorder_font_vector
      (fontset_find_font, Fset_fontset_font)
      (face_suitable_for_char_p) [0]:
      * ftfont.c (fc_initialized, ftfont_get_open_type_spec)
      (ftfont_open, ftfont_text_extents, ftfont_check_otf):
      (m17n_flt_initialized, ftfont_shape_by_flt):
      * ftxfont.c (ftxfont_draw_bitmap, ftxfont_draw):
      * nsfont.m (nsfont_draw):
      * w32font.c (w32font_draw):
      * w32term.c (x_draw_glyphless_glyph_string_foreground):
      Use bool for booleans.
      * font.h: Adjust to above API changes.
      (struct font, struct font_driver, struct font_driver_list):
      Use bool for booleans.
      (struct font): Remove useless member encoding_type.
      All users removed.
      * fontset.c, xftfont.c: Omit unnecessary static decls.
      a864ef14
  35. 04 Sep, 2012 1 commit
    • Paul Eggert's avatar
      Simplify redefinition of 'abort' (Bug#12316). · 1088b922
      Paul Eggert authored
      Do not try to redefine the 'abort' function.  Instead, redo
      the code so that it calls 'emacs_abort' rather than 'abort'.
      This removes the need for the NO_ABORT configure-time macro
      and makes it easier to change the abort code to do a backtrace.
      * configure.ac (NO_ABRT): Remove.
      * admin/CPP-DEFINES (NO_ABORT): Remove.
      * nt/inc/ms-w32.h (w32_abort) [HAVE_NTGUI]: Remove.
      * src/.gdbinit: Just stop at emacs_abort, not at w32_abort or abort.
      * src/emacs.c (abort) [!DOS_NT && !NO_ABORT]:
      Remove; sysdep.c's emacs_abort now takes its place.
      * src/lisp.h (emacs_abort): New decl.  All calls from Emacs code to
      'abort' changed to use 'emacs_abort'.
      * src/msdos.c (dos_abort) [defined abort]: Remove; not used.
      (abort) [!defined abort]: Rename to ...
      (emacs_abort): ... new name.
      * src/sysdep.c (emacs_abort) [!HAVE_NTGUI]: New function, taking
      the place of the old 'abort' in emacs.c.
      * src/w32.c, src/w32fns.c (abort): Do not #undef.
      * src/w32.c (emacs_abort): Rename from w32_abort.
      1088b922
  36. 19 Aug, 2012 1 commit
  37. 17 Aug, 2012 1 commit
  38. 16 Aug, 2012 1 commit
    • Chong Yidong's avatar
      Fix average font width calculation on NS. · 179dad8e
      Chong Yidong authored
      * src/nsfont.m (nsfont_open): Similar to the Xft backend, set
      min_width to space_width and average_width to the average over
      printable ASCII characters.
      (ns_char_width): Code cleanup.
      (ns_ascii_average_width): New utility function.
      179dad8e