This seems simpler than the solution with exact roots.
* src/image.c (struct anim_cache): The spec field is now a gc-handle.
(anim_create_cache): Create a gc-handle.
(anim_cache_free, anim_cache_spec): New helpers.
(anim_prune_animation_cache, anim_get_animation_cache): Adjust to
gc-handle.
(mark_image_cache): Delete code for anim_cache.
* src/igc.h (igc_alloc_glyph_pool): New prototype.
* src/igc.c (igc_alloc_glyph_pool, scan_glyph_pool): New.
(fix_frame): Don't trace the glyph_pools.
(fix_glyph_matrix): Should only be used for matrices with their own
glyphs.
* src/dispnew.c (new_glyph_matrix, free_glyph_matrix): Only create roots
for matrices without pool.
(new_glyph_pool, free_glyph_pool): Create and destroy roots for glyph
pools.
Enable cursor focus tracking for visually-impaired users that
rely on macOS Zoom screen magnification.
* src/nsterm.m: Import ApplicationServices.h.
(ns_ua_zoom_enabled_p, ns_cg_rect_flip_y, ns_UAZoomChangeFocus):
New static function. Advise UAZoomChangeFocus of potentially
new cursor position.
(ns_update_end): Call ns_UAZoomChangeFocus.
(ns_draw_window_cursor): Cache the cursor position.
(applicationDidFinishLaunching): NSLog Accessibility API
permissions AXIsProcessTrusted.
(windowDidBecomeKey): Schedule a call to ns_UAZoomChangeFocus.
(deferred_UAZoomChangeFocus_handler): New view method to call
ns_UAZoomChangeFocus.
(accessibilityFrame): New view method to help UAZoomChangeFocus.
(initFrameFromEmacs): Initialize ns_UAZoom_cursor_rect_new and
ns_UAZoom_cursor_rect_old.
* etc/NEWS: Announce the change.
* src/lisp.h (enum print_entry_type, struct print_stack_entry)
(struct print_stack, struct print_pp_entry, struct print_pp_stack): Type
definitions moved here so that we can use them in igc.
(prstack, ppstack): Declare extern.
* src/igc.h (igc_grow_print_stack, igc_grow_pp_stack): New prototypes.
(igc_scan_result_t, struct igc_ss, igc_scan_area_t, igc_fix12_obj):
Deleted.
* src/igc.c (scan_prstack, scan_ppstack): Moved here from print.c and
rewritten with the usual IGC_FIX12_OBJ.
(igc_grow_print_stack, igc_grow_pp_stack): New functions.
(igc_xpalloc_exact, igc_xnrealloc_ambig): Make static.
(igc_fix12_obj): Deleted.
* src/print.c (ppstack, prstack): Make extern.
(grow_pp_stack): Use igc_grow_pp_stack.
(grow_print_stack): Use igc_grow_print_stack.
* src/pgtkterm.c (pgtk_set_window_size): Remove unused code.
Rename the last two parameters to pixelwidth and pixelheight so
they can be used directly (bug#80698). And remove the
xg_wm_set_size_hint call because it's called indirectly through
xg_frame_set_char_size already.
Update the commentary above.
'setopt-local' is the buffer local equivalent of 'setopt'.
Unify 'setopt', 'setopt-local', 'setq-local',
'buffer-local-set-state' with 'setq' to signal
'wrong-number-of-arguments'.
* lisp/cus-edit.el (setopt): Change error signal to
'wrong-number-of-arguments'.
(setopt-local): New macro.
(setopt--set-local): New function.
* lisp/subr.el (set-local): New function.
(setq-local, buffer-local-set-state): Signal
'wrong-number-of-arguments' rather than 'error'.
* doc/emacs/custom.texi (Examining): Document 'setopt-local'.
* etc/NEWS: Announce the new macro and function.
* src/dispextern.h (struct anim_cache, struct git_anim_handle)
(struct webp_anim_handle): Anim cache related type definitions
definitions moved here from image.c.
(anim_cache): Declare external so that we can trace it in igc.c.
* src/image.c (anim_cache): Is now external.
* src/igc.c (scan_anim_cache): New helper.
(root_create_anim_cache): New.
(make_igc): Call it.
* src/igc.h (igc_alloc_glyph_matrix): New prototype.
* src/igc.c (igc_alloc_glyph_matrix, scan_glyph_matrix): New functions.
(fix_window): Don't trace the glyph_matrixes.
* src/dispnew.c (new_glyph_matrix): Allocate the matrix as root.
(free_glyph_matrix): Free the root.
* lisp/progmodes/eglot.el (Version): Bump to 1.22.
(Package-Requires): Bump eldoc to 1.16.0, flymake to 1.4.5,
jsonrpc to 1.0.27, xref to 1.7.0.
* etc/EGLOT-NEWS: Announce new version.
* etc/themes/newcomers-presets-theme.el (newcomers-presets): Set
column-number-mode and compilation-scroll-output. Suggested by
Abdulnafé Toulaïmat <abdulnafe.toulaimat@gmail.com>.