Commit graph

1029 commits

Author SHA1 Message Date
Paul Eggert
c8eed90eb4 Avoid name clashes with static GnuTLS
Work around a bug in GnuTLS 3.7.11 and earlier: when built
statically, its mistakenly exports symbols hash_lookup and
hash_string, which collide with Emacs symbols of the same name,
preventing temacs from linking statically.  Problem reported by
Greg A. Woods (Bug#77476).

Because GnuTLS never uses hash_lookup or hash_string this issue
ordinarily doesn’t seem to prevent temacs from linking to GnuTLS
on GNU/Linux, as it’s linked dynamically and the dynamic linker
never needs to resolve references to either symbol.  However, I
suppose a clash or bug could occur even with dynamic linking if
Emacs later loads a module that uses either symbol.

Although GnuTLS should be fixed, Emacs should link statically to
current and older GnuTLS versions in the meantime, and it should
avoid potential problems with dynamic linking.  Renaming the two
clashing names is an easy way to do this.  For consistency with
the new name for hash_lookup, also rename hash_lookup_with_hash
and hash_lookup_get_hash.

* src/fns.c (hash_find_with_hash): Rename from hash_lookup_with_hash.
(hash_find): Rename from hash_lookup.
(hash_find_get_hash): Rename from hash_lookup_get_hash.
(hash_char_array): Rename from hash_string.
All uses changed.
2025-04-19 19:31:26 -07:00
Kazuhiro Ito
64b3ad5c76 Avoid defining unneeded variables on Cygw32
lisp/term/w32-win.el contained definitions of variables which
were not used on Cygw32.  It is now to split into two files,
common part and Windows native build specific part. The latter
is a new file, lisp/term/w32-nt.el.
* src/image.c (Qlibpng_version, Qlibgif_version)
(Qlibjpeg_version): Don't define on Cygw32 build.
* src/treesit.c (Qtree_sitter__library_abi): Ditto.

* lisp/term/w32-win.el (dynamic-library-alist, libpng-version)
(libgif-version, libjpeg-version, libgnutls-version)
(tree-sitter--library-abi, gui-backend-set-selection)
(gui-backend-get-selection, gui-backend-selection-owner-p)
(gui-selection-exists-p): Moved to lisp/term/w32-nt.el.
* lisp/term/w32-nt.el: New file, separated Windows native build
specific part from lisp/term/w32-win.el.
* lisp/loadup.el: Load term/w32-nt.el on Windows native build.
(Bug#75926)
2025-03-06 16:04:51 +02:00
Stefan Kangas
702cb123fa ; Fix typos 2025-02-22 14:48:29 +01:00
Stefan Kangas
bf97946d7d Merge branch 'scratch/no-purespace' into 'master' 2025-02-01 04:56:52 +01:00
Paul Eggert
c50e8c2424 Prefer make_formatted_string in svg_load_image
* src/image.c (svg_load_image): Prefer make_formatted_string to
snprintf, as this simplifies the code and does not truncate the
resulting string arbitrarily.
2025-01-26 23:05:51 -08:00
Paul Eggert
028fae9661 Simplify building of color names in image.c
* src/image.c (make_color_name): New function.
(image_background, image_build_heuristic_mask, png_load_body): Use it.
2025-01-26 23:05:51 -08:00
Paul Eggert
f885806fdf Simplify make_formatted_string API
From a suggestion by Pip Cet.
* src/alloc.c (make_formatted_string): Omit first argument,
to simplify the calling convention.  All callers changed.
* src/doprnt.c (doprnt): Also support %u.  Update doc.
2025-01-26 23:05:50 -08:00
Stefan Kangas
d3ada49a37 Minor image_error related cleanups
* src/image.c (image_create_x_image_and_pixmap_1): Avoid temporary
variable by passing the value directly to image_error.
(tiff_handler): Prefer image_error to add_to_log for local
consistency.
2025-01-22 23:42:13 +01:00
Paul Eggert
8ff7338fdd When debugging image.c, abort if silent truncation
* src/image.c (image_build_heuristic_mask, png_load_body):
Abort if snprintf truncated.  (If truncation is not possible
here we should use sprintf instead, as that simplifies
automatic runtime checking.)
2025-01-21 22:31:00 -08:00
Stefan Kangas
cdcfffd50a Prefer snprintf to sprintf in image.c
* src/image.c (image_background, image_build_heuristic_mask)
(png_load_body): Prefer snprintf to sprintf.
2025-01-22 00:49:50 +01:00
Pip Cet
d7bdaa4170 Handle unknown units provided by the rsvg library (bug#75712)
* src/image.c (svg_css_length_to_pixels): Restructure so GCC warns
about new enum members.  Add case for RSVG_UNIT_CH.  Warn about
unknown units discovered at runtime.
2025-01-21 19:04:11 +00:00
Stefan Kangas
251e3d2654 Replace call[1-8] with calln
Since the introduction of the 'calln' macro, the 'call1', 'call2', ...,
'call8' macros are just aliases for the former.  This is slightly
misleading and potentially unhelpful.  The number of arguments N can
also easily go out-of-synch with the used alias callN.  There is no
reason not to replace these aliases with using 'calln' directly.

To reduce the risk for mistakes, the tool Coccinelle was used to make
these changes.  See <https://coccinelle.gitlabpages.inria.fr/website/>.

* src/alloc.c, src/androidvfs.c, src/androidfns.c, src/buffer.c:
* src/callint.c, src/callproc.c, src/casefiddle.c, src/charset.c:
* src/chartab.c, src/cmds.c, src/coding.c, src/composite.c:
* src/data.c, src/dbusbind.c, src/dired.c, src/doc.c:
* src/emacs.c, src/eval.c, src/fileio.c, src/filelock.c:
* src/fns.c, src/frame.c, src/gtkutil.c, src/haikufns.c:
* src/haikumenu.c, src/image.c, src/insdel.c, src/intervals.c:
* src/keyboard.c, src/keymap.c, src/lisp.h, src/lread.c:
* src/minibuf.c, src/nsfns.m, src/nsselect.m, src/pgtkfns.c:
* src/pgtkselect.c, src/print.c, src/process.c, src/sort.c:
* src/syntax.c, src/textconv.c, src/textprop.c, src/undo.c:
* src/w32fns.c, src/window.c, src/xfaces.c, src/xfns.c:
* src/xmenu.c, src/xselect.c, src/xterm.c:
Replace all uses of 'call1', 'call2', ..., 'call8' with 'calln'.
2025-01-19 14:29:41 +01:00
Paul Eggert
fb434b8516 Always define image_compute_scale
* src/image.c (image_compute_scale): Define even if
! (defined HAVE_IMAGEMAGICK || defined HAVE_NATIVE_TRANSFORMS),
because it is always used.  Needed in platforms that lack all
those image libraries.
2025-01-18 23:28:11 -08:00
Paul Eggert
4da38c6321 Update copyright year to 2025
Run "TZ=UTC0 admin/update-copyright".
2025-01-01 07:39:17 +00:00
Alan Third
691c161a81 Make image cache aware of image-scaling-factor (bug#74725)
* src/dispextern.h (struct image): Add scale so it can be compared in
search_image_cache.
* src/image.c (search_image_cache): Calculate the scale factor and
compare with the cached value.
(image_compute_scale): Compute the image's scale factor and optionally
store it in the image struct.
(compute_image_size): Move scale calculation code into
image_compute_scale and use it.
2024-12-28 12:36:58 +00:00
Pip Cet
afd61deaae Pure storage removal: Remove purecopy hash table flag
* lisp/emacs-liqsp/comp.el (comp--jump-table-optimizable): Adjust
comment.
* src/category.c (hash_get_category_set):
* src/emacs-module.c (syms_of_module):
* src/fns.c (make_hash_table): Remove 'purecopy' flag and update
docstring.
(Fmake_hash_table): Ignore ':purecopy' argument.
* src/frame.c (make_frame):
* src/image.c (xpm_make_color_table_h):
* src/lisp.h (struct Lisp_Hash_Table): Drop 'purecopy' flag.
* src/pdumper.c (dump_hash_table): Don't dump 'purecopy' flag.
* src/print.c (print_object): Don't print 'purecopy' flag

* src/json.c (json_parse_object):
* src/lread.c (readevalloop, read_internal_start):
* src/pgtkterm.c (syms_of_pgtkterm):
* src/profiler.c (export_log):
* src/xfaces.c (syms_of_xfaces):
* src/xterm.c (syms_of_xterm): Adjust calls to 'make_hash_table'.
2024-12-12 22:48:12 +01:00
Eli Zaretskii
3993dcca82 Merge from origin/emacs-30
f65de1019d Fix the version of librsvg API change
43c4a06ffc ; Fix grammar in Emacs user manual
6bca138d60 Fix latest test for dabbrev-expand
2024-12-07 09:16:18 -05:00
Manuel Giraud
f65de1019d Fix the version of librsvg API change
* src/image.c (init_svg_functions, svg_load_image): The first
official version that introduces
'rsvg_handle_get_pixbuf_and_error' is 2.59.0 not 2.58.0.
(Bug#74606)
2024-12-02 18:23:28 +02:00
Manuel Giraud
8cd4ab7abd Do not use libjpeg quantization (bug#74476)
* src/image.c (jpeg_load_body): Remove libjpeg quantization.
2024-12-02 10:43:35 +00:00
Yuan Fu
4afd1eca36
Merge from emacs-30
cf4f1387a6 ; Update tree-sitter manual
3c7687c1dd Allow passing nil to treesit-node-match-p (bug#74612)
748b19e56e Update to version 2.58 of librsvg API (bug#74606)
4c67f636c0 Fix decoding of non-ASCII email attachments
bd8a6f70fb Prevent "Selecting deleted buffer" error with dabbrev-expand
0a753603a5 ; (dictionary-search-interface): Fix bug#74511.
2024-12-01 17:52:16 -08:00
Manuel Giraud
748b19e56e Update to version 2.58 of librsvg API (bug#74606)
* src/image.c (init_svg_functions): Declare new function.
(svg_load_image): Use it.
2024-12-01 16:51:55 +02:00
Cecilio Pardo
4e8bf2977e Support :transform-smoothing on images (MS-Windows) (bug#57166)
* src/dispextern.h (struct image): Add field 'smoothing' for
NTGUI.
* src/image.c (image_set_transform): Assign the 'smoothing'
field of the image struct.
* src/w32gdiplus.h: Add references to more GDI+ functions.
* src/w32image.c (gdiplus_init): Add references to more GDI+
functions.
* src/w32term.c (w32_draw_image_foreground): If the image is
marked for smoothing and GDI+ is available, draw it with GDI+
bilinear interpolation.
* etc/NEWS: New entry for this change.
2024-11-05 14:37:07 +02:00
Pip Cet
dc2cdd3683 Explicitly include stdlib.h in src/image.c (Bug#72929)
* src/image.c: Add include.
2024-09-01 15:37:48 +00:00
Stefan Kangas
73277a4097 Fix integer overflow when reading XPM
* src/image.c (xpm_str_to_int): New function.
(xpm_load_image): Replace sscanf with strtol, to correctly handle
integer overflow when reading a malformed XPM file.  (Bug#72245)
2024-09-01 13:17:41 +02:00
Paul Eggert
3b24ac5388 Don’t ignore -Wclobbered in image.c
This fix is also prompted by Emacs bug#71744.
* src/image.c: Do not ignore -Wclobbered.
(png_load_body): Fix violations of the C standard, where setjmp
clobbered c.  Move mask_img decl to pacify GCC.
(jpeg_load_body): Don’t make fp volatile; solve that problem in a
better way, via a new fp_volatile local.  Fix violations of the C
standard, where setjmp clobbered mgr, img, and ximg.  If __GNUC__
&& !__clang__, add useless assignments to pacify GCC.
2024-08-16 21:16:36 -07:00
Eli Zaretskii
c3c27a919c Merge from origin/emacs-30
88e1ec22f2 Update to Org 9.7.9
1ae2f00447 Fix edge-case with 'which-key-dont-use-unicode' setter
68a5f1f7d1 NS: prevent makeKeyWindow warnings (bug#69525)
59a895ec49 ; * .gitignore: Add lisp/eshell/esh-groups.el.
5c08cd4e7c ; * doc/emacs/cmdargs.texi (Initial Options): Fix last ch...
309d0a7186 Add PROBLEMS entry for bug#72303
87389f9ff9 ; Improve documentation of 'line-prefix' and 'wrap-prefix'.
268a2d10fc Improve documentation of '--init-directory' command-line ...
c27055a938 ; cperl-mode.el: Fix fontification of flip-flop (Bug#72296)
fcd4e4c895 ; * admin/MAINTAINERS: Add myself for maintaining some ar...
fdc133e97f Fix bug in server.el introduced by 0d7d835902
af527051cd ; * admin/MAINTAINERS: Remove Nicolas Petton.
7170282a59 lisp/minibuffer.el (completion--sifn-requote): Fix bug#72176
68906f184c * admin/notes/spelling: Update note.
9eea6be5ab Don't produce invalid XML with multi-line commenting style
b97786d9f6 ; * etc/NEWS: Entry for 'gnus-summary-limit-to-age' (bug#...
a799661566 Standardize possessive apostrophe usage in manuals, docs,...
67faaead75 Don't refer to obsolete finder group "wp"

# Conflicts:
#	etc/NEWS
2024-07-27 04:27:53 -04:00
Stefan Kangas
a799661566 Standardize possessive apostrophe usage in manuals, docs, and comments
See the note in admin/notes/documentation.
Ref: https://lists.gnu.org/r/emacs-devel/2012-02/msg00649.html
2024-07-25 03:35:18 +02:00
Andrea Corallo
df25bd12fc Merge from savannah/emacs-30
976416bebe Fix some function type declaration
23549d7175 * src/image.c (gui_put_x_image): Avoid memory leak.
cb633820c1 ; * doc/misc/use-package.texi (Getting Started): Fix word...
2024-07-24 15:49:23 +02:00
Po Lu
23549d7175 * src/image.c (gui_put_x_image): Avoid memory leak. 2024-07-24 20:13:01 +08:00
Po Lu
135ce96f1e Merge from savannah/emacs-30
3a76354e09 Adapt last change to non-NS systems
2024-07-24 12:01:02 +08:00
Po Lu
3a76354e09 Adapt last change to non-NS systems
* src/image.c (xpm_load_image): Also check whether mask_img is
NULL.
2024-07-24 11:59:53 +08:00
Po Lu
e673492f74 Merge from savannah/emacs-30
b5543c54bf Fix NULL pointer dereferences in xpm_load_image
2024-07-24 11:58:29 +08:00
Po Lu
b5543c54bf Fix NULL pointer dereferences in xpm_load_image
* src/image.c (x_destroy_x_image): Correct test condition.
(xpm_load_image): Do not release image data if it is still to be
created.
2024-07-24 11:57:28 +08:00
Po Lu
db40b65825 Merge from savannah/emacs-30
1ee8579eb7 Fix bug#72255
05629d3af0 Delete redundant "a.k.a." in use-package.texi
c7609464f7 Document (use-package 'emacs) declarations
de9f9add13 Improve 'emacs-news-view-mode' menus and bindings
7588e1f8a9 ; * src/xdisp.c (Fformat_mode_line): Doc fix.
2074e94c3b Fix disappearing bar cursor on Hebrew text (bug#72230)
1aaadc8aec Fix DocView with DVI files
c1382257aa ; Fix typo in use-package.texi
caf7426f0c FIx spurious fontification of variable in Java Mode
9b426e15ab Correctly typeset nil and t in texinfo
f050b9c503 Fix Tramp IPv6 handling in tests
46b192c04b Update to Org 9.7.8-5-gfdf0e0
87f41b937b Fix Ftreesit_parser_create
2024-07-24 11:41:58 +08:00
Po Lu
1ee8579eb7 Fix bug#72255
* src/image.c (struct image_type): Minor grammatical
corrections.
(image_destroy_x_image): [HAVE_NS]: Do not release
Emacs_Pix_Containers, which are identical to Emacs_Pixmaps and
consequently always released with the `struct image'.
(bug#72255)
2024-07-24 11:39:07 +08:00
Stefan Kangas
fcb4d89aaa Prefer memcpy to strcpy in image.c
* src/image.c (lookup_image, xpm_cache_color)
(imagemagick_create_cache): Prefer 'memcpy' to 'strcpy'.
2024-07-16 04:12:35 +02:00
Stefan Kangas
72ba45e274 Restrict loop variable scope in xpm_str_to_color_key
* src/image.c (xpm_str_to_color_key): Restrict scope of
loop variable.
2024-07-16 04:12:34 +02:00
Eli Zaretskii
ce13eee5ab ; * src/image.c (free_image_cache): Add assertion. (Bug#71929) 2024-07-12 09:39:39 +03:00
Po Lu
8350ebd22e Fix bug#71929
* src/image.c (free_image_cache): Unconditionally release image
cache, as this function is only called with its existence
already established.

* src/xfaces.c (free_frame_faces): Clear FRAME_IMAGE_CACHE (f).
(bug#71929)
2024-07-09 22:02:22 +08:00
Po Lu
cebca072c3 Correctly cache images when frames vary in their font metrics
* src/alloc.c (mark_frame): Mark this frame's image cache, if it
exist.
(mark_terminals): Cease marking T->image_cache.

* src/androidfns.c (unwind_create_frame, Fx_create_frame)
(android_create_tip_frame):

* src/haikufns.c (unwind_create_frame, haiku_create_frame)
(haiku_create_tip_frame):

* src/nsfns.m (unwind_create_frame):

* src/pgtkfns.c (unwind_create_frame, Fx_create_frame)
(x_create_tip_frame):

* src/xfns.c (unwind_create_frame, Fx_create_frame)
(x_create_tip_frame):

* src/w32fns.c (unwind_create_frame, Fx_create_frame)
(w32_create_tip_frame): Remove adjustments of the frame image
cache's reference count rendered redundant by the assignment of
image caches to individual frames rather than terminals.

* src/dispextern.h (struct image_cache) <scaling_col_width>: New
field.

* src/frame.c (gui_set_font): In lieu of clearing F's image
cache unconditionally, establish whether the column width as
considered by compute_image_size has changed, and if so, adjust
or reassign the frame's image cache.
(make_frame): Clear F->image_cache.

* src/frame.h (struct frame) <image_cache>: New field.
(FRAME_IMAGE_CACHE): Return F->image_cache.

* src/image.c (make_image_cache): Clear C->scaling_col_width.
(cache_image): Adjust to new means of assigning image caches to
frames.

* src/termhooks.h (struct terminal) <image_cache>: Delete field.

* src/xfaces.c (init_frame_faces): Do image cache assignment
with all new frames.
2024-06-20 17:03:36 +08:00
Po Lu
5637658513 Maintain relationship between tool bar image and default font width
* doc/lispref/display.texi (Image Descriptors): Document new
value of QCscale.

* lisp/cus-start.el (standard) <image-scaling-factor>: New
definition.

* lisp/image.el (image-scaling-factor): Move to C.
(create-image): Provide `default' as the default scaling factor.
(image--default-smoothing): Accept non-integer scaling factors.
(image-compute-scaling-factor): Document that this function
is no longer invoked by Emacs.

* lisp/tool-bar.el (tool-bar--image-expression): Disable
transform smoothing for tool-bar icons.

* src/dispextern.h (clear_image_cache): New definition.

* src/frame.c (gui_set_font): Clear such image cache entries as
derive their scales from the default font width.

* src/image.c (clear_image_cache): Export function.
(compute_image_size): Implement `default' by reading
Vimage_scaling_factor and/or computing a scale factor from the
frame's column width, as the case may be.
New argument F.  All callers changed.
(syms_of_image) <Vimage_scaling_factor>: Move from image.el.
2024-06-03 16:36:29 +08:00
Elias G. Perez
48bb25c0e3 Stipple support for MS Windows (bug#71159)
* src/w32term.c (w32_fill_stipple_pattern): New function.
(w32_draw_glyph_string_bg_rect w32_draw_stretch_glyph_string)
(w32_draw_glyph_string_background): Use new stipple function.
* src/w32term.h (w32_bitmap_record): Add stipple value.
* src/image.c (image_create_bitmap_from_data): Create stipple
bitmap.
(image_create_bitmap_from_file): Add suuport for pixmap and
create stipple bitmap.
(free_bitmap_record): Release stipple.

* etc/NEWS: Announce support for stipples in MS-Windows.
2024-06-02 09:35:32 +03:00
Mattias Engdegård
9365feadcc Silence some macOS build warnings
* src/image.c (native_image_type): Declare static.
* src/keyboard.c (lispy_function_keys): Declare static on NS.
* src/nsmenu.m (context_menu_value):
* src/nsterm.m (ns_frame_parm_handlers): Move extern declarations...
* src/nsterm.h: ...here.
* test/src/emacs-module-resources/mod-test.c: Add extern declaration.
2024-05-12 15:04:47 +02:00
Po Lu
67ab6bcdba Replace calls to intern with a constant string with DEFSYMs
* src/alloc.c (display_malloc_warning, syms_of_alloc):

* src/buffer.c (Fmake_indirect_buffer, Fbuffer_local_variables)
(Frename_buffer, Fkill_buffer, Fset_buffer_major_mode)
(Fset_buffer_multibyte, syms_of_buffer):

* src/callint.c (read_file_name, Fcall_interactively)
(syms_of_callint):

* src/callproc.c (call_process, create_temp_file)
(syms_of_callproc):

* src/charset.c (Fdefine_charset_internal, syms_of_charset):

* src/cmds.c (internal_self_insert, syms_of_cmds):

* src/coding.c (record_conversion_result)
(Fdefine_coding_system_internal, syms_of_coding):

* src/dbusbind.c (xd_signature, Fdbus_message_internal)
(syms_of_dbusbind):

* src/dispnew.c (init_faces_initial):

* src/doc.c (Fsnarf_documentation, syms_of_doc):

* src/dosfns.c (system_process_attributes, syms_of_dosfns):

* src/emacs.c (init_cmdargs, Fdump_emacs, decode_env_path)
(syms_of_emacs):

* src/eval.c (call_debugger, Fdefvaralias, syms_of_eval):

* src/fileio.c (barf_or_query_if_file_exists)
(Finsert_file_contents, auto_save_error, Fdo_auto_save)
(syms_of_fileio):

* src/filelock.c (lock_file_1, syms_of_filelock):

* src/fontset.c (fontset_from_font, syms_of_fontset):

* src/frame.c (make_frame_without_minibuffer, syms_of_frame):

* src/gnutls.c (emacs_gnutls_certificate_details)
(Fgnutls_peer_status_warning_describe, Fgnutls_peer_status)
(gnutls_verify_boot, syms_of_gnutls):

* src/gtkutil.c (style_changed_cb, find_rtl_image):

* src/image.c (imagemagick_filename_hint, gs_load)
(syms_of_image):

* src/keyboard.c (command_loop_1, read_char, timer_start_idle)
(read_char_minibuf_menu_prompt, Fsuspend_emacs)
(syms_of_keyboard):

* src/keymap.c (Fmap_keymap, Flookup_key, Fdescribe_vector)
(describe_vector, syms_of_keymap):

* src/lread.c (Fread, Fread_positioning_symbols, syms_of_lread):

* src/minibuf.c (Fabort_minibuffers, Fread_buffer)
(Fcompleting_read, syms_of_minibuf):

* src/msdos.c (XMenuActivate, run_msdos_command, syms_of_msdos):

* src/nsfns.m (Fx_display_backing_store, Fx_display_visual_class)
(Fns_hide_emacs, Fsystem_move_file_to_trash, ns_create_tip_frame)
(x_hide_tip, Fx_show_tip, syms_of_nsfns):

* src/nsfont.m (ns_spec_to_descriptor, ns_descriptor_to_entity)
(syms_of_nsfont):

* src/pdumper.c (Fdump_emacs_portable):

* src/pgtkfns.c (Fx_display_visual_class, x_create_tip_frame)
(Fx_show_tip, syms_of_pgtkfns):

* src/pgtkterm.c (syms_of_pgtkterm, pgtk_cr_export_frames):

* src/term.c (term_get_fkeys_1, set_tty_color_mode, Fsuspend_tty)
(Fresume_tty, tty_menu_activate, syms_of_term):

* src/terminal.c (create_terminal, syms_of_terminal):

* src/w32fns.c (Fx_display_backing_store)
(Fx_display_visual_class, Fset_message_beep, Fx_open_connection)
(Fx_show_tip, Fx_file_dialog, Fsystem_move_file_to_trash)
(Fw32_toggle_lock_key, syms_of_w32fns):

* src/w32font.c (w32_enumfont_pattern_entity, syms_of_w32font):

* src/w32term.c (w32_bitmap_icon, syms_of_w32term):

* src/xdisp.c (message_dolog, define_frame_cursor1)
(syms_of_xdisp):

* src/xfaces.c (tty_lookup_color, syms_of_xfaces):

* src/xml.c (make_dom, syms_of_xml):

* src/xterm.c (syms_of_xterm):

* src/xwidget.c (store_xwidget_download_callback_event)
(store_xwidget_js_callback_event, syms_of_xwidget): Define
symbols for symbols interned with `intern' from a constant
string, delete duplicate DEFSYM directives, and substitute them
for such calls to intern.  This excludes only those symbols
which are interned and referenced only once during Emacs's
initialization, the timing of whose interning is
inconsequential, and symbols in w32.c, which would need to be
transferred to a new syms_of_w32 function that I cannot test.
2024-05-09 15:07:22 +08:00
Po Lu
7341e600b7 Implement dots and dashes on PGTK
* src/image.c (image_create_bitmap_from_file) [HAVE_PGTK]:
Remove unused variable.

* src/pgtkterm.c (pgtk_draw_dash, pgtk_fill_underline)
(pgtk_draw_glyph_string): New functions, ported from X.
2024-04-28 21:30:52 +08:00
Po Lu
3776539152 Disable unsuitable XPM color selection mechanism on Android
* src/image.c (xpm_load_image) [HAVE_ANDROID]: Always select
XPM_COLOR_KEY_C.
2024-04-24 16:33:53 +08:00
Po Lu
d3d1be8ae5 Miscellaneous fixes for Android port
* lisp/touch-screen.el (touch-screen-hold, touch-screen-drag):
Clear deactivate-mark if the mark is activated to prevent undue
deactivation after completion.

* lisp/wid-edit.el (widget-field, widget-single-line-field):
Insert specifications suitable for monochrome displays.

* src/androidfns.c (Fxw_display_color_p, Fx_display_grayscale_p):
Report color and/or grayscale properly.

* src/image.c (image_create_bitmap_from_file)
[HAVE_ANDROID]: If a file with no extension cannot be located,
append .xbm and retry.
2024-04-24 11:42:48 +08:00
Po Lu
cd7456e00d Enable configuring Emacs for "pseudo-grayscale" systems on Android
* doc/emacs/android.texi (Android Windowing): Document how to
configure Emacs for monochrome displays.

* src/androidfns.c (Fx_display_visual_class): Return
Qstatic_gray when n_planes is smaller than 24.
(Fandroid_get_connection): Set n_planes by the value of
android_display_planes.
(syms_of_androidfns): <Qstatic_gray>: New function.

* src/androidterm.c (android_alloc_nearest_color): Allocate
monochrome colors similarly to the X server.
(android_query_colors): Fix typos.
(android_draw_fringe_bitmap): Create bitmaps of n_image_planes
depth.
(android_term_init): Initialize n_image_planes to 24.
(syms_of_androidterm) <android_display_planes>: New variable.

* src/androidterm.h (struct android_display_info): New field
`n_image_planes'.

* src/image.c (n_planes) [HAVE_ANDROID]: Define to
n_image_planes.
2024-04-23 15:57:45 +08:00
Po Lu
b9c191d690 Implement face stipples on Android
* .gitignore:

* java/Makefile.in: Fix typos.

* java/org/gnu/emacs/EmacsFillRectangle.java (perform): Call
blitOpaqueStipple if filling an unobscured rectangle with an
opaque stipple.

* java/org/gnu/emacs/EmacsGC.java (EmacsGC) <tileObject>: New
field.
(markDirty): Synchronize the current stipple with tileObject.
(prepareStipple, blitOpaqueStipple): New functions.

* java/org/gnu/emacs/EmacsService.java (EmacsService)
<resources>: New static field.
(onCreate): Set it.

* src/android.c (android_create_bitmap_from_data): Correct order
of arguments to android_create_pixmap_from_bitmap_data.
(HAS_BUILTIN_TRAP): Delete macro.
(emacs_abort): Always induce backtraces by means of a NULL
pointer deference.

* src/dispextern.h (Emacs_GC, Emacs_Rectangle, GCForeground)
(GCBackground, GCFillStyle, GCStipple, FillOpaqueStipple)
[HAVE_ANDROID]: Define to their Android counterparts rather
than simulating their existence.

* src/epaths.in: Set bitmap path to /assets/bitmaps on Android.

* src/image.c (image_bitmap_pixmap): Also enable when
HAVE_ANDROID.

* src/sfntfont-android.c (sfntfont_android_put_glyphs): Assert
that this is never called to draw a stippled background.
* src/xfaces.c (x_create_gc) [HAVE_ANDROID]: Redefine as
wrapper around android_create_gc.
(prepare_face_for_display) [HAVE_ANDROID]: Enable stipples.
2024-04-23 14:30:38 +08:00
Po Lu
9fc698479f Fix crash upon call to Fset_fontset_font after X server disconnect
* src/image.c (free_image):

* src/xfaces.c (free_realized_face): Handle scenarios where
free_frame_faces is called with the display connection cut.

* src/xterm.c (x_free_frame_resources): Call free_frame_faces
unconditionally, lest fontsets for this dead frame contaminate
Vfontset_list and produce crashes afterwards.  (bug#66151)
2024-04-13 19:44:34 +08:00