]> git.eshelyaron.com Git - emacs.git/commitdiff
; ChangeLog.android: Clean up more entries.
authorPo Lu <luangruo@yahoo.com>
Wed, 16 Aug 2023 06:33:47 +0000 (14:33 +0800)
committerPo Lu <luangruo@yahoo.com>
Wed, 16 Aug 2023 06:33:47 +0000 (14:33 +0800)
ChangeLog.android

index 8c54909e60f9d26a5dd27a42488c687b75a83f70..759868c668e1d2fed52536ce4d6b52d158906458 100644 (file)
 2023-03-11  Po Lu  <luangruo@yahoo.com>
 
        * configure.ac (with_mailutils): Default to off on Android.
-
-       * configure.ac (HAVE_MAILUTILS, with_mailutils)
-       (ANDROID_SDK_8_OR_EARLIER, XCONFIGURE): Fix POP and mailutils
-       configuration on Android.
+       (HAVE_MAILUTILS, with_mailutils, ANDROID_SDK_8_OR_EARLIER)
+       (XCONFIGURE): Fix POP and mailutils configuration on Android.
 
        * java/Makefile.in:
        * src/callproc.c (syms_of_callproc): Avoid using built-in movemail
 
        * lib/gnulib.mk.in: Update from gnulib.
 
-2023-03-11  Po Lu  <luangruo@yahoo.com>
-
-       Don't use GCC extensions in src/emacs-module.c
        * configure.ac: Default modules to on.  Remove check for
        __attribute__((cleanup)).  However, keep the new `ifavailable'
        value for systems without dlopen.
 
-       * src/emacs-module.c (MODULE_HANDLE_NONLOCAL_EXIT): Don't rely
-       on cleanup attribute and correctly reset handlerlist upon
-       longjmp.
+       * src/emacs-module.c (MODULE_HANDLE_NONLOCAL_EXIT): Don't rely on
+       cleanup attribute and correctly reset handlerlist upon longjmp.
        (MODULE_INTERNAL_CLEANUP): New macro.
        (module_make_global_ref, module_free_global_ref)
        (module_make_function, module_get_function_finalizer)
 
 2023-03-10  Po Lu  <luangruo@yahoo.com>
 
-       Update Android port
-       * doc/emacs/android.texi (Android Windowing): Document how to
-       pass multimedia keys to the system.
-       * java/org/gnu/emacs/EmacsNative.java (EmacsNative): New
-       function.
+       * doc/emacs/android.texi (Android Windowing): Document how to pass
+       multimedia keys to the system.
+
+       * java/org/gnu/emacs/EmacsNative.java
+       (shouldForwardMultimediaButtons): New function.
+
        * java/org/gnu/emacs/EmacsView.java (onKeyDown, onKeyMultiple)
        (onKeyUp): Check that function.
-       * java/org/gnu/emacs/EmacsWindow.java (defineCursor): Handle
-       cases where cursor is NULL.
+
+       * java/org/gnu/emacs/EmacsWindow.java (defineCursor): Handle cases
+       where cursor is NULL.
+
        * src/android.c (NATIVE_NAME): New function.
+
        * src/androidfns.c (syms_of_androidfns): New variable.
+
        * src/keyboard.c (lispy_function_keys): Add volume keys.
 
        * java/org/gnu/emacs/EmacsCursor.java: New file.
 
-       Implement mouse cursors on Android 7.0 and later
        * java/org/gnu/emacs/EmacsWindow.java (defineCursor): New
        function.
+
        * src/android.c (struct android_emacs_cursor): New struct.
        (android_init_emacs_cursor): New function.
-       (JNICALL): Call it.
+       (initEmacs): Call it.
        (android_create_font_cursor, android_define_cursor)
        (android_free_cursor): New functions.
+
        * src/android.h (enum android_handle_type): Add cursor handle
        type.
+
        * src/androidfns.c (Fx_create_frame, android_create_tip_frame)
        (enum mouse_cursor, struct mouse_cursor_types, mouse_cursor_types)
        (struct mouse_cursor_data, android_set_mouse_color)
        (syms_of_androidfns):
+
        * src/androidgui.h (enum android_cursor_shape):
+
        * src/androidterm.c (make_invisible_cursor)
        (android_toggle_invisible_pointer, android_free_frame_resources)
        (android_define_frame_cursor):
+
        * src/androidterm.h (struct android_display_info)
        (struct android_output): Port mouse cursor code over from X.
 
        * java/org/gnu/emacs/EmacsNative.java: Add missing dependency.
 
-       Avoid using Linux sysfs APIs to access battery state on Android
-       * lisp/battery.el (battery-status-function): Don't look for /sys,
-       /proc* on Android.  Explain why.
+       * lisp/battery.el (battery-status-function): Don't look for /sys
+       or /proc* on Android.  Explain why.
 
-       Port Android battery status to Android 4.4 and earlier
-       * java/org/gnu/emacs/EmacsService.java (EmacsService)
-       (queryBattery19): New function.
+       * java/org/gnu/emacs/EmacsService.java (queryBattery19): New
+       function.
        (queryBattery): Call it on old systems.  Also, return AC line
        status and temperature.
+
        * lisp/battery.el (battery-android): Implement more format
        directives.
-       * src/android.c (android_query_battery): Handle new status
-       fields.
-       * src/android.h (struct android_battery_state): Add `plugged'
-       and `temperature'.
-       * src/androidfns.c (Fandroid_query_battery): Return new fields.
 
-       Merge remote-tracking branch 'origin/master' into feature/android
+       * src/android.c (android_query_battery): Handle new status fields.
 
-2023-03-09  Po Lu  <luangruo@yahoo.com>
+       * src/android.h (struct android_battery_state): Add `plugged' and
+       `temperature'.
 
-       Merge remote-tracking branch 'origin/master' into feature/android
+       * src/androidfns.c (Fandroid_query_battery): Return new fields.
+
+2023-03-09  Po Lu  <luangruo@yahoo.com>
 
-       Update Android port
        * src/android.c (android_destroy_handle): Handle OOM errors in
        android_destroy_handle.
 
        * textconv.c: Remove out-of-date comment.
 
-2023-03-09  Po Lu  <luangruo@yahoo.com>
-
-       Fix menu and popup race conditions on Android
        * java/org/gnu/emacs/EmacsActivity.java (onContextMenuClosed):
+
        * java/org/gnu/emacs/EmacsContextMenu.java (EmacsContextMenu)
        (onMenuItemClick, run):
-       * java/org/gnu/emacs/EmacsDialog.java (EmacsDialog, onClick)
-       (createDialog, onDismiss): Take menu event serial, and pass it
-       along in context menu events.
+
+       * java/org/gnu/emacs/EmacsDialog.java (onClick, createDialog)
+       (onDismiss): Take menu event serial, and pass it along in context
+       menu events.
+
        * java/org/gnu/emacs/EmacsNative.java (sendContextMenu): New
        argument.
+
        * src/android.c (sendContextMenu): Pass serial number in event.
 
        * src/androidgui.h (struct android_menu_event): New field
        `menu_event_serial'.
-       * src/androidmenu.c (FIND_METHOD_STATIC)
-       (android_init_emacs_context_menu): Adjust method declarations.
+
+       * src/androidmenu.c (android_init_emacs_dialog): Adjust method
+       declarations.
        (android_menu_show, android_dialog_show):
+
        * src/androidterm.c (handle_one_android_event): Expect serial in
        context menu events.
-       * src/androidterm.h: Update prototypes.
 
-2023-03-09  Po Lu  <luangruo@yahoo.com>
+       * src/androidterm.h: Update prototypes.
 
-       Fix webp test for Android
        * configure.ac (HAVE_WEBP): Disable WebPGetInfo check when
        REALLY_ANDROID.
 
-       Merge remote-tracking branch 'origin/master' into feature/android
-
-       Update Android port
-       * java/debug.sh (is_root): Port to android versions which don't
+       * java/debug.sh (is_root): Port to Android versions which don't
        support `chmod +x'.
-       * src/android.c (android_content_name_p): Disable before API
-       level 19.
 
-       Update Android port
-       * java/org/gnu/emacs/EmacsContextMenu.java (EmacsContextMenu)
-       (addItem): New argument `tooltip'.
+       * src/android.c (android_content_name_p): Disable before API level
+       19.
+
+       * java/org/gnu/emacs/EmacsContextMenu.java (addItem): New argument
+       `tooltip'.
 
-       Update Android port
        * src/android.c (android_build_string): Convert the text to
        UTF-16, and create the Java string using that.
        (android_build_jstring): Update comment.
-       * src/androidmenu.c (android_init_emacs_context_menu): Add
-       String argument to `addItem'.
+
+       * src/androidmenu.c (android_init_emacs_context_menu): Add String
+       argument to `addItem'.
+
        (android_menu_show): Correctly pass help strings in regular menu
        items.
+
        * src/sfnt.c (_sfnt_swap16, _sfnt_swap32): Avoid reserved names.
 
-       Fix crash upon restoring desktop
        * src/android.c (android_set_input_focus): Don't call method on
        window using service class.
 
        * src/sfnt.c (ODD): Use PUSH_UNCHECKED.
 
-       Merge remote-tracking branch 'origin/master' into feature/android
-
 2023-03-08  Po Lu  <luangruo@yahoo.com>
 
-       Update Android port
-       * src/fileio.c (Fcopy_file): On Android, ignore ENOSYS and
-       ENOTSUP when restoring file times, as the system call used is
-       supported by many kernels.
-
-       Merge remote-tracking branch 'origin/master' into feature/android
+       * src/fileio.c (Fcopy_file): On Android, ignore ENOSYS and ENOTSUP
+       when restoring file times, as many old kernel versions encountered
+       on Android devices omit support for the relevant system calls.
 
-       Fix occasional crash
-       * src/androidterm.c (android_build_extracted_text): Return NULL
-       if text class not initialized.
+       * src/androidterm.c (android_build_extracted_text): Return NULL if
+       text class not initialized.
        (android_update_selection): Check that EXTRACTED is not NULL.
 
-       Update Android port
        * doc/emacs/android.texi (Android File System): Document what
        `temp~unlinked' means in the temporary files directory.
-       * java/org/gnu/emacs/EmacsService.java (updateExtractedText):
-       New function.
-       * java/org/gnu/emacs/EmacsView.java (onCreateInputConnection):
-       Ask the input method nicely to not display the extracted text
-       UI.
+
+       * java/org/gnu/emacs/EmacsService.java (updateExtractedText): New
+       function.
+
+       * java/org/gnu/emacs/EmacsView.java (onCreateInputConnection): Ask
+       the input method nicely to not display the extracted text UI.
+
        * src/android.c (struct android_emacs_service): New method
        `updateExtractedText'.
-       (android_hack_asset_fd_fallback): Improve naming convention.
-       Fix typo.
+       (android_hack_asset_fd_fallback): Improve naming convention.  Fix
+       typo.
        (android_init_emacs_service): Add new method.
        (android_update_extracted_text): New function.
        (android_open_asset): Fix typo.
+
        * src/androidgui.h: Update prototypes.
+
        * src/androidterm.c (struct android_get_extracted_text_context):
        New field `flags'.
        (android_get_extracted_text): Set flags on the frame's output
        data.
        (android_build_extracted_text): New function.
        (getExtractedText): Move out class structures.
-       (android_update_selection): Send updates to extracted text if
-       the input method asked for them.
+       (android_update_selection): Send updates to extracted text if the
+       input method asked for them.
        (android_reset_conversion): Clear extracted text flags.
+
        * src/androidterm.h (struct android_output): New fields for
        storing extracted text data.
 
-       Fix double free upon encountering invalid font
-       * src/sfnt.c (sfnt_read_cmap_table): Don't allocate too big
-       data.  Also, free elements of (*data), not offsets into data
-       itself.
-
-       Merge remote-tracking branch 'origin/master' into feature/android
+       * src/sfnt.c (sfnt_read_cmap_table): Don't allocate too big data.
+       Also, free elements of (*data), not offsets into data itself.
 
 2023-03-07  Po Lu  <luangruo@yahoo.com>
 
-       Merge remote-tracking branch 'origin/master' into feature/android
+       * java/Makefile.in (install_temp/assets/build_info): New rule.
+       (emacs.apk-in): Depend on that file.
 
-       Save build timestamps in Android builds
-       * java/Makefile.in (install_temp/assets/build_info): New
-       rule.:(emacs.apk-in): Depend on that file.
        * lisp/version.el (android-read-build-system)
        (android-read-build-time): New functions.
        (emacs-build-system, emacs-build-time): Use those functions on
        Android, as dumping is done after installation on Android.
+
        * src/fileio.c (Finsert_file_contents):
+
        * src/window.c (replace_buffer_in_windows): Don't call functions
        if they are not defined, which can happen during loadup.
 
-       Update Android port
        * java/org/gnu/emacs/EmacsWindow.java (onSomeKindOfMotionEvent):
        Dismiss splurious LeaveNotify events from button presses.
+
        * src/android.c (android_change_window_attributes)
        (android_change_gc, android_set_clip_rectangles)
-       (android_reparent_window, android_clear_window, android_map_window)
-       (android_unmap_window, android_resize_window, android_move_window)
-       (android_swap_buffers, android_fill_rectangle, android_copy_area)
+       (android_reparent_window, android_clear_window)
+       (android_map_window, android_unmap_window, android_resize_window)
+       (android_move_window, android_swap_buffers)
+       (android_fill_rectangle, android_copy_area)
        (android_fill_polygon, android_draw_rectangle, android_draw_point)
        (android_draw_line, android_clear_area, android_bell)
        (android_set_input_focus, android_raise_window)
        (android_set_fullscreen): Optimize by specifying the class
        explicitly when calling a method.
 
-       Merge remote-tracking branch 'origin/master' into feature/android
-
-       Update Android port
        * src/lread.c (lread_fd, file_tell, infile, skip_dyn_bytes)
        (skip_dyn_eof, readbyte_from_stdio, safe_to_load_version)
-       (close_infile_unwind, close_file_unwind_android_fd): New
-       function.
-       (Fload, Flocate_file_internal, openp): New argument PLATFORM.
-       All callers changed.
+       (close_infile_unwind, close_file_unwind_android_fd): New function.
+       (Fload, Flocate_file_internal, openp): New argument PLATFORM.  All
+       callers changed.
        (skip_lazy_string): Add optimized versions of various functions
        for accessing Android assets.
 
-       Merge remote-tracking branch 'origin/master' into feature/android
-
 2023-03-06  Po Lu  <luangruo@yahoo.com>
 
-       Merge remote-tracking branch 'origin/master' into feature/android
+       * java/org/gnu/emacs/EmacsNative.java (EmacsNative): New function
+       requestSelectionUpdate.
 
-       Update Android port
-       * java/org/gnu/emacs/EmacsNative.java (EmacsNative): New
-       function requestSelectionUpdate.
        * java/org/gnu/emacs/EmacsView.java (onCreateInputConnection):
-       Call it instead of losing if getting the current selection
-       fails.
+       Call it instead of losing if getting the current selection fails.
+
        * src/android-asset.h (AAsset_seek): Define stub.
-       * src/android.c (android_open): Take mode_t.
+
+       * src/android.c (android_open): Take mode_t MODE instead of int.
        (android_open_asset, android_close_asset, android_asset_read_quit)
        (android_asset_read, android_asset_lseek, android_asset_fstat):
        New functions.
+
        * src/android.h (struct android_fd_or_asset): Update prototypes.
-       * src/androidgui.h (enum android_ime_operation): Add new
-       operation to update the selection position.
+
+       * src/androidgui.h (enum android_ime_operation): Add new operation
+       to update the selection position.
+
        * src/androidterm.c (android_handle_ime_event): Handle new
        operation.
        (requestSelectionUpdate): New function.
+
        * src/fileio.c (close_file_unwind_emacs_fd): New function.
        (Fcopy_file, union read_non_regular, read_non_regular)
-       (Finsert_file_contents): Use optimized codepath to insert
-       Android asset files.
+       (Finsert_file_contents): Use optimized codepath to insert Android
+       asset files.
+
        * src/frame.h (enum text_conversion_operation): New operation.
+
        * src/textconv.c (really_request_point_update)
        (handle_pending_conversion_events_1, request_point_update): New
        functions.
+
        * src/textconv.h: Update prototypes.
 
        * src/conf_post.h: Avoid macro redeclaration.
 
-       Update Android port
        * java/org/gnu/emacs/EmacsService.java (sync): Delete function.
+
        * java/org/gnu/emacs/EmacsView.java (handleDirtyBitmap): Erase
        with window background.
        (onDetachedFromWindow): Only recycle bitmap if non-NULL.
+
        * java/org/gnu/emacs/EmacsWindow.java (background): New field.
        (changeWindowBackground): Set it.
+
        * src/android.c (struct android_emacs_service): Remove `sync'.
        (android_init_emacs_service): Likewise.
        (android_sync): Delete function.
+
        * src/androidfns.c (android_create_tip_frame): Set frame
        background color correctly.
        (Fx_show_tip): Make the tip frame visible.
+
        * src/androidgui.h: Update prototypes.
+
        * src/androidterm.c (handle_one_android_event): Handle tooltip
        movement correctly.
 
 2023-03-05  Po Lu  <luangruo@yahoo.com>
 
-       Merge remote-tracking branch 'origin/master' into feature/android
-
-       Update Android port
        * java/org/gnu/emacs/EmacsActivity.java (onCreate):
        * java/org/gnu/emacs/EmacsContextMenu.java:
        * java/org/gnu/emacs/EmacsDocumentsProvider.java (getMimeType):
        * java/org/gnu/emacs/EmacsFontDriver.java:
        * java/org/gnu/emacs/EmacsHandleObject.java:
        * java/org/gnu/emacs/EmacsInputConnection.java:
-       * java/org/gnu/emacs/EmacsMultitaskActivity.java
-       (EmacsMultitaskActivity):
+       * java/org/gnu/emacs/EmacsMultitaskActivity.java:
        * java/org/gnu/emacs/EmacsNative.java:
-       * java/org/gnu/emacs/EmacsNoninteractive.java
-       (EmacsNoninteractive, main):
-       * java/org/gnu/emacs/EmacsOpenActivity.java (EmacsOpenActivity)
-       (startEmacsClient):
+       * java/org/gnu/emacs/EmacsNoninteractive.java (main):
+       * java/org/gnu/emacs/EmacsOpenActivity.java (startEmacsClient):
        * java/org/gnu/emacs/EmacsSdk7FontDriver.java:
        * java/org/gnu/emacs/EmacsSdk8Clipboard.java:
-       * java/org/gnu/emacs/EmacsService.java (EmacsService, onCreate):
-       * java/org/gnu/emacs/EmacsView.java (EmacsView, onLayout):
+       * java/org/gnu/emacs/EmacsService.java (onCreate):
+       * java/org/gnu/emacs/EmacsView.java (onLayout):
        * java/org/gnu/emacs/EmacsWindow.java (EmacsWindow):
-       * java/org/gnu/emacs/EmacsWindowAttachmentManager.java
-       (EmacsWindowAttachmentManager): Remove redundant includes.
-       Reorganize some functions around, remove duplicate `getLibDir'
-       functions, and remove unused local variables.
+       * java/org/gnu/emacs/EmacsWindowAttachmentManager.java: Remove
+       redundant includes.  Reorganize some functions, remove duplicate
+       `getLibDir' functions, and remove unused local variables.
+
+       * java/org/gnu/emacs/EmacsOpenActivity.java (onCreate): Don't set
+       the style here.
 
-       Update Android port
-       * java/org/gnu/emacs/EmacsOpenActivity.java (onCreate): Don't
-       set the style here.
        * java/res/values-v11/style.xml:
        * java/res/values-v14/style.xml:
        * java/res/values-v29/style.xml:
        * java/res/values/style.xml: Define styles for the emacsclient
        wrapper.
+
        * src/keyboard.c (read_key_sequence): Don't disable text
-       conversion if use_mouse_menu or if a menu bar prefix key is
-       being displayed.
+       conversion if use_mouse_menu or if a menu bar prefix key is being
+       displayed.
 
-       Update Android port
        * etc/PROBLEMS: Document problem with default monospace font.
-       * src/fileio.c (check_mutable_filename): Check /content as well.
+
+       * src/fileio.c (check_mutable_filename): Check if the file is a
+       constituent of /content as well.
        (Fcopy_file, Fdelete_directory_internal, Fdelete_file)
        (Frename_file, Fadd_name_to_file, Fmake_symbolic_link)
        (Fset_file_modes, Fset_file_times, Ffile_newer_than_file_p)
        (write_region): Adjust accordingly.
        (Fset_visited_file_modtime): Remove unnecessary restriction.
+
        * src/filelock.c (make_lock_file_name): Don't interlock files
        under /assets and /content.
+
        * src/inotify.c (Finotify_add_watch): Fix typo.
 
-       Fix cross compilation of cross/lib in some cases
-       * cross/Makefile.in: (config.status): Depend on
+       * cross/Makefile.in (config.status): Depend on
        top_builddir/config.status instead.
 
        * configure.ac: Fix another typo.
 
        * cross/README: Update.
 
-       Remove redundant gnulib files
        * cross/lib: Delete.  Make configure generate it instead.
 
-       Remove redundant second copy of gnulib
        * .gitignore: Simplify cross/lib rule.
+
        * admin/merge-gnulib (avoided_flags): Stop copying to cross/lib.
-       * configure.ac: Link gnulib source and header files to
-       cross/lib.
+
+       * configure.ac: Link gnulib source and header files to cross/lib.
+
        * cross/Makefile.in (LIB_SRCDIR): Make relative to builddir.
        (maintainer-clean): Merge with distclean.  Remove links created
        by configure.
 
-       Merge remote-tracking branch 'origin/master' into feature/android
-
 2023-03-04  Po Lu  <luangruo@yahoo.com>
 
-       Fix x86_64 builds of libjpeg on Android
        * cross/ndk-build/ndk-build-shared-library.mk:
        * cross/ndk-build/ndk-build-static-library.mk: Specify right ELF
        format for 64 bit executables.
 
-       Fix calls to nasm in cross/ndk-build
        * cross/ndk-build/ndk-build-shared-library.mk:
        * cross/ndk-build/ndk-build-static-library.mk: Ensure nasm
        generates ELF objects.
 
-       Merge remote-tracking branch 'origin/master' into feature/android
+       * src/sfnt.c (sfnt_fill_span): Specifically handle spans that span
+       a single pixel by computing the coverage in the center.
 
-       Fix out of bound write after poly of single pixel span
-       * src/sfnt.c (sfnt_fill_span): Specifically handle spans that
-       span a single pixel by computing the coverage in the center.
+       * java/org/gnu/emacs/EmacsActivity.java (EmacsActivity): New field
+       `lastClosedMenu'.
+       (onContextMenuClosed): Don't send event if a menu is closed twice
+       in a row.  Also, clear wasSubmenuSelected immediately.
 
-       Improve context menus on old versions of Android
-       * java/org/gnu/emacs/EmacsActivity.java (EmacsActivity): New
-       field `lastClosedMenu'.
-       (onContextMenuClosed): Don't send event if a menu is closed
-       twice in a row.  Also, clear wasSubmenuSelected immediately.
        * java/org/gnu/emacs/EmacsContextMenu.java: Display submenus
        manually in Android 6.0 and earlier.
+
        * java/org/gnu/emacs/EmacsView.java (onCreateContextMenu)
        (popupMenu): Adjust accordingly.
 
-       Port to broken Android NDK version
-       * configure.ac: Check for __ctype_get_mb_cur_max.
-       Then see if MB_CUR_MAX is defined to it, and define
-       REPLACEMENT_MB_CUR_MAX if so and it does not link.
+       * configure.ac: Check for __ctype_get_mb_cur_max.  Then see if
+       MB_CUR_MAX is defined to it, and define REPLACEMENT_MB_CUR_MAX if
+       so and it does not link.
+
        * java/INSTALL: Update documentation.
+
        * src/conf_post.h (MB_CUR_MAX): Define replacement if
        necessary.
 
        * m4/ndk-build.m4 (ndk_INIT): Fix typo.
 
-       Merge remote-tracking branch 'origin/master' into feature/android
-
-       Improve support for building Android C++ dependencies
        * configure.ac: Call ndk_LATE after gl_EARLY.
+
        * cross/ndk-build/Makefile.in (NDK_BUILD_CXX): New variable.
+
        * cross/ndk-build/ndk-build-shared-library.mk:
        * cross/ndk-build/ndk-build-static-library.mk: Use it.
+
        * java/INSTALL: Describe how to build C++ dependencies.
+
        * m4/ndk-build.m4 (ndk_LATE): New macro.
        (ndk_INIT): Try to find a suitable C++ compiler.
        (ndk_CHECK_MODULES): Make sure the C++ compiler works before
        allowing C++ dependencies.
 
-       Fix cross-compilation of C++ code with old NDK versions
-       * cross/ndk-build/Makefile.in (NDK_BUILD_CFLAGS_CXX): New variable.
+       * cross/ndk-build/Makefile.in (NDK_BUILD_CFLAGS_CXX): New
+       variable.
+
        * cross/ndk-build/ndk-build-shared-library.mk
        ($(call objname,$(LOCAL_MODULE),$(basename $(1)))):
        * cross/ndk-build/ndk-build-static-library.mk
-       ($(call objname,$(LOCAL_MODULE),$(basename $(1)))): Use it to build
-       C++ code.
+       ($(call objname,$(LOCAL_MODULE),$(basename $(1)))): Use it to
+       build C++ code.
 
 2023-03-03  Po Lu  <luangruo@yahoo.com>
 
-       Minor fixes to configury
        * configure.ac (ANDROID_SDK_8_OR_EARLIER): Pass through
        `--with-ndk-cxx-shared'.
-       * m4/ndk-build.m4: Fix quoting of $CC.
 
-       Fix out-of-tree builds with native dependencies
+       * m4/ndk-build.m4 (ndk_INIT): Fix quoting of $CC.
+
        * cross/ndk-build/ndk-build-shared-library.mk:
        * cross/ndk-build/ndk-build-static-library.mk: Include
        ndk-resolve.mk in srcdir.
 
        * cross/ndk-build/README: Update accordingly.
 
-       Improve ndk-build implementation
        * build-aux/ndk-build-helper.mk: Define in terms of BUILD_AUXDIR.
+
        * m4/ndk-build.m4 (ndk_INIT): Find right build-aux directory.
        Remove uses of unportable shell constructs.
 
-       Fix visiting and saving writable content provider files
-       * java/org/gnu/emacs/EmacsService.java (checkContentUri):
-       Improve debug output.
+       * java/org/gnu/emacs/EmacsService.java (checkContentUri): Improve
+       debug output.
+
        * lisp/files.el (basic-save-buffer): Check whether or not file
        itself exists before checking for the existence of the directory
        containing it.
+
        * src/android.c (android_open): Don't forget to set errno after
        open_content_uri fails.
 
-       Merge remote-tracking branch 'origin/master' into feature/android
-
-2023-03-03  Po Lu  <luangruo@yahoo.com>
-
-       Update Android port
-       * java/org/gnu/emacs/EmacsActivity.java (EmacsActivity)
-       (onCreate): Add view tree observer.
+       * java/org/gnu/emacs/EmacsActivity.java (onCreate): Add view tree
+       observer.
        (onGlobalLayout): Sync fullscreen state.
        (syncFullscreenWith): Improve visibility flag setting.
 
        * src/textconv.c (select_window): New function.
-       (textconv_query):
-       (restore_selected_window):
-       (really_commit_text):
-       (really_set_composing_text):
-       (really_set_composing_region):
-       (really_delete_surrounding_text):
-       (really_set_point_and_mark):
-       (get_extracted_text): Call it instead of Fselect_window
-       to avoid selecting the mini window if it is no longer active.
-
-2023-03-03  Po Lu  <luangruo@yahoo.com>
-
-       Merge remote-tracking branch 'origin/master' into feature/android
+       (textconv_query, restore_selected_window, really_commit_text)
+       (really_set_composing_text, really_set_composing_region)
+       (really_delete_surrounding_text, really_set_point_and_mark)
+       (get_extracted_text): Call it instead of Fselect_window to avoid
+       selecting the mini window if it is no longer active.
 
 2023-03-02  Po Lu  <luangruo@yahoo.com>
 
-       Merge remote-tracking branch 'origin/master' into feature/android
-
-       Merge remote-tracking branch 'origin/master' into feature/android
-
        * doc/emacs/input.texi (On-Screen Keyboards): Fix indexing.
 
-       Summary: Update Android port
        * INSTALL: Document where to find Android installation
        instructions.
+
        * configure.ac (CHECK_LISP_OBJECT_TYPE): Pacify
        -Wsuggest-attribute=noreturn only on Android.
+
        * cross/ndk-build/README: New file.
+
        * doc/emacs/android.texi (Android):
        * doc/emacs/emacs.texi (Top):
        * doc/emacs/input.texi (Other Input Devices): Untabify menus.
+
        * etc/NEWS: Move INSTALL.android to java/INSTALL.
+
        * java/INSTALL: New file.
+
        * java/README:
+
        * src/coding.c (from_unicode_buffer): Make Android specific code
        only build on Android.
 
        * INSTALL.android: Remove file.
 
-       Fix Makefile race conditions
        * configure.ac: Make cross/* and related directories.
+
        * cross/Makefile.in (src/verbose.mk, lib/libgnu.a)
        (src/config.h): Stop making directories here.
        (lib-src/config.h): New config.h rule.
        ($(LIBSRC_BINARIES)): Add it.
        (clean): Don't remove CLEAN_SUBDIRS, but clean inside.
 
-       Fix Android handle wraparound
        * src/android.c (android_alloc_id): Return correct values upon
        wraparound.
 
-2023-03-02  Po Lu  <luangruo@yahoo.com>
-
-       Improve criteria for restoring fullscreen state on Android
-       * java/Makefile.in ($(CLASS_FILES) &): Touch all class files,
-       even those javac chose not to rebuild.
+       * java/Makefile.in ($(CLASS_FILES) &): Touch all class files, even
+       those the Java compiler elected not to rebuild.
 
        * java/org/gnu/emacs/EmacsActivity.java (onWindowFocusChanged):
        Restore fullscreen state here.
        (onResume): And not here.
 
-2023-03-02  Po Lu  <luangruo@yahoo.com>
-
-       Fix sectioning of android texi files
        * doc/emacs/android.texi (Android):
        * doc/emacs/emacs.texi (Top, GNU Free Documentation License):
        Rearrange menu and sectioning.
 
-       Update Android port
        * doc/emacs/android.texi (Android Windowing): Reword
        documentation.
+
        * java/org/gnu/emacs/EmacsActivity.java (EmacsActivity):
        * java/org/gnu/emacs/EmacsContextMenu.java (EmacsContextMenu):
        * java/org/gnu/emacs/EmacsFontDriver.java (EmacsFontDriver):
        (EmacsSdk7FontDriver):
        * java/org/gnu/emacs/EmacsService.java (queryBattery):
        * java/org/gnu/emacs/EmacsWindow.java (EmacsWindow): Make
-       functions final and classes static where necessary.
+       functions final and classes static where possible.  This
+       subsequently brings a small speed-up as the JVM can optimize
+       vtable dispatch away at run-time.
+
        * src/android.c (struct android_emacs_service): New method
        `display_toast'.
        (android_init_emacs_service): Load new method.
        (android_display_toast): New function.
-       * src/android.h: Export.
+
+       * src/android.h (android_display_toast): Export that new function.
+
        * src/androidfns.c (Fandroid_detect_mouse):
        * src/androidselect.c (Fandroid_clipboard_owner_p)
        (Fandroid_set_clipboard, Fandroid_get_clipboard)
        (Fandroid_browse_url): Prevent crashes when called from
-       libandroid-emacs.so.
+       libandroid-emacs.so, where the Emacs service object is not
+       present.
+
        * src/androidterm.c (handle_one_android_event): Fix out of date
        commentary.
 
-       Merge remote-tracking branch 'origin/master' into feature/android
-
 2023-03-01  Po Lu  <luangruo@yahoo.com>
 
-       Fix out-of-tree Android builds
-       * configure.ac (JAVA_PUSH_LINT): Push to WARN_JAVAFLAGS instead
-       of JAVAFLAGS.
+       * configure.ac (JAVA_PUSH_LINT): Push to WARN_JAVAFLAGS instead of
+       JAVAFLAGS.
        (cross/lib): Always AS_MKDIR_P.
+
        * cross/Makefile.in (srcdir): New variable.
-       (LIB_SRCDIR): Take realpath relative to srcdir, not
-       .:(src/verbose.mk): Depend on verbose.mk.android in srcdir.
+       (LIB_SRCDIR): Take realpath relative to srcdir, not.
+       (src/verbose.mk): Depend on verbose.mk.android in srcdir.
        (lib/Makefile): Edit srcdir and VPATH to LIB_SRCDIR.
        (src/Makefile): Edit -I$$(top_srcdir) to -I../$(srcdir)/lib,
        instead of ommitting it.
        (install_temp, emacs.apk-in)
        (../config.status): Depend relative to top_srcdir.
        (AndroidManifest.xml, $(APK_NAME)): Likewise.
-       (RESOURCE_FILE, CLASS_FILES, classes.dex): Output class files
-       to $(srcdir); these are arch independents, so this is okay.
+       (RESOURCE_FILE, CLASS_FILES, classes.dex): Output class files to
+       $(srcdir); these are arch independents, so this is okay.
 
 2023-03-01  Po Lu  <luangruo@yahoo.com>
 
-       Merge remote-tracking branch 'origin/master' into feature/android
-
-       Fix mostlyclean rules
        * cross/Makefile.in: Remove outdated comment.
-       * src/Makefile.in: (.PHONY): Clean android-emacs and
-       libemacs.so, not emacs.so and aemacs.
 
-       Update Android port
+       * src/Makefile.in (.PHONY): Clean android-emacs and libemacs.so,
+       not emacs.so and aemacs.
+
        * doc/emacs/android.texi (Android File System): Document new
        behavior of starting a subprocess from /assets.
+
        * java/org/gnu/emacs/EmacsWindow.java (onSomeKindOfMotionEvent):
        Don't use isFromSource where not present.
-       * src/androidterm.c (android_scroll_run): Avoid undefined
-       behavior writing to bitfields.
+
+       * src/androidterm.c (android_scroll_run): Avoid undefined behavior
+       writing to bitfields.
+
        * src/callproc.c (get_current_directory): When trying to run a
-       subprocess inside /assets, run it from the home directory
-       instead.
+       subprocess inside /assets, run it from the home directory instead.
 
-       Update Android port
        * java/AndroidManifest.xml.in: Specify @style/EmacsStyle.
+
        * java/org/gnu/emacs/EmacsActivity.java (onCreate): Stop setting
        the theme here.
+
        * java/res/values-v11/style.xml:
        * java/res/values-v14/style.xml:
        * java/res/values-v29/style.xml:
        * java/res/values/style.xml: Extract style resources into
        res/values.
 
-       Update Android port
        * java/Makefile.in (ETAGS, clean): New rules to generate tags.
+
        * java/org/gnu/emacs/EmacsActivity.java (EmacsActivity):
        * java/org/gnu/emacs/EmacsApplication.java (EmacsApplication):
        * java/org/gnu/emacs/EmacsContextMenu.java (EmacsContextMenu):
        * java/org/gnu/emacs/EmacsCopyArea.java (EmacsCopyArea):
-       * java/org/gnu/emacs/EmacsDialog.java (EmacsDialog)::(dialog.
-       Then):
+       * java/org/gnu/emacs/EmacsDialog.java (EmacsDialog):
        * java/org/gnu/emacs/EmacsDocumentsProvider.java
        (EmacsDocumentsProvider):
        * java/org/gnu/emacs/EmacsDrawLine.java (EmacsDrawLine):
        * java/org/gnu/emacs/EmacsSdk8Clipboard.java
        (EmacsSdk8Clipboard):
        * java/org/gnu/emacs/EmacsService.java (EmacsService):
-       * java/org/gnu/emacs/EmacsSurfaceView.java (EmacsSurfaceView)
-       (buffers):
-       * java/org/gnu/emacs/EmacsView.java (EmacsView, ViewGroup):
-       * java/org/gnu/emacs/EmacsWindow.java (EmacsWindow, drawables):
+       * java/org/gnu/emacs/EmacsSurfaceView.java (EmacsSurfaceView):
+       * java/org/gnu/emacs/EmacsView.java (EmacsView):
+       * java/org/gnu/emacs/EmacsWindow.java (EmacsWindow):
        * java/org/gnu/emacs/EmacsWindowAttachmentManager.java
        (EmacsWindowAttachmentManager): Make classes final where
-       appropriate.
+       appropriate.  The Java virtual machine is capable of removing
+       vtable dispatch when a virtual function call is being performed on
+       an instance of a final class.
 
-       More fixes to JNI error checking
        * src/android.c (android_query_tree, android_get_geometry)
-       (android_translate_coordinates, android_query_battery):
-       Correctly handle result of GetTArrayElements.
+       (android_translate_coordinates, android_query_battery): Correctly
+       verify the results of calls to JNI Get<Type>ArrayElements
+       functions.
        (android_exception_check_nonnull): New function.
-       * src/android.h:
-       * src/androidselect.c (Fandroid_get_clipboard): Likewise.
 
-       Merge remote-tracking branch 'origin/master' into feature/android
+       * src/androidselect.c (Fandroid_get_clipboard): Also check the
+       return values of calls to JNI array extraction functions.
 
 2023-02-28  Po Lu  <luangruo@yahoo.com>
 
-       Merge remote-tracking branch 'origin/master' into feature/android
-
-       Update Android port
        * src/sfnt.c (main):
+
        * src/sfntfont.c (sfntfont_get_glyph_outline): Remove outdated
-       comment.
+       commentary.
 
 2023-02-26  Po Lu  <luangruo@yahoo.com>
 
-       Get rid of android_lookup_method
        * src/android.c (struct android_emacs_window): New methods.
        (android_init_emacs_window): Add new methods.
        (android_lookup_method): Delete now-unused function.
        (android_raise_window, android_lower_window, android_get_geometry)
        (android_translate_coordinates, android_set_dont_focus_on_map)
        (android_set_dont_accept_focus): Don't look up the class and
-       method each time when calling a function; that's just waste.
+       method each time when calling a function; that's just wasteful.
 
-       Update from gnulib
        * cross/lib/unistd.in.h:
-       * lib/gnulib.mk.in (INT64_MAX_EQ_LONG_MAX):
-       * m4/gnulib-comp.m4 (gl_EARLY): Update from gnulib.
-
-       Merge remote-tracking branch 'origin/master' into feature/android
+       * lib/gnulib.mk.in:
+       * m4/gnulib-comp.m4: Update from gnulib.
 
-       Update Android port
        * doc/lispref/commands.texi (Misc Events): Update documentation.
-       * java/org/gnu/emacs/EmacsService.java (EmacsService)
-       (onStartCommand): Improve notification message.
+
+       * java/org/gnu/emacs/EmacsService.java (onStartCommand): Improve
+       notification message.
+
        * src/android.c (android_hack_asset_fd): Detect if ashmem is
        available dynamically.
        (android_detect_ashmem): New function.
+
        * src/textconv.c (record_buffer_change): Use markers to
        represent BEG and END instead.
        (syms_of_textconv): Update doc string.
 
-       Merge remote-tracking branch 'origin/master' into feature/android
-
 2023-02-25  Po Lu  <luangruo@yahoo.com>
 
-       Update Android port
-       * java/debug.sh (is_root): Fix tee detection again for old
-       systems which don't return exit codes from adb shell.
-       * src/android.c (android_run_select_thread, NATIVE_NAME,
-       JNICALL):
-       * src/android.h (NATIVE_NAME):
-       * src/androidterm.c (JNICALL, NATIVE_NAME): Apply stack
-       alignment to all JNICALL functions.
+       * java/debug.sh (is_root): Fix tee detection again for old systems
+       which don't return exit codes from adb shell.
+
+       * src/android.c (android_run_select_thread, initEmacs):
+       * src/android.h:
+       * src/androidterm.c: Apply stack alignment to all JNICALL
+       functions.
 
        * src/android.c (android_open): Clean up unused variables.
 
-       Update Android port
        * java/org/gnu/emacs/EmacsNoninteractive.java (main): Port to
        Android 2.2.
+
        * src/android-asset.h (AAsset_openFileDescriptor): Delete stub
        function.
-       * src/android.c (android_check_compressed_file): Delete
-       function.
-       (android_open): Stop trying to find compressed files or to use
-       the system provided file descriptor.  Explain why.
 
-       Update Android port
+       * src/android.c (android_check_compressed_file): Delete function.
+       (android_open): Stop trying to find compressed files or to use the
+       system provided file descriptor.  Explain why.
+
        * doc/emacs/android.texi (Android Startup, Android File System)
-       (Android Environment, Android Windowing, Android
-       Troubleshooting): Improve documentation; fix typos.
+       (Android Environment, Android Windowing, Android Troubleshooting):
+       Improve documentation; fix typos.
+
        * doc/lispref/commands.texi (Misc Events): Likewise.
+
        * java/org/gnu/emacs/EmacsService.java (queryBattery): New
        function.
+
        * lisp/battery.el (battery-status-function): Set appropriately
        for Android.
        (battery-android): New function.
+
        * src/android.c (struct android_emacs_service): New method
        `query_battery'.
        (android_check_content_access): Improve exception checking.
        (android_browse_url): Improve exception handling.  Always use
        android_exception_check and don't leak local refs.
        (android_query_battery): New function.
+
        * src/android.h (struct android_battery_state): New struct.
+
        * src/androidfns.c (Fandroid_query_battery, syms_of_androidfns):
-       New function.
+       New functions.
+
        * src/androidfont.c (androidfont_from_lisp, DO_SYMBOL_FIELD)
        (DO_CARDINAL_FIELD, androidfont_list, androidfont_match)
        (androidfont_draw, androidfont_open_font)
        (Fandroid_get_clipboard):
        * src/sfnt.c (sfnt_map_glyf_table):
        * src/sfntfont.c (sfntfont_free_outline_cache)
-       (sfntfont_free_raster_cache, sfntfont_close): Allow font close
-       functions to be called twice.
-
-       Merge remote-tracking branch 'origin/master' into feature/android
+       (sfntfont_free_raster_cache, sfntfont_close): Allow calling font
+       close functions twice.
 
 2023-02-24  Po Lu  <luangruo@yahoo.com>
 
-       Improve Android configury
        * configure.ac (JAVA_PUSH_LINT): New macro.
        (JAVAFLAGS): New variable.  Check for various lint flags and
        macros and enable them.
+
        * java/Makefile.in (ANDROID_ABI):
+
        * java/org/gnu/emacs/EmacsSdk7FontDriver.java: Remove compiler
        warning.
 
-       Enable normal-erase-is-backspace on Android
        * lisp/frame.el (display-symbol-keys-p):
        * lisp/simple.el (normal-erase-is-backspace-setup-frame): Return
        appropriate values on Android.
 
-       Merge remote-tracking branch 'origin/master' into feature/android
-
-       Fix auto-revert-mode on Android
-       * src/inotify.c (Finotify_add_watch): Handle asset files.
+       * src/inotify.c (Finotify_add_watch): Handle asset files by
+       returning nil.
 
        * src/keyboard.c (lispy_function_keys): Add missing delete key.
 
-       Merge remote-tracking branch 'origin/master' into feature/android
-
 2023-02-23  Po Lu  <luangruo@yahoo.com>
 
-       Make sure scroll-bar.el is loaded on Android
        * lisp/loadup.el: Update commentary.
+
        * src/androidterm.c (syms_of_androidterm): Define
        Vx_toolkit_scroll_bars.
-       * src/xterm.c (syms_of_xterm): Update doc string.xf64
 
-       Merge remote-tracking branch 'origin/master' into feature/android
+       * src/xterm.c (syms_of_xterm): Update doc string.
 
-       Fix ImageMagick build on Android
-       * INSTALL.android (-linux_arm_sources):
+       * INSTALL.android:
        * build-aux/ndk-build-helper-1.mk:
-       (NDK_$(LOCAL_MODULE)_STATIC_LIBRARIES)::(NDK_CXX_FLAG_$(LOCAL_MODULE)):
+       (NDK_$(LOCAL_MODULE)_STATIC_LIBRARIES)
+       (NDK_CXX_FLAG_$(LOCAL_MODULE)):
        * build-aux/ndk-build-helper-2.mk:
-       (NDK_$(LOCAL_MODULE)_STATIC_LIBRARIES)::(NDK_CXX_FLAG_$(LOCAL_MODULE)):
-       * cross/ndk-build/ndk-build-shared-library.mk (objname)::($(call
-       objname,$(LOCAL_MODULE),$(basename
-       $(1))))::(ALL_OBJECT_FILES$(LOCAL_MODULE)):
-       * cross/ndk-build/ndk-build-static-library.mk (objname)::($(call
-       objname,$(LOCAL_MODULE),$(basename
-       $(1))))::(ALL_OBJECT_FILES$(LOCAL_MODULE)):
-       (ALL_SOURCE_FILES): Update ImageMagick build instructions and
-       C++ module detection.
+       (NDK_$(LOCAL_MODULE)_STATIC_LIBRARIES)
+       (NDK_CXX_FLAG_$(LOCAL_MODULE)):
+       * cross/ndk-build/ndk-build-shared-library.mk (objname)
+       ($(call objname,$(LOCAL_MODULE),$(basename $(1))))
+       (ALL_OBJECT_FILES$(LOCAL_MODULE)):
+       * cross/ndk-build/ndk-build-static-library.mk (objname)
+       ($(call objname,$(LOCAL_MODULE),$(basename $(1))))
+       (ALL_OBJECT_FILES$(LOCAL_MODULE)):
+       (ALL_SOURCE_FILES): Update ImageMagick build instructions and C++
+       module detection.
 
        * src/android.c (android_run_select_thread): Fix typos.
-
-       Make android_select more robust
-       * src/android.c (android_run_select_thread): Lock select_mutex
-       before signalling condition variable.
+       (android_run_select_thread): Lock select_mutex before signalling
+       condition variable.
        (android_select): Unlock event queue mutex prior to waiting for
        it.
 
 2023-02-22  Po Lu  <luangruo@yahoo.com>
 
-       ; Fix typo
        * cross/ndk-build/ndk-build-shared-library.mk: Fix typo.
 
        * src/image.c (imagemagick_load_image): Check HAVE_DECL_xxx.
 
-2023-02-22  Po Lu  <luangruo@yahoo.com>
-
-       Update Android port
-       ImageMagick now builds but does not link yet some of the time.
-
        * INSTALL.android: Document ImageMagick and caveats.
+
        * build-aux/ndk-build-helper-1.mk (NDK_SO_NAMES):
        * build-aux/ndk-build-helper-2.mk (NDK_A_NAMES):
-       * build-aux/ndk-build-helper.mk (TARGET_ARCH_ABI): Define architecture
-       and don't respect explicitly specified library names.
+       * build-aux/ndk-build-helper.mk (TARGET_ARCH_ABI): Define
+       architecture and don't respect explicitly specified library names.
        * configure.ac: Enable ImageMagick and lcms2 on Android.
-       * cross/ndk-build/ndk-build-shared-library.mk (objname)::($(call
-       objname,$(LOCAL_MODULE),$(basename
-       $(1))))::(ALL_OBJECT_FILES$(LOCAL_MODULE)):
-       * cross/ndk-build/ndk-build-static-library.mk (objname)::($(call
-       objname,$(LOCAL_MODULE),$(basename $(1)))):
-       (NDK_CFLAGS, ALL_SOURCE_FILES): Handle sources files which start with
-       $(LOCAL_PATH).
-       * cross/ndk-build/ndk-clear-vars.mk: Don't undefine; clear variables
-       instead.
-       * m4/ndk-build.m4 (ndk_SEARCH_MODULE): Redirect make stderr to
-       config.log.xf64
+       * cross/ndk-build/ndk-build-shared-library.mk (objname)
+       ($(call objname,$(LOCAL_MODULE),$(basename $(1))))
+       (ALL_OBJECT_FILES$(LOCAL_MODULE)):
+       * cross/ndk-build/ndk-build-static-library.mk (objname)
+       ($(call objname,$(LOCAL_MODULE),$(basename $(1))))
+       (NDK_CFLAGS, ALL_SOURCE_FILES): Handle source files whose names
+       begin with $(LOCAL_PATH).
 
-2023-02-22  Po Lu  <luangruo@yahoo.com>
+       * cross/ndk-build/ndk-clear-vars.mk: Don't undefine; clear
+       variables instead.
+
+       * m4/ndk-build.m4 (ndk_SEARCH_MODULE): Redirect make stderr to
+       config.log.
 
        * src/androidmenu.c (android_menu_show): Fix typo.
 
-       Update Android port
-       * doc/emacs/input.texi (On-Screen Keyboards): Document changes
-       to text conversion.
-       * java/org/gnu/emacs/EmacsInputConnection.java (getExtractedText)
-       (EmacsInputConnection):
+       * doc/emacs/input.texi (On-Screen Keyboards): Document changes to
+       text conversion.
+
+       * java/org/gnu/emacs/EmacsInputConnection.java (getExtractedText):
        * src/keyboard.c (read_key_sequence): Disable text conversion
        after reading prefix key.
+
        * src/textconv.c (get_extracted_text): Fix returned value when
        request length is zero.
 
-       Merge remote-tracking branch 'origin/master' into feature/android
-
-       Add cross-compilation test for cleanup attribute
        * configure.ac: Per title.
 
-       Update Android port
        * INSTALL.android: Port to MIPS.
-       * configure.ac (modules): Default to ifavailable.
-       Write actual test for __attribute__((cleanup)).
+
+       * configure.ac (modules): Default to ifavailable.  Write actual
+       test for __attribute__((cleanup)).
+
        * m4/ndk-build.m4: Recognize mips and mips64.
+
        * src/emacs-module.c: Remove broken HAS_ATTRIBUTE test.
 
 2023-02-21  Po Lu  <luangruo@yahoo.com>
 
-       Merge remote-tracking branch 'origin/master' into feature/android
+       * java/org/gnu/emacs/EmacsContextMenu.java (addSubmenu)
+       (inflateMenuItems): Handle tooltips correctly.
 
-       Update Android port
-       * java/org/gnu/emacs/EmacsContextMenu.java (EmacsContextMenu)
-       (addSubmenu, inflateMenuItems): Handle tooltips correctly.
        * src/android.c (android_scan_directory_tree): Fix limit
        generation for root directory.
+
        * src/androidmenu.c (android_init_emacs_context_menu)
-       (android_menu_show): Implement menu item help text on Android
-       8.0 and later.
-
-       Update from gnulib
-       * admin/merge-gnulib (GNULIB_MODULES):
-       * cross/lib/getopt-pfx-core.h (optind):
-       * cross/lib/limits.in.h (BOOL_WIDTH):
-       * cross/lib/math.in.h:
-       * cross/lib/stpncpy.c (__stpncpy):
-       * cross/lib/string.in.h:
-       * lib/getopt-pfx-core.h (optind):
-       * lib/gnulib.mk.in (ANDROID_MIN_SDK):
-       (GL_COND_OBJ_STDIO_READ_CONDITION):
-       (LIBS):
-       (NDK_BUILD_AR):
-       (REPLACE__EXIT):
-       (libgnu_a_SOURCES):
-       * lib/limits.in.h (BOOL_WIDTH):
-       * lib/math.in.h:
-       * lib/stpncpy.c (__stpncpy):
-       * lib/string.in.h:
-       * m4/assert_h.m4 (gl_ASSERT_H):
-       * m4/fdopendir.m4 (gl_FUNC_FDOPENDIR):
-       * m4/getdelim.m4 (gl_FUNC_GETDELIM):
-       * m4/getline.m4 (gl_FUNC_GETLINE):
-       * m4/gnulib-common.m4 (gl_COMMON_BODY):
-       (gl_CONDITIONAL_HEADER):
-       (gl_CHECK_FUNCS_ANDROID):
-       * m4/gnulib-comp.m4 (gl_EARLY):
-       (gl_INIT):
-       (gl_FILE_LIST):
-       * m4/limits-h.m4:
-       * m4/lstat.m4 (gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK):
-       * m4/malloc.m4 (_AC_FUNC_MALLOC_IF):
-       * m4/printf.m4 (gl_PRINTF_SIZES_C99):
-       (gl_PRINTF_INFINITE):
-       (gl_PRINTF_INFINITE_LONG_DOUBLE):
-       (gl_PRINTF_DIRECTIVE_A):
-       (gl_PRINTF_DIRECTIVE_F):
-       (gl_PRINTF_FLAG_ZERO):
-       (gl_SNPRINTF_PRESENCE):
-       (gl_SNPRINTF_DIRECTIVE_N):
-       (gl_VSNPRINTF_ZEROSIZE_C99):
-       * m4/pselect.m4 (gl_FUNC_PSELECT):
-       * m4/readlink.m4 (gl_FUNC_READLINK):
-       * m4/realloc.m4 (_AC_FUNC_REALLOC_IF):
-       * m4/signbit.m4 (gl_SIGNBIT):
-       * m4/stpncpy.m4 (gl_FUNC_STPNCPY):
-       * m4/symlink.m4 (gl_FUNC_SYMLINK): Add gnulib module stpncpy.
+       (android_menu_show): Implement menu item help text on Android 8.0
+       and later.
+
+       * admin/merge-gnulib (GNULIB_MODULES): Add gnulib module stpncpy.
+
+       * m4, lib: Update from Gnulib.
+
        * src/android.c: Include string.h.
 
-       Update Android port
        * doc/emacs/android.texi (Android Startup): Document `content'
        special directory.
+
        * java/debug.sh (is_root): Improve /bin/tee detection.
-       * java/org/gnu/emacs/EmacsNative.java (EmacsNative): New
-       function `dup'.
-       * java/org/gnu/emacs/EmacsOpenActivity.java (EmacsOpenActivity)
-       (checkReadableOrCopy, onCreate): Create content directory names
-       when the file is not readable.
-       * java/org/gnu/emacs/EmacsService.java (EmacsService)
-       (openContentUri, checkContentUri): New functions.
+
+       * java/org/gnu/emacs/EmacsNative.java (dup): New function.
+
+       * java/org/gnu/emacs/EmacsOpenActivity.java (checkReadableOrCopy)
+       (onCreate): Create content directory names when the file is not
+       readable.
+
+       * java/org/gnu/emacs/EmacsService.java (openContentUri)
+       (checkContentUri): New functions.
+
        * src/android.c (struct android_emacs_service): New methods.
        (android_content_name_p, android_get_content_name)
        (android_check_content_access): New function.
        (android_init_emacs_service): Initialize new methods.
        (android_faccessat): Implement content file names.
 
-       Merge remote-tracking branch 'origin/master' into feature/android
-
 2023-02-20  Po Lu  <luangruo@yahoo.com>
 
-       Merge remote-tracking branch 'origin/master' into feature/android
-
-2023-02-20  Po Lu  <luangruo@yahoo.com>
-
-       Update Android port
        * INSTALL.android: Explain where to get tree-sitter.
 
        * configure.ac: Add support for dynamic modules and tree-sitter.
 
        * doc/emacs/android.texi (Android Windowing):
+
        * java/org/gnu/emacs/EmacsSdk11Clipboard.java
-       (EmacsSdk11Clipboard, ownsClipboard): Improve clipboard handling
-       and documentation.
+       (ownsClipboard): Enhance the treatment of the clipboard and the
+       documentation addressing that subject.
 
 2023-02-20  Po Lu  <luangruo@yahoo.com>
 
-       Fix crash inside font-list-family
        * src/androidfont.c (androidfont_list_family): Don't
        unconditionally initialize the Android font driver.
 
-       Merge remote-tracking branch 'origin/master' into feature/android
-
-       Improve SFNT driver lookup efficiency
        * src/fontset.c (fontset_find_font): Add compatibility test to
        registry strangeness case.
+
        * src/sfnt.c (sfnt_read_cmap_table): Don't read subtable data if
        DATA is NULL.
+
        * src/sfntfont.c (struct sfnt_font_desc): New field `registry'.
        (sfnt_registry_for_subtable): New function.
        (sfntfont_identify_cmap): Move above sfnt_grok_registry.
        (sfntfont_registry_for_desc): New function.
        (mark_sfntfont): Mark desc->registry.
 
-       Improve reliability of Java code rebuilds
-       * java/Makefile.in ($(CLASS_FILES)): Depend on the Java
-       compiler's internal dependency tracking.
-
-2023-02-19  Po Lu  <luangruo@yahoo.com>
+       * java/Makefile.in ($(CLASS_FILES)): Depend on the Java compiler's
+       internal dependency tracking.
 
-       Match font registry after font is opened
        * src/fontset.c (fontset_find_font): Work around TrueType
        performance problem.
 
-       Merge remote-tracking branch 'origin/master' into feature/android
-
        * cross/Makefile.in (src/libemacs.so): Depend on libgnu.a.
 
-       More fixes to parallel Make
        * cross/ndk-build/ndk-build.mk.in (NDK_BUILD_MODULES)
        (NDK_BUILD_SHARED, NDK_BUILD_STATIC): Define group rule to build
        all files so that they are built within one make process.
+
        * java/Makefile.in: Reorganize cross compilation and make sure
-       there is only one make subprocess for each subdirectory of
-       cross.
-
-       More parallel build fixes
-       * cross/Makefile.in: (.PHONY):
-       * java/Makefile.in: (.PHONY):
-       * src/Makefile.in: (libemacs.so): Avoid calling ndk-build from
-       two places at once.  Build android-emacs separately from
-       libemacs.so.
+       there is only one make subprocess for each subdirectory of cross.
+
+       * cross/Makefile.in (.PHONY):
+       * java/Makefile.in (.PHONY):
+       * src/Makefile.in (libemacs.so): Avoid calling ndk-build from two
+       places at once.  Build android-emacs separately from libemacs.so.
 
-       Fix parallel compilation of Android port
        * cross/Makefile.in ($(top_builddir)/lib/libgnu.a):
-       * java/Makefile.in (CROSS_LIBS): Explicitly depend on gnulib
-       to prevent it from being built at the same time from different
-       jobs.
+       * java/Makefile.in (CROSS_LIBS): Explicitly depend on gnulib to
+       prevent it from being built at the same time from different jobs.
 
-       Fix sfntfont.c build without mmap
        * src/sfntfont.c (sfntfont_close): Don't unlink font if mmap is
        not available.
 
-       Improve Android documentation
        * INSTALL.android: Say where building Emacs is supported.
+
        * doc/emacs/android.texi (Android Startup): Describe how to
        connect via ADB.
 
-       Report both sides of the region to the input method upon setup
-       * java/org/gnu/emacs/EmacsNative.java (getSelection): Return
-       array of ints.
+       * java/org/gnu/emacs/EmacsNative.java (getSelection): Return array
+       of ints.
+
        * java/org/gnu/emacs/EmacsView.java (onCreateInputConnection):
        Adjust accordingly.
+
        * src/androidterm.c (struct android_get_selection_context): New
        field `mark'.
        (android_get_selection): Set the mark field as appropriate.
        (getSelection): Adjust accordingly.
 
-       Fix gamegrid.el with high resolution displays
-       * lisp/play/gamegrid.el (gamegrid-setup-default-font): Clamp
-       font size at eight.
+       * lisp/play/gamegrid.el (gamegrid-setup-default-font): Clamp font
+       size at eight.
 
-       Allow opening more files in emacsclient on Android
-       * java/org/gnu/emacs/EmacsOpenActivity.java (EmacsOpenActivity)
-       (checkReadableOrCopy): New function.
-       (onCreate): If the file specified is not readable from C, read
-       it into a temporary file and ask Emacs to open that.
+       * java/org/gnu/emacs/EmacsOpenActivity.java (checkReadableOrCopy):
+       New function.
+       (onCreate): If the file specified is not readable from C, read it
+       into a temporary file and ask Emacs to open that.
 
-       Implement `fullscreen' on Android 4.0 and later
        * doc/emacs/android.texi (Android Windowing): Document what new
        frame parameters are now supported.
-       * java/org/gnu/emacs/EmacsActivity.java (EmacsActivity): New
-       field `isFullscreen'.
+
+       * java/org/gnu/emacs/EmacsActivity.java (EmacsActivity): New field
+       `isFullscreen'.
        (detachWindow, attachWindow): Sync fullscreen state.
        (onWindowFocusChanged): Add more logging.
        (onResume): Restore previous fullscreen state.
        (syncFullscreen): New function.
-       * java/org/gnu/emacs/EmacsWindow.java (EmacsWindow)
-       (setFullscreen): New function.
+
+       * java/org/gnu/emacs/EmacsWindow.java (setFullscreen): New
+       function.
+
        * src/android.c (struct android_emacs_window): Add new method.
        (android_init_emacs_window): Look up new method.
        (android_set_fullscreen): New function.
+
        * src/androidgui.h:
        * src/androidterm.c (android_fullscreen_hook): Implement
        accordingly.
 
-       Fix crashes in desktop-save-mode
        * lisp/subr.el (overriding-text-conversion-style, y-or-n-p):
        Disable text conversion when reading from minibuffer.
+
        * src/androidfns.c (android_make_monitor_attribute_list): New
        function.
        (Fandroid_display_monitor_attributes_list): Call it to set
        monitor_frames, which avoids a NULL pointer dereference.
        Reported by Angelo Graziosi <angelo.g0@libero.it>.
 
-       Merge remote-tracking branch 'origin/master' into feature/android
-
 2023-02-18  Po Lu  <luangruo@yahoo.com>
 
        * lisp/loadup.el: Fix merge typos.
 
-       Merge remote-tracking branch 'origin/master' into feature/android
-
-       Update Android port
        * doc/emacs/input.texi (On-Screen Keyboards): Document
        `touch-screen-always-display'.
+
        * doc/lispref/commands.texi (Misc Events): Improve documentation
        of text conversion events.
+
        * java/org/gnu/emacs/EmacsDialog.java (toAlertDialog, display1):
        Reorder buttons to make more sense.
+
        * lisp/elec-pair.el (electric-pair-analyze-conversion): New
        function.
+
        * lisp/simple.el (analyze-text-conversion): Improve integration
        with electric pair modes.
-       * lisp/term.el (term-mode): Always display the onscreen
-       keyboard.
+
+       * lisp/term.el (term-mode): Always display the onscreen keyboard.
+
        * lisp/touch-screen.el (touch-screen-display-keyboard)
        (touch-screen-handle-point-up): Respect new options.
+
        * src/textconv.c (really_set_composing_text): Stop widenining
        unnecessarily.
-       (really_delete_surrounding_text): Really delete surrounding
-       text.  Give text conversion analyzers the buffer text.
+       (really_delete_surrounding_text): Really delete surrounding text.
+       Give text conversion analyzers the buffer text.
        (syms_of_textconv): Update doc string.
 
-       Notify input methods when editing fails
        * INSTALL.android: Clarify build instructions.
+
        * src/textconv.c (struct complete_edit_check_context): New
        structure.
        (complete_edit_check): New function.
-       (handle_pending_conversion_events_1): If the window is known,
-       then ensure that any editing failures are reported to the input
-       method.
+       (handle_pending_conversion_events_1): If the window is known, then
+       ensure that any editing failures are reported to the input method.
 
-       * configure.ac: Fix typo.
+       * configure.ac: Fix typo.  Check for madvise.
 
-       Update Android port
-       * configure.ac: Check for madvise.
        * lisp/international/fontset.el (script-representative-chars):
        Improve detection of CJK fonts.
+
        * src/pdumper.c (dump_discard_mem): Use madvise if possible.
+
        * src/sfnt.c (sfnt_map_glyf_table, sfnt_unmap_glyf_table): New
        functions.
+
        * src/sfnt.h (struct sfnt_glyf_table): New field.
+
        * src/sfntfont.c (struct sfnt_font_info, sfntfont_open)
-       (sfntfont_close, sfntfont_detect_sigbus): Allow mmapping fonts
-       if possible.
+       (sfntfont_close, sfntfont_detect_sigbus): Map fonts into memory if
+       possible.
+
        * src/sfntfont.h: Update prototypes.
+
        * src/sysdep.c (handle_sigbus, init_sigbus, init_signals):
        Initialize SIGBUS correctly.
 
-       Merge remote-tracking branch 'origin/master' into feature/android
-
 2023-02-17  Po Lu  <luangruo@yahoo.com>
 
-       Work around race condition bug in Android 13's input manager
        * src/androidterm.c (android_get_selection): Use ephemeral last
        point.
+
        * src/textconv.c (report_selected_window_change): Set
        w->ephemeral_last_point to the window's point now.
 
-       Update emacsbug and version.el for the Android port
        * java/Makefile.in (install_temp/assets/version): New generated
        file.
-       * lisp/loadup.el: Set emacs versions appropriately prior to
+
+       * lisp/loadup.el: Set Emacs versions appropriately prior to
        dumping on Android.
-       * lisp/mail/emacsbug.el (emacs-build-description): Insert
-       Android build fingerprint.
+
+       * lisp/mail/emacsbug.el (emacs-build-description): Insert Android
+       build fingerprint.
+
        * lisp/version.el (emacs-repository-version-android)
        (emacs-repository-get-version, emacs-repository-get-branch):
        Implement for Android.
-       * src/androidterm.c (android_set_build_fingerprint): New
-       function.
+
+       * src/androidterm.c (android_set_build_fingerprint): New function.
        (syms_of_androidterm): New variable `android-build-fingerprint'.
 
        * src/android.c (android_exception_check): Fix typo.
+       (android_exception_check): Print more detailed information.
 
-       Merge remote-tracking branch 'origin/master' into feature/android
-
-       Improve logging of Java exceptions
-       * src/android.c (android_exception_check): Print more detailed
-       information.
-
-       Fix crash on old versions of Android
        * java/org/gnu/emacs/EmacsService.java (nameKeysym): Implement
        stub on Android 3.0 and earlier.
 
-       Fix build and running on Android 2.2
-       * INSTALL.android: Document that Android 2.2 is now supported,
-       with caveats.
+       * INSTALL.android: Document that Android 2.2 is now supported)
+       (with caveats.
+
        * configure.ac (ANDROID_MIN_SDK, ANDROID_SDK_18_OR_EARLIER)
        (SYSTEM_TYPE, ANDROID_STUBIFY, SIZEOF_LONG): Correctly detect
        things missing on Android 2.2.
+
        * java/Makefile.in (ANDROID_JAR, JARSIGNER_FLAGS):
        * java/debug.sh (jdb, gdbserver, line):
        * java/org/gnu/emacs/EmacsApplication.java (findDumpFile):
        * java/org/gnu/emacs/EmacsService.java (onCreate):
-       * java/org/gnu/emacs/EmacsThread.java (EmacsThread, run): Run
-       parameter initialization on main thread.
+       * java/org/gnu/emacs/EmacsThread.java (run): Run parameter
+       initialization on main thread.
+
        * src/android-asset.h (struct android_asset_manager)
        (struct android_asset, AAssetManager_fromJava, AAssetManager_open)
        (AAsset_close, android_asset_create_stream)
        (android_asset_read_internal, AAsset_openFileDescriptor)
        (AAsset_getLength, AAsset_getBuffer, AAsset_read): New file.
-       * src/android.c (android_user_full_name, android_hack_asset_fd)
+       Write substitutes for functions that aren't present within the NDK
+       on Android 2.2.
+
+       * src/android.c: Arrange to include android-asset.h if the minimum
+       supported Android version is 2.2.
+       (android_user_full_name, android_hack_asset_fd)
        (android_check_compressed_file): Implement for Android 2.2.
+
        * src/process.c (Fprocess_send_eof): Don't call tcdrain if
        unavailable.
+
        * src/sfntfont-android.c (system_font_directories): Fix compiler
        warning.
+
        * src/sfntfont.c (sfntfont_read_cmap): Correctly test rc of
        emacs_open.
-       * src/textconv.c (handle_pending_conversion_events_1): Mark
-       buffer UNINIT.
 
-2023-02-16  Po Lu  <luangruo@yahoo.com>
-
-       Merge remote-tracking branch 'origin/master' into feature/android
+       * src/textconv.c (handle_pending_conversion_events_1): Mark buffer
+       UNINIT.
 
 2023-02-16  Po Lu  <luangruo@yahoo.com>
 
-       Update Android port
        * doc/emacs/android.texi (Android Fonts):
        * doc/emacs/input.texi (On-Screen Keyboards):
        * doc/lispref/commands.texi (Misc Events): Update documentation.
-       * java/org/gnu/emacs/EmacsInputConnection.java (setSelection):
-       New function.
-       * java/org/gnu/emacs/EmacsSurfaceView.java (EmacsSurfaceView)
-       (reconfigureFrontBuffer): Make bitmap references weak
-       references.
+
+       * java/org/gnu/emacs/EmacsInputConnection.java (setSelection): New
+       function.
+       * java/org/gnu/emacs/EmacsSurfaceView.java
+       (reconfigureFrontBuffer): Make bitmap references weak references.
+
        * java/org/gnu/emacs/EmacsView.java (handleDirtyBitmap): Don't
        clear surfaceView bitmap.
-       * lisp/comint.el (comint-mode):
+
+       * lisp/comint.el (comint-mode): Set text-conversion-style to
+       `action' so on screen keyboards' Return buttons send an actual key
+       press event.
+
        * lisp/international/fontset.el (script-representative-chars)
        (setup-default-fontset): Improve detection of CJK fonts.
+
        * lisp/isearch.el (set-text-conversion-style): New variable.
-       (isearch-mode, isearch-done): Save and restore the text
-       conversion style.
+       (isearch-mode, isearch-done): Save and restore the text conversion
+       style.
+
        * lisp/minibuffer.el (minibuffer-mode): Set an appropriate text
        conversion style.
+
        * lisp/simple.el (analyze-text-conversion): Run
        post-self-insert-hook properly.
+
        * lisp/subr.el (read-char-from-minibuffer): Disable text
        conversion when reading character.
-       * src/androidterm.c (show_back_buffer): Don't check that F is
-       not garbaged.
+
+       * src/androidterm.c (show_back_buffer): Don't check that F is not
+       garbaged.
        (android_update_selection, android_reset_conversion): Use the
        ephemeral last point and handle text conversion being disabled.
+
        * src/buffer.c (syms_of_buffer): Convert old style DEFVAR.
+
        * src/keyboard.c (kbd_buffer_get_event): Handle text conversion
        first.
+
        * src/lisp.h: Update prototypes.
+
        * src/lread.c (read_filtered_event): Temporarily disable text
        conversion.
-       * src/sfnt.c (sfnt_decompose_glyph_1, sfnt_decompose_glyph_2):
-       New functions.
+
+       * src/sfnt.c (sfnt_decompose_glyph_1, sfnt_decompose_glyph_2): New
+       functions.
        (sfnt_decompose_glyph, sfnt_decompose_instructed_outline):
        Refactor contour decomposition to those two functions.
        (main): Update tests.
+
        * src/sfntfont-android.c (system_font_directories): Add empty
        field.
-       (Fandroid_enumerate_fonts, init_sfntfont_android): Enumerate
-       fonts in a user fonts directory.
-       * src/sfntfont.c (struct sfnt_font_desc): New field
-       `num_glyphs'.
+       (Fandroid_enumerate_fonts, init_sfntfont_android): Enumerate fonts
+       in a user fonts directory.
+
+       * src/sfntfont.c (struct sfnt_font_desc): New field `num_glyphs'.
        (sfnt_enum_font_1): Set num_glyphs and avoid duplicate fonts.
        (sfntfont_glyph_valid): New function.
        (sfntfont_lookup_char, sfntfont_list_1): Make sure glyphs found
        (handle_pending_conversion_events_1)
        (handle_pending_conversion_events, conversion_disabled_p)
        (disable_text_conversion, resume_text_conversion)
-       (Fset_text_conversion_style, syms_of_textconv): Update to
-       respect new options.
-       * src/textconv.h:
+       (Fset_text_conversion_style, syms_of_textconv): Update to respect
+       new options.
+
        * src/window.h (GCALIGNED_STRUCT): New field
        `ephemeral_last_point'.
+
        * src/xdisp.c (mark_window_display_accurate_1): Set it.
 
 2023-02-15  Po Lu  <luangruo@yahoo.com>
 
-       Update Android port
        * doc/emacs/input.texi (On-Screen Keyboards):
        * doc/lispref/commands.texi (Misc Events): Improve documentation
        of text conversion stuff.
+
        * java/org/gnu/emacs/EmacsInputConnection.java (beginBatchEdit)
-       (endBatchEdit, commitCompletion, commitText, deleteSurroundingText)
+       (endBatchEdit, commitCompletion, commitText)
+       (deleteSurroundingText)
        (finishComposingText, getSelectedText, getTextAfterCursor)
        (EmacsInputConnection, setComposingRegion, performEditorAction)
        (getExtractedText): Condition debug code on DEBUG_IC.
+
        * java/org/gnu/emacs/EmacsService.java (EmacsService, updateIC):
        Likewise.
+
        * lisp/bindings.el (global-map):
        * lisp/electric.el (global-map): Make `text-conversion'
        `analyze-text-conversion'.
-       * lisp/progmodes/prog-mode.el (prog-mode): Enable text
-       conversion in input methods.
+
+       * lisp/progmodes/prog-mode.el (prog-mode): Enable text conversion
+       in input methods.
+
        * lisp/simple.el (analyze-text-conversion): New function.
+
        * lisp/textmodes/text-mode.el (text-conversion-style)
        (text-mode): Likewise.
+
        * src/androidterm.c (android_handle_ime_event): Handle
        set_point_and_mark.
        (android_sync_edit): Give Emacs 100 ms instead.
        (getSelectedText): Implement properly.
        (android_update_selection): Expose mark to input methods.
        (android_reset_conversion): Handle `text-conversion-style'.
+
        * src/buffer.c (init_buffer_once, syms_of_buffer): Add buffer
        local variable `text-conversion-style'.
+
        * src/buffer.h (struct buffer, bset_text_conversion_style): New
        fields.
+
        * src/emacs.c (android_emacs_init): Call syms_of_textconv.
+
        * src/frame.h (enum text_conversion_operation): Rename
        TEXTCONV_SET_POINT.
-       * src/lisp.h: Export syms_of_textconv.
+
+       * src/lisp.h (syms_of_textconv): Export syms_of_textconv.
 
        * src/marker.c (set_marker_internal): Force redisplay when the
        mark is set and the buffer is visible on builds that use text
 
        * src/textconv.h (struct textconv_interface): Update
        documentation.
+
        * src/window.h (GCALIGNED_STRUCT): New field `prev_mark'.
-       * src/xdisp.c (mark_window_display_accurate_1): Handle
-       prev_mark.
 
-2023-02-15  Po Lu  <luangruo@yahoo.com>
+       * src/xdisp.c (mark_window_display_accurate_1): Handle prev_mark.
 
-       Make debug.sh detect adb running as root
        * java/debug.sh: Run gdbserver directly if possible.
 
-       Fix small bugs
        * src/androidterm.c (android_handle_ime_event): Pacify compiler
        warnings.
+
        * src/textconv.c (really_set_composing_text)
        (handle_pending_conversion_events, get_extracted_text): Fix
        reentrancy problems and uses of uninitialized values.
 
-       Merge remote-tracking branch 'origin/master' into feature/android
-
-2023-02-15  Po Lu  <luangruo@yahoo.com>
-
-       Update Android port
        * configure.ac (HAVE_TEXT_CONVERSION): Define on Android.
+
        * doc/emacs/input.texi (On-Screen Keyboards): Document ``text
        conversion'' slightly.
+
        * doc/lispref/commands.texi (Misc Events): Document new
        `text-conversion' event.
+
        * java/org/gnu/emacs/EmacsContextMenu.java (display): Use
        `syncRunnable'.
+
        * java/org/gnu/emacs/EmacsDialog.java (display): Likewise.
+
        * java/org/gnu/emacs/EmacsEditable.java: Delete file.
+
        * java/org/gnu/emacs/EmacsInputConnection.java
        (EmacsInputConnection): Reimplement from scratch.
+
        * java/org/gnu/emacs/EmacsNative.java (EmacsNative): Add new
        functions.
-       * java/org/gnu/emacs/EmacsService.java (EmacsService, getEmacsView)
+
+       * java/org/gnu/emacs/EmacsService.java (getEmacsView)
        (getLocationOnScreen, sync, getClipboardManager, restartEmacs):
        Use syncRunnable.
        (syncRunnable): New function.
        (setICMode, getICMode): New functions.
 
        * lisp/bindings.el (global-map): Ignore text conversion events.
+
        * src/alloc.c (mark_frame): Mark text conversion data.
+
        * src/android.c (struct android_emacs_service): New fields
        `update_ic' and `reset_ic'.
        (event_serial): Export.
        methods.
        (android_check_query, android_begin_query, android_end_query)
        (android_run_in_emacs_thread):
-       (android_update_ic, android_reset_ic): New functions for
-       managing synchronous queries from one thread to another.
+       (android_update_ic, android_reset_ic): New functions for managing
+       synchronous queries from one thread to another.
 
        * src/android.h: Export new functions.
+
        * src/androidgui.h (enum android_event_type): Add input method
        events.
        (enum android_ime_operation, struct android_ime_event)
        (union android_event, enum android_ic_mode): New structs and
        enums.
 
-       * src/androidterm.c (android_window_to_frame): Allow DPYINFO to
-       be NULL.
+       * src/androidterm.c (android_window_to_frame): Allow DPYINFO to be
+       NULL.
        (android_decode_utf16, android_handle_ime_event)
        (handle_one_android_event, android_sync_edit)
        (android_copy_java_string, beginBatchEdit, endBatchEdit)
        (getSelectedtext, getTextAfterCursor, getTextBeforeCursor)
        (setComposingText, setComposingRegion, setSelection, getSelection)
        (performEditorAction, getExtractedText): New functions.
-       (struct android_conversion_query_context):
-       (android_perform_conversion_query):
-       (android_text_to_string):
-       (struct android_get_selection_context):
-       (android_get_selection):
-       (struct android_get_extracted_text_context):
-       (android_get_extracted_text):
-       (struct android_extracted_text_request_class):
-       (struct android_extracted_text_class):
-       (android_update_selection):
-       (android_reset_conversion):
-       (android_set_point):
-       (android_compose_region_changed):
-       (android_notify_conversion):
+       (struct android_conversion_query_context)
+       (android_perform_conversion_query, android_text_to_string)
+       (android_get_selection_context, android_get_selection)
+       (android_get_extracted_text_context, android_get_extracted_text)
+       (android_extracted_text_request_class)
+       (android_extracted_text_class, android_update_selection)
+       (android_reset_conversion, android_set_point)
+       (android_compose_region_changed, android_notify_conversion)
        (text_conversion_interface): New functions and structures.
        (android_term_init): Initialize text conversion.
 
        * src/coding.c (syms_of_coding): Define Qutf_16le on Android.
+
        * src/frame.c (make_frame): Clear conversion data.
        (delete_frame): Reset conversion state.
 
        * src/frame.h (enum text_conversion_operation)
        (struct text_conversion_action, struct text_conversion_state)
        (GCALIGNED_STRUCT): Update structures.
+
        * src/keyboard.c (read_char, readable_events, kbd_buffer_get_event)
        (syms_of_keyboard): Handle text conversion events.
+
        * src/lisp.h:
        * src/process.c: Fix includes.
 
 
        * src/textconv.h (struct textconv_interface)
        (TEXTCONV_SKIP_CONVERSION_REGION): Update prototype.
+
        * src/xdisp.c (mark_window_display_accurate_1):
        * src/xfns.c (xic_string_conversion_callback):
        * src/xterm.c (init_xterm): Adjust accordingly.
 
 2023-02-12  Po Lu  <luangruo@yahoo.com>
 
-       Merge remote-tracking branch 'origin/master' into feature/android
+       * doc/emacs/android.texi (Android Environment): Mention that Emacs
+       also requests the notifications permission.
 
-       Merge remote-tracking branch 'origin/master' into feature/android
+       * java/org/gnu/emacs/EmacsEditable.java:
+       * java/org/gnu/emacs/EmacsInputConnection.java: New files.
+
+       * java/org/gnu/emacs/EmacsNative.java (EmacsNative): Load library
+       dependencies in a less verbose fashion.
 
-       Update Android port
-       * doc/emacs/android.texi (Android Environment): Document
-       notifications permission.
-       * java/org/gnu/emacs/EmacsEditable.java (EmacsEditable):
-       * java/org/gnu/emacs/EmacsInputConnection.java
-       (EmacsInputConnection): New files.
-       * java/org/gnu/emacs/EmacsNative.java (EmacsNative): Load
-       library dependencies in a less verbose fashion.
        * java/org/gnu/emacs/EmacsView.java (EmacsView): Make imManager
        public.
        (onCreateInputConnection): Set InputType to TYPE_NULL for now.
-       * java/org/gnu/emacs/EmacsWindow.java (EmacsWindow, onKeyDown)
-       (onKeyUp, getEventUnicodeChar): Correctly handle key events with
-       strings.
+
+       * java/org/gnu/emacs/EmacsWindow.java (onKeyDown, onKeyUp)
+       (getEventUnicodeChar): Correctly handle key events with strings.
+
        * lisp/term/android-win.el (android-clear-preedit-text)
        (android-preedit-text): New special event handlers.
+
        * src/android.c (struct android_emacs_window): Add function
        lookup_string.
        (android_init_emacs_window): Adjust accordingly.
        (android_wc_lookup_string): New function.
-       * src/androidgui.h (struct android_key_event): Improve
-       commentary.
+
+       * src/androidgui.h (struct android_key_event): Improve commentary.
        (enum android_lookup_status): New enum.
+
        * src/androidterm.c (handle_one_android_event): Synchronize IM
        lookup code with X.
+
        * src/coding.c (from_unicode_buffer): Implement on Android.
+
        * src/coding.h:
        * src/sfnt.c: Fix commentary.
 
 2023-02-11  Po Lu  <luangruo@yahoo.com>
 
-       Fix displaying popup menus from a menu entry on Android
-       * java/org/gnu/emacs/EmacsActivity.java (EmacsActivity, onDestroy)
+       * java/org/gnu/emacs/EmacsActivity.java (onDestroy)
        (onWindowFocusChanged): Keep track of the last focused activity.
-       * java/org/gnu/emacs/EmacsDialog.java (display1): Use it if
-       there is no current focus.
 
-       Merge remote-tracking branch 'origin/master' into feature/android
+       * java/org/gnu/emacs/EmacsDialog.java (display1): Use it if there
+       is no current focus.
 
 2023-02-10  Po Lu  <luangruo@yahoo.com>
 
-       Improve appearance of the Android preferences screen
        * .gitignore: Add org/gnu/emacs/R.java.
+
        * cross/Makefile.in (top_builddir): Include verbose.mk.  Rewrite
        rules to print nice looking statements.
+
        * doc/emacs/android.texi (Android, Android Startup)
        (Android Environment, Android Windowing, Android Fonts):
        * doc/emacs/emacs.texi (Top): Add an extra ``Android
        Troubleshooting'' node and move troubleshooting details there.
+
        * java/Makefile.in: Generate R.java; improve appearance by using
        verbose.mk.
 
-       * java/org/gnu/emacs/EmacsPreferencesActivity.java: Reimplement
-       in terms of PreferencesActivity.
+       * java/org/gnu/emacs/EmacsPreferencesActivity.java: Reimplement in
+       terms of PreferencesActivity.
+
        * java/org/gnu/emacs/EmacsView.java (handleDirtyBitmap): Avoid
        flicker.
+
        * java/res/xml/preferences.xml: New file.
-       * src/verbose.mk.in (AM_V_AAPT, AM_V_SILENT): New variables.
 
-2023-02-10  Po Lu  <luangruo@yahoo.com>
+       * src/verbose.mk.in (AM_V_AAPT, AM_V_SILENT): New variables.
 
-       Implement more features for the Emacs ``documents provider''
        * java/org/gnu/emacs/EmacsDocumentsProvider.java (queryRoots):
        Implement isChild.
        (getNotificationUri, notifyChange): New functions.
 
        * java/org/gnu/emacs/EmacsCopyArea.java (perform): Fix typo.
 
-       Merge remote-tracking branch 'origin/master' into feature/android
-
-       Fix buffer swapping on Android 7.1 and earlier
        * java/org/gnu/emacs/EmacsSurfaceView.java
        (reconfigureFrontBuffer): Don't use function only present on
        Android 8.0 and later.
 
-       Update Android port
        * doc/emacs/android.texi (Android Windowing): Remove yet another
        limitation.
+
        * java/debug.sh: Make this work on systems which prohibit
        attaching to app processes from adbd.
-       * java/org/gnu/emacs/EmacsCopyArea.java (perform): Avoid
-       creating copies whenever possible.
+
+       * java/org/gnu/emacs/EmacsCopyArea.java (perform): Avoid creating
+       copies whenever possible.
+
        * java/org/gnu/emacs/EmacsSurfaceView.java (EmacsSurfaceView):
        Remove SurfaceView based implementation and use manual double
        buffering with invalidate instead.
+
        * java/org/gnu/emacs/EmacsView.java (EmacsView, handleDirtyBitmap)
        (raise, lower, onDetachedFromWindow): Adjust accordingly.
+
        * java/org/gnu/emacs/EmacsWindow.java (windowUpdated): Remove
        function.
-       * src/sfntfont.c (sfntfont_open): Set font->max_width correctly.
-
-2023-02-10  Po Lu  <luangruo@yahoo.com>
 
-       Fix IUP for contours which start past end
-       Found with Droid Sans Mono hinted with ttfautohint 1.8.4.
+       * src/sfntfont.c (sfntfont_open): Set font->max_width correctly.
 
        * src/sfnt.c (IUP_SINGLE_PAIR): If i is initially more than end,
        make it start.
        (sfnt_verbose): Handle cases where interpreter->glyph_zone is
        NULL.
        (main): Update tests.
-
-2023-02-10  Po Lu  <luangruo@yahoo.com>
-
-       Fix typo
-       * src/sfnt.c (sfnt_read_cmap_table): Fix typo.
+       (sfnt_read_cmap_table): Fix typo.
        (main): Update tests.
 
 2023-02-09  Po Lu  <luangruo@yahoo.com>
 
-       Merge remote-tracking branch 'origin/master' into feature/android
+       * java/AndroidManifest.xml.in: Declare the new documents provider.
 
-       Allow other text editors to edit files in Emacs' home directory
-       * java/AndroidManifest.xml.in: Declare the new documents
-       provider.
        * java/README: Describe the meaning of files in res/values.
-       * java/org/gnu/emacs/EmacsDocumentsProvider.java
-       (EmacsDocumentsProvider): New file.
+
+       * java/org/gnu/emacs/EmacsDocumentsProvider.java: New file.
+
        * java/res/values-v19/bool.xml:
        * java/res/values/bool.xml: New files.
 
        * src/sfnt.c (main): Update tests.
 
-2023-02-09  Po Lu  <luangruo@yahoo.com>
-
-       Implement instructing compound glyphs
        * src/sfnt.c (sfnt_read_simple_glyph, sfnt_read_compound_glyph)
        (sfnt_read_glyph): Take size_t offsets.
        (struct sfnt_compound_glyph_context)
 
 2023-02-08  Po Lu  <luangruo@yahoo.com>
 
-       Update Android port
        * src/sfnt.c (SCFS): Fix order of arguments.
        (sfnt_normalize_vector): Make sure vx and vy are within a
        reasonable range.
        (sfnt_move): Don't move when vectors are orthogonal.
        (main): Update.
 
-       Update Android port
        * doc/emacs/android.texi (Android Startup): Fix typos.
+
        * src/sfnt.c (sfnt_interpret_msirp): Fix order in which operands
        to MSIRP are popped.
        (main): Reduce ppem values.
 
-       Merge remote-tracking branch 'origin/master' into feature/android
-
-2023-02-08  Po Lu  <luangruo@yahoo.com>
-
-       Update Android port
        * doc/lispref/frames.texi (On-Screen Keyboards): Describe return
        value of `frame-toggle-on-screen-keyboard'.
+
        * java/org/gnu/emacs/EmacsSurfaceView.java (surfaceChanged)
-       (surfaceCreated, EmacsSurfaceView): Remove unuseful
-       synchronization code.  The framework doesn't seem to look at
-       this at all.
+       (surfaceCreated): Remove purposeless synchronization code.  The
+       framework doesn't seem to consult this at all.
 
-       * java/org/gnu/emacs/EmacsView.java (EmacsView):
-       (onLayout): Lay out the window after children.
+       * java/org/gnu/emacs/EmacsView.java (onLayout): Lay out the window
+       after children.
        (swapBuffers): Properly implement `force'.
        (windowUpdated): Delete function.
 
-       * lisp/frame.el (frame-toggle-on-screen-keyboard): Return
-       whether or not the on screen keyboard might've been displayed.
+       * lisp/frame.el (frame-toggle-on-screen-keyboard): Return whether
+       or not the on screen keyboard might've been displayed.
 
-       * lisp/minibuffer.el (minibuffer-on-screen-keyboard-timer):
-       (minibuffer-on-screen-keyboard-displayed):
-       (minibuffer-setup-on-screen-keyboard):
+       * lisp/minibuffer.el (minibuffer-on-screen-keyboard-timer)
+       (minibuffer-on-screen-keyboard-displayed)
+       (minibuffer-setup-on-screen-keyboard)
        (minibuffer-exit-on-screen-keyboard): Improve OSK dismissal when
        there are consecutive minibuffers.
 
        * lisp/touch-screen.el (touch-screen-window-selection-changed):
        New function.
-       (touch-screen-handle-point-up): Register it as a window
-       selection changed function.
+       (touch-screen-handle-point-up): Register it as a window selection
+       changed function.
 
        * src/android.c (struct android_emacs_window)
-       (android_init_emacs_window): Remove references to
-       `windowUpdated'.
+       (android_init_emacs_window): Remove references to `windowUpdated'.
        (android_window_updated): Delete function.
+
        * src/android.h (struct android_output): Remove
        `last_configure_serial'.
+
        * src/androidterm.c (handle_one_android_event)
        (android_frame_up_to_date):
+
        * src/androidterm.h (struct android_output): Remove frame
        synchronization, as that does not work on Android.
 
-2023-02-08  Po Lu  <luangruo@yahoo.com>
-
-       Fix graphics state when instructing glyphs
        * src/sfntfont.c (sfntfont_get_glyph_outline): Take new argument
        STATE and restore it prior to instructing the glyph.
        (sfntfont_measure_instructed_pcm, sfntfont_measure_pcm)
        (sfntfont_draw): Adjust accordingly.
-
-       Correctly round bearing values while computing pcm
-       * src/sfntfont.c (sfntfont_measure_instructed_pcm)
+       (sfntfont_measure_instructed_pcm)
        (sfntfont_measure_pcm): Ceil rbearing value.
 
-2023-02-08  Po Lu  <luangruo@yahoo.com>
-
-       Improve text display on Android port
        * src/sfnt.c (sfnt_build_glyph_outline): Clear
        build_outline_context.
        (sfnt_poly_coverage): Extend coverage map.
        increase in coverage makes this hack unnecessary.
        (sfnt_build_outline_edges): Likewise.
        (sfnt_compare_edges): Remove function.
-       (sfnt_edge_sort): New function.  Since edges are already
-       partially sorted, and there are not many, insertion sort
-       suffices.
+       (sfnt_edge_sort): New function.  Since edges are already partially
+       sorted, and there are not many, insertion sort suffices.
        (sfnt_poly_edges): Use sfnt_edge_sort.
        (sfnt_fill_span): Stop rounding x0 and x1 to the grid, and make
        coverage computation static.
-       (sfnt_lookup_glyph_metrics): Fix return code for unscaled
-       metrics.
+       (sfnt_lookup_glyph_metrics): Fix return code for unscaled metrics.
        (sfnt_scale_metrics): New function.
        (SFNT_ENABLE_HINTING): Remove define.
        (struct sfnt_cvt_table, struct sfnt_fpgm_table)
        (struct sfnt_prep_table): Move to sfnt.h.
-       (sfnt_read_cvt_table):
-       (sfnt_read_fpgm_table, sfnt_read_prep_table): Make TEST_STATIC.
+       (sfnt_read_cvt_table, sfnt_read_fpgm_table, sfnt_read_prep_table):
+       Make TEST_STATIC.
        (struct sfnt_unit_vector, struct sfnt_interpreter_definition)
        (struct sfnt_interpreter_zone, struct sfnt_graphics_state):
        (struct sfnt_interpreter): Move to sfnt.h.
        (sfnt_make_interpreter): Make TEST_STATIC.
        (POP, PUSH, DELTAP1, DELTAP2, DELTAP3): When TEST, define to
        regular push and pop.
-       (sfnt_deltac):
-       (sfnt_deltap): Fix order of arguments.
+       (sfnt_deltac, sfnt_deltap): Fix order of arguments.
        (IUP_SINGLE_PAIR): Fix interpolation loop wraparound.
-       (sfnt_interpret_font_program):
+       (sfnt_interpret_font_program)
        (sfnt_interpret_control_value_program): Make TEST_STATIC.
        (struct sfnt_instructed_outline): Move to sfnt.h.
        (sfnt_build_instructed_outline): Make TEST_STATIC.
-       (sfnt_interpret_simple_glyph):
-       (sfnt_x_raster):
-       (sfnt_test_raster):
-       (all_tests):
-       (sfnt_verbose):
-       (main): Improve test code.
+       (sfnt_interpret_simple_glyph, sfnt_x_raster, sfnt_test_raster)
+       (all_tests, sfnt_verbose, main): Improve test code.
 
        * src/sfnt.h (SFNT_ENABLE_HINTING, struct sfnt_cvt_table)
        (struct sfnt_fpgm_table, struct sfnt_prep_table)
        (struct sfnt_interpreter_zone, struct sfnt_graphics_state)
        (struct sfnt_interpreter, struct sfnt_instructed_outline)
        (PROTOTYPE): New definitions.
+
        * src/sfntfont-android.c (sfntfont_android_put_glyphs): Make
        coordinate generation more straightforward.
+
        * src/sfntfont.c (sfntfont_get_glyph_outline): New arguments
        INTERPRETER and METRICS.
        (struct sfnt_font_info): New tables.
 
 2023-02-07  Po Lu  <luangruo@yahoo.com>
 
-       Merge remote-tracking branch 'origin/master' into feature/android
-
-       Remove junk from instruction table
-       * src/sfnt.c (sfnt_name_instruction): Do so.
-
-       Remove bresenham stuff
-       * src/sfnt.c (sfnt_step_edge, sfnt_step_edge_n)
+       * src/sfnt.c (sfnt_name_instruction): Remove junk from instruction
+       table.
+       (sfnt_step_edge, sfnt_step_edge_n)
        (sfnt_build_outline_edges, sfnt_test_edge, main):
        * src/sfnt.h (struct sfnt_edge): Stop using error corrected line
        drawing, as it's actually slower.
 
-2023-02-07  Po Lu  <luangruo@yahoo.com>
-
-       Update Android port
        * INSTALL.android: Describe patches for BoringSSL on ARM.
 
        * src/sfnt.c (sfnt_build_glyph_outline): Remove redundant
        (sfnt_large_integer_add): New function.
        (sfnt_mul_f26dot6_fixed): Round product.
        (sfnt_make_interpreter): Remove redundant multiplication.
-
-       (CHECK_STACK_ELEMENTS, POP_UNCHECKED, PUSH_UNCHECKED): New
-       macros.
+       (CHECK_STACK_ELEMENTS, POP_UNCHECKED, PUSH_UNCHECKED): New macros.
        (MOVE, POP, SWAP, CINDEX, RS, RCVT, LT, LTEQ, GT, GTEQ, EQ, NEQ)
        (EVEN, AND, OR, NOT, ADD, SUB, DIV, MUL, ABS, NEG, FLOOR, CEILING)
-       (GETINFO, ROLL, _MAX, _MIN, ROUND, NROUND, GC, MD): Don't check
-       SP redundantly, especially when pushing an element right after
+       (GETINFO, ROLL, _MAX, _MIN, ROUND, NROUND, GC, MD): Don't check SP
+       redundantly, especially when pushing an element right after
        popping one.
        (sfnt_move_glyph_zone): Don't touch points by passing NULL as
        flags.
-       (sfnt_direct_move_zp2): Touch P in the directions of the
-       movement.
+       (sfnt_direct_move_zp2): Touch P in the directions of the movement.
        (sfnt_interpret_scfs): Fix coding style.
        (sfnt_interpret_simple_glyph): Don't round Y coordinates.
-       (sfnt_test_span, sfnt_test_edges, sfnt_debug_edges, sfnt_test_edge)
+       (sfnt_test_span, sfnt_test_edges, sfnt_debug_edges)
+       (sfnt_test_edge)
        (sfnt_x_raster, sfnt_test_raster, rcvt_test_args)
        (deltac1_test_args, deltac2_test_args, deltac3_test_args)
        (roll_1_test_args, sfnt_run_hook, sfnt_identify_instruction)
 
 2023-02-06  Po Lu  <luangruo@yahoo.com>
 
-       Port emacsclient wrapper to Android 7.1 and earlier
-       * java/org/gnu/emacs/EmacsNative.java (EmacsNative): Load every
-       native library on which Emacs depends prior to loading libemacs
-       itself.
+       * java/org/gnu/emacs/EmacsNative.java
+       (EmacsNative) <static constructor>: Load every native library on
+       which Emacs depends prior to loading libemacs itself.
 
        * java/org/gnu/emacs/EmacsOpenActivity.java (readEmacsClientLog)
-       (EmacsOpenActivity, startEmacsClient): Don't use redirectError
-       on Android 7.1 and earlier.
-
-2023-02-06  Po Lu  <luangruo@yahoo.com>
+       (startEmacsClient): Don't use redirectError on Android 7.1 and
+       earlier.
 
-       Adjust ndk-build implementation for old NDK versions
        * configure.ac: Pass ANDROID_CFLAGS to ndk_INIT.
+
        * cross/ndk-build/Makefile.in (NDK_BUILD_CFLAGS):
        * cross/ndk-build/ndk-build-shared-library.mk
        ($(call objname,$(LOCAL_MODULE),$(basename $(1)))):
        * cross/ndk-build/ndk-build-static-library.mk
        ($(call objname,$(LOCAL_MODULE),$(basename $(1)))):
        ($$(error Unsupported suffix): Use NDK_BUILD_CFLAGS.
+
        * m4/ndk-build.m4 (ndk_INIT): Accept cflags.
        (ndk_CONFIG_FILES): Export NDK_BUILD_CFLAGS.
 
-       Merge remote-tracking branch 'origin/master' into feature/android
-
-2023-02-06  Po Lu  <luangruo@yahoo.com>
-
        Update Android port
        * java/AndroidManifest.xml.in: Prevent the Emacs activity from
        being overlayed by the emacsclient wrapper.
        * java/org/gnu/emacs/EmacsWindow.java (onTouchEvent): Handle
        ACTION_CANCEL correctly.
 
-2023-02-06  Po Lu  <luangruo@yahoo.com>
-
-       Update Android port
        * src/sfnt.c (struct sfnt_build_glyph_outline_context)
        (sfnt_build_glyph_outline, sfnt_fill_span): Improve glyph
        appearance by rounding coordinate values.
-
        (struct sfnt_interpreter): New fields `twilight_original_x',
        `twilight_original_y'.
        (sfnt_make_interpreter): Set new fields.
        callers changed.
        (sfnt_address_zp2, sfnt_address_zp1, sfnt_address_zp0): Obtain
        original positions in the twilight zone as well.
-       (sfnt_check_zp1, sfnt_interpret_fliprgoff, sfnt_interpret_fliprgon)
+       (sfnt_check_zp1, sfnt_interpret_fliprgoff)
+       (sfnt_interpret_fliprgon)
        (sfnt_interpret_flippt, sfnt_interpret_scfs, sfnt_interpret_miap)
        (sfnt_interpret_alignrp, sfnt_line_to_vector, P)
        (sfnt_interpret_msirp, sfnt_interpret_ip, sfnt_interpret_call)
        (load_point, sfnt_interpret_iup_1, sfnt_interpret_iup)
        (sfnt_interpret_run, struct sfnt_scaled_outline)
-       (struct sfnt_instructed_outline, sfnt_decompose_instructed_outline)
+       (struct sfnt_instructed_outline)
+       (sfnt_decompose_instructed_outline)
        (sfnt_build_instructed_outline, sfnt_compute_phantom_points)
        (sfnt_interpret_simple_glyph, all_tests, sfnt_setup_debugger)
        (sfnt_name_instruction, sfnt_draw_debugger, sfnt_run_hook)
 
 2023-02-05  Po Lu  <luangruo@yahoo.com>
 
-       Update Android port
        * INSTALL.android: Explain how to build selinux.
+
        * configure.ac: Enable selinux on Android.
-       * cross/ndk-build/ndk-build-shared-library.mk: ($(call
-       objname,$(LOCAL_MODULE),$(basename $(1))))::($$(error
-       Unsupported suffix)::(NDK_CFLAGS_$(LOCAL_MODULE)):
-       * cross/ndk-build/ndk-build-static-library.mk: ($(call
-       objname,$(LOCAL_MODULE),$(basename $(1))))::($$(error
-       Unsupported suffix)::(NDK_CFLAGS_$(LOCAL_MODULE)): Correctly
-       handle files with a .cc suffix, and clang-specific asflags.
+
+       * cross/ndk-build/ndk-build-shared-library.mk
+       ($(call objname,$(LOCAL_MODULE),$(basename $(1))))
+       ($$(error Unsupported suffix))
+       (NDK_CFLAGS_$(LOCAL_MODULE)):
+       * cross/ndk-build/ndk-build-static-library.mk
+       ($(call objname,$(LOCAL_MODULE),$(basename $(1))))
+       ($$(error Unsupported suffix))
+       (NDK_CFLAGS_$(LOCAL_MODULE)): Correctly handle files with a .cc
+       suffix, and clang-specific asflags.
+
        * cross/ndk-build/ndk-clear-vars.mk: Handle AOSP extensions
        LOCAL_ADDITIONAL_DEPENDENCIES,
        LOCAL_CLANG_ASFLAGS_$(NDK_BUILD_ARCH) and LOCAL_IS_HOST_MODULE.
 
        * java/org/gnu/emacs/EmacsView.java (EmacsView): New flag
        `isCurrentlyTextEditor'.
-       (showOnScreenKeyboard, hideOnScreenKeyboard): Set as
-       appropriate.
+       (showOnScreenKeyboard, hideOnScreenKeyboard): Set as appropriate.
        (onCheckIsTextEditor): Return its value.
 
        * lisp/touch-screen.el (touch-screen-handle-scroll): Don't ding
        at buffer limits.
+
        * m4/ndk-build.m4: Improve doc.
 
        * src/Makefile.in (LIBSELINUX_CFLAGS): New variable.
 
 2023-02-05  Po Lu  <luangruo@yahoo.com>
 
-       Update from gnulib
-       * admin/merge-gnulib (avoided_flags):
-       * cross/lib/cdefs.h (__bos):
-       (__glibc_unsigned_or_positive):
-       (__glibc_unsafe_len):
-       (__glibc_fortify):
-       (__glibc_fortify_n):
-       * cross/lib/isnan.c:
-       * cross/lib/libc-config.h:
-       * cross/lib/openat-proc.c (openat_proc_name):
-       * cross/lib/vasnprintf.c (VASNPRINTF):
-       * cross/lib/verify.h (_Static_assert):
-       (_GL_SA3):
-       * lib/gnulib.mk.in (HAVE_GRANTPT):
-       (HAVE_SPAWN_H):
-       (NEXT_AS_FIRST_DIRECTIVE_LIMITS_H):
-       (NEXT_LIMITS_H):
-       (REPLACE_GETSUBOPT):
-       (REPLACE_ILOGB):
-       (SYSTEM_TYPE):
-       (BUILT_SOURCES):
-       * lib/isnan.c:
-       * lib/vasnprintf.c (VASNPRINTF):
-       * lib/verify.h (_GL_SA3):
-       * m4/gnulib-common.m4 (gl_COMMON_BODY):
-       * m4/gnulib-comp.m4 (gl_INIT): Update from gnulib.
-
-       Merge remote-tracking branch 'origin/master' into feature/android
+       * m4, lib: Update from Gnulib.
 
-       Update Android port
-       * src/sfnt.c (struct sfnt_graphics_state):
-       (LOOPCALL):
-       (DELTAC3):
-       (PROJECT):
-       (SHPIX):
-       (sfnt_save_projection_vector):
-       (sfnt_check_zp0):
-       (sfnt_dual_project_vector):
-       (sfnt_interpret_scfs):
-       (sfnt_round_symmetric):
-       (sfnt_interpret_miap):
-       (sfnt_interpret_alignrp_1):
-       (sfnt_interpret_alignrp):
-       (sfnt_measure_distance):
-       (sfnt_interpret_msirp):
-       (sfnt_interpret_ip):
-       (sfnt_interpret_mdap):
-       (sfnt_deltap):
-       (sfnt_dual_project_onto_any_vector):
-       (sfnt_validate_gs):
-       (sfnt_set_projection_vector):
-       (sfnt_interpret_shp):
-       (sfnt_interpret_run):
-       (sfnt_check_sloop):
-       (main): Check in more WIP font code.
+       * src/sfnt.c (struct sfnt_graphics_state, LOOPCALL, DELTAC3)
+       (PROJECT, SHPIX, sfnt_save_projection_vector, sfnt_check_zp0)
+       (sfnt_dual_project_vector, sfnt_interpret_scfs)
+       (sfnt_round_symmetric, sfnt_interpret_miap)
+       (sfnt_interpret_alignrp_1, sfnt_interpret_alignrp)
+       (sfnt_measure_distance, sfnt_interpret_msirp, sfnt_interpret_ip)
+       (sfnt_interpret_mdap, sfnt_deltap)
+       (sfnt_dual_project_onto_any_vector, sfnt_validate_gs)
+       (sfnt_set_projection_vector, sfnt_interpret_shp)
+       (sfnt_interpret_run, sfnt_check_sloop, main): Check in more WIP
+       font code.
 
 2023-02-04  Po Lu  <luangruo@yahoo.com>
 
-       Add emacsclient desktop file equivalent on Android
        * doc/emacs/android.texi (Android File System):
+
        * java/AndroidManifest.xml.in: Update with new activity.  Remove
        Android 10 restrictions through a special flag.
 
        * java/org/gnu/emacs/EmacsNative.java (getProcName): New
        function.
-       * java/org/gnu/emacs/EmacsOpenActivity.java (EmacsOpenActivity):
-       New file.
+
+       * java/org/gnu/emacs/EmacsOpenActivity.java: New file.
+
        * java/org/gnu/emacs/EmacsService.java (getLibraryDirection):
        Remove unused annotation.
+
        * lib-src/emacsclient.c (decode_options): Set alt_display on
        Android.
-       * src/android.c (android_proc_name): New function.
-       (NATIVE_NAME): Export via JNI.
-
-2023-02-04  Po Lu  <luangruo@yahoo.com>
 
-       Merge remote-tracking branch 'origin/master' into feature/android
+       * src/android.c (android_proc_name): New function.
+       (getProcName): Export via JNI.
 
-       Add additional permissions to Android port
        * doc/emacs/android.texi (Android Environment):
+
        * java/AndroidManifest.xml.in: Add network state permissions.
 
-       Update Android port
-       * src/sfnt.c (sfnt_multiply_divide_signed):
-       (struct sfnt_interpreter_zone):
-       (struct sfnt_graphics_state):
-       (struct sfnt_interpreter):
-       (sfnt_mul_f2dot14):
-       (sfnt_interpret_trap):
-       (WCVTF):
-       (ALIGNPTS):
-       (sfnt_scale_by_freedom_vector):
-       (sfnt_interpret_utp):
-       (sfnt_address_zp2):
-       (sfnt_address_zp1):
-       (sfnt_address_zp0):
-       (sfnt_check_zp2):
-       (sfnt_move_zp0):
-       (sfnt_move_zp1):
-       (sfnt_move_glyph_zone):
-       (sfnt_move_twilight_zone):
-       (sfnt_direct_move_zp2):
-       (sfnt_interpret_alignpts):
-       (sfnt_interpret_isect):
-       (sfnt_line_to_vector):
-       (sfnt_deltac):
-       (sfnt_interpret_mdap):
-       (sfnt_interpret_call):
-       (sfnt_dot_fix_14):
-       (sfnt_move_x):
-       (sfnt_move_y):
-       (sfnt_move):
-       (sfnt_validate_gs):
-       (sfnt_interpret_shz):
-       (sfnt_interpret_shc):
-       (sfnt_interpret_shp):
-       (sfnt_interpret_iup_1):
-       (sfnt_interpret_iup):
-       (sfnt_interpret_run):
-       (sfnt_interpret_font_program):
-       (sfnt_interpret_control_value_program):
-       (sfnt_interpret_simple_glyph):
-       (jrot_test_args):
-       (jrof_test_args):
-       (all_tests):
-       (main): Check in more WIP code.
+       * src/sfnt.c (sfnt_multiply_divide_signed)
+       (struct sfnt_interpreter_zone, struct sfnt_graphics_state)
+       (struct sfnt_interpreter, sfnt_mul_f2dot14)
+       (sfnt_interpret_trap, WCVTF)
+       (ALIGNPTS, sfnt_scale_by_freedom_vector, sfnt_interpret_utp)
+       (sfnt_address_zp2, sfnt_address_zp1, sfnt_address_zp0)
+       (sfnt_check_zp2, sfnt_move_zp0, sfnt_move_zp1)
+       (sfnt_move_glyph_zone, sfnt_move_twilight_zone)
+       (sfnt_direct_move_zp2, sfnt_interpret_alignpts)
+       (sfnt_interpret_isect, sfnt_line_to_vector, sfnt_deltac)
+       (sfnt_interpret_mdap, sfnt_interpret_call, sfnt_dot_fix_14)
+       (sfnt_move_x, sfnt_move_y, sfnt_move, sfnt_validate_gs)
+       (sfnt_interpret_shz, sfnt_interpret_shc, sfnt_interpret_shp)
+       (sfnt_interpret_iup_1, sfnt_interpret_iup, sfnt_interpret_run)
+       (sfnt_interpret_font_program)
+       (sfnt_interpret_control_value_program)
+       (sfnt_interpret_simple_glyph, jrot_test_args, jrof_test_args)
+       (all_tests, main): Check in more WIP code.
 
 2023-02-02  Po Lu  <luangruo@yahoo.com>
 
-       Add Emacs icon for Android package
        * java/AndroidManifest.xml.in: Add new icon.
+
        * java/Makefile.in (srcdir): New variable.
        (JAVA_FILES, RESOURCE_FILES): Update variables.
        (emacs.apk-in): Apply resources.
+
        * java/README: Describe directory tree.
 
-       Add Emacs icon for Android
        * java/res/drawable/emacs.png: New file.
 
-       Update Android port
        * src/android.c (android_get_current_api_level): New function.
-       * src/android.h: Export it.
-       * src/sfntfont-android.c (init_sfntfont_android): Make device
-       API level detection always work.
 
-       Clean up compiler warnings
-       * src/sfnt.c (sfnt_multiply_divide_signed): Add MAYBE_UNUSED.
+       * src/android.h: Export it.
 
-       Merge remote-tracking branch 'origin/master' into feature/android
+       * src/sfntfont-android.c (init_sfntfont_android): Make device API
+       level detection always work.
 
-2023-02-02  Po Lu  <luangruo@yahoo.com>
+       * src/sfnt.c (sfnt_multiply_divide_signed): Add MAYBE_UNUSED.
 
-       Update Android port
-       * src/sfnt.c (xmalloc, xrealloc): Improve behavior upon
-       allocation failures during test.
+       * src/sfnt.c (xmalloc, xrealloc): Improve behavior upon allocation
+       failures during test.
        (sfnt_table_names): Add prep.
        (sfnt_transform_coordinates): Allow applying offsets during
        coordinate transform.
        (sfnt_decompose_compound_glyph): Defer offset computation until
        any component compound glyph is loaded, then apply it during the
        transform process.
-
        (sfnt_multiply_divide): Make available everywhere.  Implement on
        64 bit systems.
        (sfnt_multiply_divide_signed): New function.
        (sfnt_mul_fixed): Fix division overflow.
-
        (sfnt_curve_to_and_build_1, sfnt_build_glyph_outline): Remove
        outdated comment.
        (sfnt_build_outline_edges): Fix coding style.
        `move', `vector_dot_product'.  Rename to `sfnt_graphics_state'.
        (struct sfnt_interpreter, sfnt_mul_f26dot6): Stop doing rounding
        division.
-       (sfnt_init_graphics_state):
-       (sfnt_make_interpreter):
-       (MOVE):
-       (SSW):
-       (RAW):
-       (SDS):
-       (ADD):
-       (SUB):
-       (ABS):
-       (NEG):
-       (WCVTF):
-       (_MIN):
-       (S45ROUND):
-       (SVTCAx):
-       (sfnt_set_srounding_state):
-       (sfnt_skip_code):
-       (sfnt_interpret_unimplemented):
-       (sfnt_interpret_fdef):
-       (sfnt_interpret_idef):
-       (sfnt_interpret_if):
-       (sfnt_interpret_else):
-       (sfnt_round_none):
-       (sfnt_round_to_grid):
-       (sfnt_round_to_double_grid):
-       (sfnt_round_down_to_grid):
-       (sfnt_round_up_to_grid):
-       (sfnt_round_to_half_grid):
-       (sfnt_round_super):
-       (sfnt_validate_gs):
-       (sfnt_interpret_run):
-       (sfnt_interpret_font_program):
-       (struct sfnt_test_dcontext):
-       (sfnt_test_move_to):
-       (sfnt_test_line_to):
-       (sfnt_test_curve_to):
-       (sfnt_test_get_glyph):
-       (sfnt_test_free_glyph):
-       (sfnt_test_span):
-       (sfnt_test_edge_ignore):
-       (sfnt_test_edge):
-       (sfnt_test_raster):
-       (test_interpreter_profile):
-       (test_cvt_values):
-       (test_interpreter_cvt):
-       (test_interpreter_head):
-       (sfnt_make_test_interpreter):
-       (struct sfnt_interpreter_test):
-       (sfnt_run_interpreter_test):
-       (struct sfnt_generic_test_args):
-       (sfnt_generic_check):
-       (sfnt_check_srp0):
-       (sfnt_check_szp0):
-       (sfnt_check_sloop):
-       (struct sfnt_rounding_test_args):
-       (sfnt_check_rounding):
-       (sfnt_check_smd):
-       (sfnt_check_scvtci):
-       (sfnt_check_sswci):
-       (sfnt_check_ssw):
-       (sfnt_check_flipon):
-       (sfnt_check_flipoff):
-       (npushb_test_args):
-       (npushw_test_args):
-       (pushb_test_args):
-       (pushw_test_args):
-       (stack_overflow_test_args):
-       (stack_underflow_test_args):
-       (rtg_test_args):
-       (rtg_symmetric_test_args):
-       (rtg_1_test_args):
-       (rtg_1_symmetric_test_args):
-       (rthg_test_args):
-       (rthg_1_test_args):
-       (rtdg_test_args):
-       (rtdg_1_test_args):
-       (rtdg_2_test_args):
-       (rtdg_3_test_args):
-       (else_test_args):
-       (jmpr_test_args):
-       (dup_test_args):
-       (pop_test_args):
-       (clear_test_args):
-       (swap_test_args):
-       (depth_test_args):
-       (cindex_test_args):
-       (mindex_test_args):
-       (raw_test_args):
-       (loopcall_test_args):
-       (call_test_args):
-       (fdef_test_args):
-       (fdef_1_test_args):
-       (endf_test_args):
-       (ws_test_args):
-       (rs_test_args):
-       (wcvtp_test_args):
-       (rcvt_test_args):
-       (mppem_test_args):
-       (mps_test_args):
-       (debug_test_args):
-       (lt_test_args):
-       (all_tests):
-       (main): Implement more instructions.
-
-       * src/sfnt.h (enum sfnt_table, struct sfnt_glyph_metrics): Add
-       new tables.  Add comment.
-
-2023-01-30  Po Lu  <luangruo@yahoo.com>
-
-       Merge remote-tracking branch 'origin/master' into feature/android
-
-       Merge remote-tracking branch 'origin/master' into feature/android
+       (sfnt_init_graphics_state, sfnt_make_interpreter, MOVE, SSW, RAW)
+       (SDS, ADD, SUB, ABS, NEG, WCVTF, _MIN, S45ROUND, SVTCAx)
+       (sfnt_set_srounding_state, sfnt_skip_code)
+       (sfnt_interpret_unimplemented, sfnt_interpret_fdef)
+       (sfnt_interpret_idef, sfnt_interpret_if, sfnt_interpret_else)
+       (sfnt_round_none, sfnt_round_to_grid, sfnt_round_to_double_grid)
+       (sfnt_round_down_to_grid, sfnt_round_up_to_grid)
+       (sfnt_round_to_half_grid, sfnt_round_super, sfnt_validate_gs)
+       (sfnt_interpret_run, sfnt_interpret_font_program)
+       (struct sfnt_test_dcontext, sfnt_test_move_to, sfnt_test_line_to)
+       (sfnt_test_curve_to, sfnt_test_get_glyph, sfnt_test_free_glyph)
+       (sfnt_test_span, sfnt_test_edge_ignore, sfnt_test_edge)
+       (sfnt_test_raster, test_interpreter_profile, test_cvt_values)
+       (test_interpreter_cvt, test_interpreter_head)
+       (sfnt_make_test_interpreter, struct sfnt_interpreter_test)
+       (sfnt_run_interpreter_test, struct sfnt_generic_test_args)
+       (sfnt_generic_check, sfnt_check_srp0, sfnt_check_szp0)
+       (sfnt_check_sloop, struct sfnt_rounding_test_args)
+       (sfnt_check_rounding, sfnt_check_smd, sfnt_check_scvtci)
+       (sfnt_check_sswci, sfnt_check_ssw, sfnt_check_flipon)
+       (sfnt_check_flipoff, npushb_test_args, npushw_test_args)
+       (pushb_test_args, pushw_test_args, stack_overflow_test_args)
+       (stack_underflow_test_args, rtg_test_args)
+       (rtg_symmetric_test_args, rtg_1_test_args)
+       (rtg_1_symmetric_test_args, rthg_test_args, rthg_1_test_args)
+       (rtdg_test_args, rtdg_1_test_args, rtdg_2_test_args)
+       (rtdg_3_test_args, else_test_args, jmpr_test_args, dup_test_args)
+       (pop_test_args, clear_test_args, swap_test_args, depth_test_args)
+       (cindex_test_args, mindex_test_args, raw_test_args)
+       (loopcall_test_args, call_test_args, fdef_test_args)
+       (fdef_1_test_args, endf_test_args, ws_test_args, rs_test_args)
+       (wcvtp_test_args, rcvt_test_args, mppem_test_args, mps_test_args)
+       (debug_test_args, lt_test_args, all_tests, main): Implement more
+       instructions.
 
-       Merge remote-tracking branch 'origin/master' into feature/android
+       * src/sfnt.h (enum sfnt_table, struct sfnt_glyph_metrics): Add new
+       tables.  Add comment.
 
 2023-01-30  Po Lu  <luangruo@yahoo.com>
 
-       Update Android port
-       * cross/ndk-build/ndk-build-shared-library.mk: ($(call
-       objname,$(LOCAL_MODULE),$(basename $(1)))):
-       * cross/ndk-build/ndk-build-static-library.mk: ($(call
-       objname,$(LOCAL_MODULE),$(basename $(1)))): Revert broken typo
-       fixes.
+       * cross/ndk-build/ndk-build-shared-library.mk
+       ($(call objname,$(LOCAL_MODULE),$(basename $(1)))):
+       * cross/ndk-build/ndk-build-static-library.mk
+       ($(call objname,$(LOCAL_MODULE),$(basename $(1)))): Revert broken
+       typo fixes.
+
        * src/sfnt.c (TEST_STATIC): Define ARRAYELTS.
        (sfnt_table_names): New CVT and FPGM tables.
        (sfnt_decompose_compound_glyph, sfnt_decompose_glyph)
 
 2023-01-29  Po Lu  <luangruo@yahoo.com>
 
-       Merge remote-tracking branch 'origin/master' into feature/android
-
-       Check in missing files
-       * .gitignore:
-       * cross/lib/_Noreturn.h (_Noreturn): Add missing gnulib files.
+       * .gitignore: Add missing gnulib files.
 
-       Update Android port
        * INSTALL.android (module_target): Clarify documentation.
+
        * cross/ndk-build/ndk-build-shared-library.mk:
-       * cross/ndk-build/ndk-build-static-library.mk: Fix building Neon objects.
+       * cross/ndk-build/ndk-build-static-library.mk: Fix building Neon
+       objects.
+
        * java/AndroidManifest.xml.in: Add a version code.
 
 2023-01-28  Po Lu  <luangruo@yahoo.com>
 
-       Implement `restart-emacs' on Android
        * java/org/gnu/emacs/EmacsService.java (restartEmacs): New
        function.
+
        * src/android.c (struct android_emacs_service)
        (android_init_emacs_service): Add new method.
        (android_restart_emacs): New function.
+
        * src/android.h: Update prototypes.
+
        * src/emacs.c (Fkill_emacs): Call android_restart_emacs whenever
        appropriate.
 
-2023-01-28  Po Lu  <luangruo@yahoo.com>
-
-       Add libtiff support to Android port
        * INSTALL.android: Document how to build with libtiff.
 
        * build-aux/ndk-build-helper-1.mk (NDK_SO_NAME):
        * build-aux/ndk-build-helper-2.mk (NDK_A_NAME):
        * build-aux/ndk-build-helper-4.mk: Decrease number of duplicate
        dependencies found.
+
        * configure.ac (ANDROID_SDK_18_OR_EARLIER, XCONFIGURE, PNG_CFLAGS)
        (HAVE_TIFF): Allow using libtiff on Android.
+
        * cross/ndk-build/ndk-clear-vars.mk: Undefine additional
        variables.
+
        * cross/ndk-build/ndk-resolve.mk: Split CFLAGS resolution from
        a-name resolution, and do not recursively add archive or shared
        object names for dependencies of shared libraries.
 
        * src/image.c (syms_of_image): Fix typo.
 
-2023-01-28  Po Lu  <luangruo@yahoo.com>
+       * doc/emacs/android.texi (Android File System): Describe an easier
+       way to disable scoped storage.
 
-       Update Android port
-       * doc/emacs/android.texi (Android File System): Describe an
-       easier way to disable scoped storage.
        * java/AndroidManifest.xml.in: Add new permission to allow that.
+
        * java/README: Add more text describing Java.
+
        * java/org/gnu/emacs/EmacsContextMenu.java (Item): New fields
        `isCheckable' and `isChecked'.
        (EmacsContextMenu, addItem): New arguments.
        (inflateMenuItems): Set checked status as appropriate.
 
        * java/org/gnu/emacs/EmacsCopyArea.java (perform): Disallow
-       operations where width and height are less than or equal to
-       zero.
+       operations where width and height are less than or equal to zero.
+
        * lisp/menu-bar.el (menu-bar-edit-menu): Make
        execute-extended-command available as a menu item.
+
        * src/androidmenu.c (android_init_emacs_context_menu)
-       (android_menu_show):
-       * src/menu.c (have_boxes): Implement menu check boxes.
+       (android_menu_show): Implement menu check boxes.
+
+       * src/menu.c (have_boxes): Treat Android builds as providing menu
+       checkboxes.
 
 2023-01-28  Po Lu  <luangruo@yahoo.com>
 
-       Set up fontset stuff on Android
-       * lisp/term/android-win.el (window-system-initialization):
-       Create default fontset.
-
-       Fix file descriptor leaks
-       * src/sfntfont.c (sfntfont_read_cmap):
-       (sfntfont_open): Fix leaks of file descriptors.
-
-       Update from gnulib
-       * cross/lib/stdalign.in.h (_GL_STDALIGN_H):
-       (_):
-       (__alignof_is_defined):
-       * cross/lib/vasnprintf.c:
-       * lib/gnulib.mk.in (ANDROID_MIN_SDK):
-       (HAVE_SPAWN_H):
-       (LIBGCCJIT_LIBS):
-       (NATIVE_COMPILATION_AOT):
-       (NEXT_AS_FIRST_DIRECTIVE_LIMITS_H):
-       (NEXT_LIMITS_H):
-       (SIZEOF_LONG):
-       (stdalign.h):
-       * ../../../../dev/null:
-       * lib/stdalign.in.h (_GL_STDALIGN_H):
-       (_):
-       (__alignof_is_defined):
-       * lib/vasnprintf.c:
-       * m4/gnulib-common.m4 (gl_COMMON_BODY):
-       * m4/stdalign.m4 (gl_ALIGNASOF):
-       * m4/stddef_h.m4: Update from gnulib.
+       * lisp/term/android-win.el (window-system-initialization): Create
+       default fontset.
 
-       Merge remote-tracking branch 'origin/master' into feature/android
+       * src/sfntfont.c (sfntfont_read_cmap, sfntfont_open): Fix leaks of
+       file descriptors.
 
-2023-01-28  Po Lu  <luangruo@yahoo.com>
+       * m4, lib: Update from Gnulib.
 
-       Update Android port
        * INSTALL.android: Document support for gnutls and libgmp.
+
        * build-aux/ndk-build-helper-1.mk (NDK_SO_NAMES, NDK_INCLUDES)
        (SYSTEM_LIBRARIES):
        * build-aux/ndk-build-helper-2.mk: Recursively resolve and add
        shared library dependencies; even those of static libraries.
+
        * build-aux/ndk-module-extract.awk: Fix makefile_imports code.
+
        * configure.ac (ANDROID_SDK_18_OR_EARLIER, XCONFIGURE)
        (LIBGMP_CFLAGS): Enable GMP and gnutls on Android.
 
        * cross/ndk-build/Makefile.in (LOCAL_EXPORT_C_INCLUDES):
-       * cross/ndk-build/ndk-build-shared-library.mk: ($(call
-       objname,$(LOCAL_MODULE),$(basename $(1))))::($$(error
-       Unsupported suffix)::($(LOCAL_MODULE_FILENAME)):
-       * cross/ndk-build/ndk-build-static-library.mk: ($(call
-       objname,$(LOCAL_MODULE),$(basename $(1))))::($$(error
-       Unsupported suffix):
+       * cross/ndk-build/ndk-build-shared-library.mk:
        * cross/ndk-build/ndk-clear-vars.mk:
        * cross/ndk-build/ndk-resolve.mk (NDK_SYSTEM_LIBRARIES):
        (NDK_LOCAL_EXPORT_C_INCLUDES_$(LOCAL_MODULE)):
-       (NDK_SO_EXTRA_FLAGS_$(LOCAL_MODULE)):
-       Implement ``LOCAL_ASM_RULE'' and ``LOCAL_C_ADDITIONAL_FLAGS''
-       extensions for libgmp.
+       (NDK_SO_EXTRA_FLAGS_$(LOCAL_MODULE)): Implement ``LOCAL_ASM_RULE''
+       and ``LOCAL_C_ADDITIONAL_FLAGS'' extensions for libgmp.
 
        * doc/emacs/input.texi (Touchscreens): Document how to
        horizontally scroll.
+
        * java/org/gnu/emacs/EmacsActivity.java (attachWindow): Give the
        view focus again if necessary.
        (onPause): Call right super function.
+
        * java/org/gnu/emacs/EmacsPreferencesActivity.java (onClick):
-       Clear dumpFileName lest Emacs try to load a nonexistent dump
-       file.
+       Clear dumpFileName lest Emacs try to load a nonexistent dump file.
+
        * java/org/gnu/emacs/EmacsView.java (onDetachedFromWindow)
        (onAttachedToWindow): Call super functions.
-       (onCreateInputConnection): Make sure the IME never obscures
-       Emacs.
-       * java/org/gnu/emacs/EmacsWindow.java (EmacsWindow, onKeyDown)
-       (onKeyUp): Improve tracking of quit keys.
+       (onCreateInputConnection): Make sure the IME never obscures Emacs.
+
+       * java/org/gnu/emacs/EmacsWindow.java (onKeyDown, onKeyUp):
+       Improve tracking of quit keys.
+
+       * lisp/isearch.el (isearch-mode): Bring up the onscreen keyboard.
 
-       * lisp/isearch.el (isearch-mode): Bring up the onscreen
-       keyboard.
        * lisp/touch-screen.el (touch-screen-current-tool): Add three
        fields.
        (touch-screen-handle-scroll): Allow hscrolling as well.
        (touch-screen-handle-touch): Add additional fields to
        `touch-screen-current-tool'.
-       * src/Makefile.in (LIBGMP_CFLAGS, EMACS_CFLAGS): Add new
-       variable.
-       * src/android.c (android_run_select_thread):
-       (android_write_event): Use pthread_cond_broadcast because
-       pthread_cond_signal does nothing on some Android
-       versions/devices?
 
-2023-01-26  Po Lu  <luangruo@yahoo.com>
+       * src/Makefile.in (LIBGMP_CFLAGS, EMACS_CFLAGS): Add new variable.
 
-       Merge remote-tracking branch 'origin/master' into feature/android
+       * src/android.c (android_run_select_thread, android_write_event):
+       Use pthread_cond_broadcast because pthread_cond_signal does
+       nothing on some Android versions/devices?
+
+2023-01-26  Po Lu  <luangruo@yahoo.com>
 
        * doc/emacs/input.texi (On-Screen Keyboards): Fix typo.
 
-       Update Android port
-       * INSTALL.android: Describe that apksigner is also required.
-       * configure.ac: Correctly add cross/Makefile to
-       SUBDIR_MAKEFILES.
-       * cross/Makefile.in: (config.status): Depend on
+       * INSTALL.android: Mention that apksigner is also required.
+
+       * configure.ac: Correctly add cross/Makefile to SUBDIR_MAKEFILES.
+
+       * cross/Makefile.in (config.status): Depend on
        $(top_srcdir)/config.status.
-       * doc/emacs/input.texi (On-Screen Keyboards): Document how to
-       quit without a physical keyboard.
-       * java/org/gnu/emacs/EmacsNative.java (EmacsNative): New
-       function `quit'.
+
+       * doc/emacs/input.texi (On-Screen Keyboards): Document how to quit
+       without a physical keyboard.
+
+       * java/org/gnu/emacs/EmacsNative.java (quit): New function `quit'.
+
        * java/org/gnu/emacs/EmacsWindow.java (EmacsWindow): New field
        `lastVolumeButtonPress'.
        (onKeyDown): Quit if necessary.
-       * m4/ndk-build.m4 (ndk_where_cc): Fix search if CC is not a
-       single word.
+
+       * m4/ndk-build.m4 (ndk_where_cc): Fix search if CC is not a single
+       word.
+
        * src/android.c (android_open): Remove unused variable.
        (quit): New function.
+
        * src/androidmenu.c (android_process_events_for_menu): Allow
        quitting the menu.
+
        * src/xterm.c (handle_one_xevent, x_term_init, syms_of_xterm):
-       Implement features described above, so they work on free
+       Implement features illustrated above, so they work on free
        operating systems.
+
        * src/xterm.h (struct x_display_info): New fields `quit_keysym',
        `quit_keysym_time'.
 
 2023-01-26  Po Lu  <luangruo@yahoo.com>
 
-       Update Android port
        * INSTALL.android: Document how to install sqlite3.
+
        * build-aux/ndk-build-helper-1.mk (SYSTEM_LIBRARIES):
        * build-aux/ndk-build-helper-2.mk (SYSTEM_LIBRARIES): Add liblog
        and libandroid.
+
        * configure.ac (SQLITE3_LIBS, HAVE_SQLITE3)
        (HAVE_SQLITE3_LOAD_EXTENSION): Support on Android.
        (APKSIGNER): Look for this new required binary.
 
        * cross/ndk-build/ndk-build.mk.in (NDK_BUILD_SHARED): Fix
        definition.
-       * cross/ndk-build/ndk-resolve.mk:
-       (NDK_SO_EXTRA_FLAGS_$(LOCAL_MODULE)): Handle new system
-       libraries.
+
+       * cross/ndk-build/ndk-resolve.mk
+       (NDK_SO_EXTRA_FLAGS_$(LOCAL_MODULE)): Handle new system libraries.
 
        * doc/emacs/android.texi (Android File System): Document Android
        10 system restriction.
 
-       * java/AndroidManifest.xml.in: Target Android 33, not 28.
+       * java/AndroidManifest.xml.in: Target Android API 33, not 28.
+
        * java/Makefile.in (SIGN_EMACS_V2, APKSIGNER): New variables.
-       ($(APK_NAME)): Make sure to apply a ``version 2 signature'' to
-       the package as well.
+       ($(APK_NAME)): Make sure to apply a ``version 2 signature'' to the
+       package as well.
 
        * java/org/gnu/emacs/EmacsNative.java (EmacsNative): New
        argument apiLevel.
+
        * java/org/gnu/emacs/EmacsNoninteractive.java (main):
        * java/org/gnu/emacs/EmacsThread.java (run): Pass API level.
+
        * m4/ndk-build.m4 (ndk_package_mape): Add package mapping for
        sqlite3.
+
        * src/Makefile.in (SQLITE3_CFLAGS): New substition.
        (EMACS_CFLAGS): Add that variable.
 
        * src/android.c (android_api_level): New variable.
        (initEmacs): Set it.
        (android_file_access_p): Make static.
-       (android_hack_asset_fd): Adjust for restrictions in Android 29
-       and later.
+       (android_hack_asset_fd): Adjust for restrictions in Android 29 and
+       later.
        (android_close_on_exec): New function.
        (android_open): Adjust to not duplicate file descriptor even if
        CLOEXEC.
        (android_faccessat): Use fstatat at-func emulation.
 
        * src/android.h: Update prototypes.
+
        * src/dired.c (file_name_completion_dirp):
        * src/fileio.c (file_access_p, Faccess_file): Now that
        sys_faccessat takes care of everything, stop calling
 
 2023-01-26  Po Lu  <luangruo@yahoo.com>
 
-       Update Android port
        * .gitignore: Ignore lib/math.h.
+
        * INSTALL.android: Update accordingly.
+
        * build-aux/ndk-build-helper-1.mk:
        * build-aux/ndk-build-helper-2.mk:
        * build-aux/ndk-build-helper.mk:
        version for actual popup menus.
        * lib/math.h: Delete file.
 
-       * m4/ndk-build.m4 (ndk_SEARCH_MODULE, ndk_CHECK_MODULES): Look
-       for nasm and C++ libraries.
+       * m4/ndk-build.m4 (ndk_SEARCH_MODULE, ndk_CHECK_MODULES): Look for
+       nasm and C++ libraries.
 
        * src/android.c (faccessat): Rename to `android_faccessat'.
+
        * src/android.h: Update prototypes.
+
        * src/dired.c (file_name_completion_dirp):
        * src/fileio.c (file_access_p, Faccess_file, file_directory_p):
        * src/lisp.h:
 
 2023-01-26  Po Lu  <luangruo@yahoo.com>
 
-       Remove unused file
        * cross/ndk-build/ndk-build.in: Delete unused file.
 
 2023-01-25  Po Lu  <luangruo@yahoo.com>
 
-       Update Android port
-       * java/org/gnu/emacs/EmacsDrawLine.java: Fix this again.  Gosh,
-       how does Android do this.
+       * java/org/gnu/emacs/EmacsDrawLine.java: Fix this again.
+
        * java/org/gnu/emacs/EmacsNoninteractive.java (main): Port to
        Android 2.3.3.
 
-       * java/org/gnu/emacs/EmacsSdk11Clipboard.java
-       (EmacsSdk11Clipboard): Port to Android 4.0.3.
-       * java/org/gnu/emacs/EmacsService.java (getClipboardManager):
-       New function.
+       * java/org/gnu/emacs/EmacsSdk11Clipboard.java: Port to Android
+       4.0.3.
+
+       * java/org/gnu/emacs/EmacsService.java (getClipboardManager): New
+       function.
 
        * src/alloc.c (find_string_data_in_pure): Fix Android alignment
        issue.
 
        * src/android-emacs.c (main): Port to Android 4.4.
+
        * src/android.c (initEmacs): Align stack to 32 bytes, so it ends
        up aligned to 16 even though gcc thinks the stack is already
        aligned to 16 bytes.
        * src/callproc.c (init_callproc): Use /system/bin/sh instead of
        /bin/sh by default.
 
-2023-01-25  Po Lu  <luangruo@yahoo.com>
-
-       Remove extra header
        * cross/lib/math.h: Delete header.
 
-       Minor fixes to Android port
-       * java/Makefile.in: (emacs.apk-in): Don't call cp with empty
-       args.
+       * java/Makefile.in (emacs.apk-in): Don't call cp with empty args.
+
        * java/org/gnu/emacs/EmacsDrawLine.java (perform): Fix for
        PostScript filling semantics.
-       * src/Makefile.in (android-emacs): Build android-emacs directly.
-
-       Merge remote-tracking branch 'origin/master' into feature/android
 
-2023-01-25  Po Lu  <luangruo@yahoo.com>
+       * src/Makefile.in (android-emacs): Build android-emacs directly.
 
-       Update Android port
        * doc/emacs/android.texi (Android Startup, Android Environment):
        Document that restrictions on starting Emacs have been lifted.
 
 
        * java/org/gnu/emacs/EmacsNative.java (EmacsNative): Update
        function declarations.
-       * java/org/gnu/emacs/EmacsNoninteractive.java
-       (EmacsNoninteractive): New class.
 
-       * java/org/gnu/emacs/EmacsService.java (EmacsService, getApkFile)
+       * java/org/gnu/emacs/EmacsNoninteractive.java: New class.
+
+       * java/org/gnu/emacs/EmacsService.java (getApkFile)
        (onCreate): Pass classpath to setEmacsParams.
-       * java/org/gnu/emacs/EmacsThread.java (EmacsThread): Make run an
-       override.
+
+       * java/org/gnu/emacs/EmacsThread.java (run): Label as an
+       @Override.
+
        * lisp/loadup.el: Don't dump on Android when noninteractive.
+
        * lisp/shell.el (shell--command-completion-data): Handle
        inaccessible directories.
-       * src/Makefile.in (android-emacs): Link with gnulib.
-       * src/android-emacs.c (main): Implement to launch app-process
-       and then EmacsNoninteractive.
+
+       * src/Makefile.in (android-emacs): Link with Gnulib.
+
+       * src/android-emacs.c (main): Implement to launch app-process and
+       then EmacsNoninteractive.
+
        * src/android.c (setEmacsParams): New argument `class_path'.
        Don't set stuff up when running noninteractive.
+
        * src/android.h (initEmacs): Likewise.
+
        * src/androidfont.c (init_androidfont):
-       * src/androidselect.c (init_androidselect): Don't initialize
-       when running noninteractive.
+       * src/androidselect.c (init_androidselect): Don't initialize when
+       running noninteractive.
+
        * src/emacs.c (load_pdump): New argument `dump_file'.
        (android_emacs_init): Give new argument `dump_file' to
        `load_pdump'.
-       * src/sfntfont-android.c (init_sfntfont_android): Don't
-       initialize when running noninteractive.
 
-2023-01-25  Po Lu  <luangruo@yahoo.com>
+       * src/sfntfont-android.c (init_sfntfont_android): Don't initialize
+       when running noninteractive.
+
+       * admin/merge-gnulib (GNULIB_MODULES): Add printf-posix and
+       vasprintf-posix.
 
-       Import gnulib modules printf-posix and vasprintf-posix
-       These are neccessary because Android's printf is missing basic format
-       modifiers such as t.
+       * m4, lib: Update from Gnulib.
 
-       * admin/merge-gnulib (GNULIB_MODULES): Add printf-posix and
-       vasprintf-posix.  Update from gnulib.
        * configure.ac (CFLAGS): Add -DHAVE_CONFIG_H.
 
 2023-01-24  Po Lu  <luangruo@yahoo.com>
 
-       Make binaries distributed with Emacs work on Android
        * doc/lispref/processes.texi (Subprocess Creation): Document
        variables containing program names.
+
        * etc/NEWS: Document new variables.
+
        * java/Makefile.in (CROSS_BINS): Add missing etags binary.
+
        * lisp/cedet/semantic/db-ebrowse.el
        (semanticdb-create-ebrowse-database):
        * lisp/gnus/mail-source.el (mail-source-movemail-program):
        * lisp/speedbar.el (speedbar-fetch-etags-command):
        * lisp/textmodes/reftex-global.el (reftex-create-tags-file): Use
        new variables.
-       * src/callproc.c (syms_of_callproc): New variables naming
-       binaries redistributed with Emacs.
 
-2023-01-24  Po Lu  <luangruo@yahoo.com>
+       * src/callproc.c (syms_of_callproc): Introduce new variables
+       naming binaries redistributed with Emacs.
 
-       Enable libjpeg on Android
        * INSTALL.android: Update documentation.
+
        * build-aux/ndk-build-helper-1.mk: When building shared
        libraries, do not link libemacs.so with dependent archive files.
-       * build-aux/ndk-build-helper-2.mk: Add whole archive
-       dependencies as well.
+
+       * build-aux/ndk-build-helper-2.mk: Add whole archive dependencies
+       as well.
 
        * configure.ac (HAVE_JPEG): Enable on Android.
 
        * cross/ndk-build/ndk-build-shared-library.mk: Link the shared
        object with archive file dependencies.
+
        * cross/ndk-build/ndk-build-static-library.mk: Build all code
        position-independently.
+
        * cross/ndk-build/ndk-resolve.mk: Separately resolve a names of
        archive and whole archive dependencies.
 
 
 2023-01-24  Po Lu  <luangruo@yahoo.com>
 
-       Update Android port
        * INSTALL.android: Update.
+
        * build-aux/ndk-build-helper-1.mk: Fix typo.
+
        * configure.ac: Enable --with-json on Android.
+
        * cross/ndk-build/ndk-build-shared-library.mk:
        (NDK_CFLAGS_$(LOCAL_MODULE)):
        (LOCAL_MODULE_FILENAME):
        (LOCAL_MODULE_FILENAME): Recursively resolve dependencies.
        * cross/ndk-build/ndk-resolve.mk: New function.
 
-       * doc/emacs/android.texi (Android Startup): Document how Emacs
-       is dumped during initial startup.
+       * doc/emacs/android.texi (Android Startup): Document how Emacs is
+       dumped during initial startup.
 
        * java/Makefile.in (filename): Fix build with multiple shared
        libraries.
+
        * java/README: Improve commentary.
+
        * java/org/gnu/emacs/EmacsApplication.java (onCreate): Look and
        set dump file.
-       * java/org/gnu/emacs/EmacsNative.java (EmacsNative): New
+
+       * java/org/gnu/emacs/EmacsNative.java (getFingerprint): New
        function getFingerprint.
+
        * java/org/gnu/emacs/EmacsPreferencesActivity.java (onCreate):
        Add option to erase the dump file.
-       * java/org/gnu/emacs/EmacsService.java (browseUrl): New
-       function.
-       * java/org/gnu/emacs/EmacsThread.java (run): Specify dump file
-       if found.
+
+       * java/org/gnu/emacs/EmacsService.java (browseUrl): New function.
+
+       * java/org/gnu/emacs/EmacsThread.java (run): Specify dump file if
+       found.
+
        * lisp/loadup.el: Always dump during loadup on Android.
 
-       * lisp/net/browse-url.el (browse-url--browser-defcustom-type):
-       (browse-url-default-browser):
-       (browse-url-default-android-browser): New browse url type.
+       * lisp/net/browse-url.el (browse-url--browser-defcustom-type)
+       (browse-url-default-browser, browse-url-default-android-browser):
+       New browse url type.
 
        * m4/ndk-build.m4 (ndk_package_map): Map jansson to libjansson.
+
        * src/android.c (struct android_emacs_service): New method
        `browse_url'.
        (getFingerprint): New function.
        * src/androidselect.c (Fandroid_browse_url): New function.
        (syms_of_androidselect): Define it.
 
-       * src/emacs.c (load_pdump): Don't look in fancy places on
-       Android.
+       * src/emacs.c (load_pdump): Eschew excessively elaborate dump file
+       location code on on Android.
+
        * src/pdumper.c (Fdump_emacs_portable): Allow dumping while
        interactive on Android.
        (syms_of_pdumper): New variable `pdumper-fingerprint'.
 
-       * src/sfntfont-android.c (sfntfont_android_composite_bitmap):
-       Fix unused variables.
+       * src/sfntfont-android.c (sfntfont_android_composite_bitmap): Fix
+       unused variables.
 
 2023-01-24  Po Lu  <luangruo@yahoo.com>
 
-       Update from gnulib
-       Update from gnulib.  In addition,
-
        * admin/merge-gnulib: Fix paths for rename.
 
-2023-01-24  Po Lu  <luangruo@yahoo.com>
-
-       Improve lib-src/Makefile.in
-       * lib-src/Makefile.in (DONT_INSTALL):
-       (clean): Correctly define asset-directory-tool.
-
-       Merge remote-tracking branch 'origin/master' into feature/android
+       * lib-src/Makefile.in (DONT_INSTALL, clean): Correctly define
+       asset-directory-tool.
 
-       Fix distclean target
        * cross/Makefile.in (distclean bootstrap-clean): Remove Makefile.
 
 2023-01-24  Po Lu  <luangruo@yahoo.com>
 
-       Update Android port
        * .gitignore: Update with new files.  Do not ignore std*.in.h.
+
        * INSTALL.android: Explain how to build Emacs with external
        dependencies.
 
 
        * README: Document new directories.
 
-       * build-aux/ndk-build-helper-1.mk (build_kind, NDK_SO_NAMES):
-       * build-aux/ndk-build-helper-2.mk (build_kind, NDK_SO_NAMES):
-       * build-aux/ndk-build-helper-3.mk (build_kind):
+       * build-aux/ndk-build-helper-1.mk:
+       * build-aux/ndk-build-helper-2.mk:
+       * build-aux/ndk-build-helper-3.mk:
        * build-aux/ndk-build-helper-4.mk:
        * build-aux/ndk-build-helper.mk (NDK_BUILD_DIR, my-dir):
        * build-aux/ndk-module-extract.awk: New files.
-       * configure.ac: Set up libgif, libwebp, and libpng for
-       ndk-build.
-       * cross/ndk-build/Makefile.in (srcdir, NDK_BUILD_ANDROID_MK):
+       * configure.ac: Set up libgif, libwebp, and libpng for ndk-build.
+
+       * cross/ndk-build/Makefile.in:
        * cross/ndk-build/ndk-build-executable.mk:
-       * cross/ndk-build/ndk-build-shared-library.mk (eq, objname):
-       * cross/ndk-build/ndk-build-static-library.mk (eq, objname):
-       * cross/ndk-build/ndk-build.in (NDK_BUILD_MODULES):
-       * cross/ndk-build/ndk-build.mk.in (NDK_BUILD_MODULES)
-       (NDK_BUILD_SHARED):
+       * cross/ndk-build/ndk-build-shared-library.mk:
+       * cross/ndk-build/ndk-build-static-library.mk:
+       * cross/ndk-build/ndk-build.in:
+       * cross/ndk-build/ndk-build.mk.in:
        * cross/ndk-build/ndk-clear-vars.mk:
        * cross/ndk-build/ndk-prebuilt-shared-library.mk:
        * cross/ndk-build/ndk-prebuilt-static-library.mk: New files.
-       * doc/emacs/android.texi (Android, Android Environment):
-       Document clipboard support on Android.
+
+       * doc/emacs/android.texi (Android, Android Environment): Document
+       clipboard support on Android.
+
        * doc/emacs/emacs.texi (Top): Update menus.
+
        * etc/MACHINES: Document Android.
-       * java/AndroidManifest.xml.in: Respect new
-       `--with-android-debug' option.
+
+       * java/AndroidManifest.xml.in: Respect new `--with-android-debug'
+       option.
+
        * java/Makefile.in (CROSS_BINS, CROSS_LIBS): Adjust for rename.
-       Include ndk-build.mk.:(emacs.apk-in): Depend on shared
-       libraries.  Then, package shared libraries.
-       * java/org/gnu/emacs/EmacsClipboard.java (EmacsClipboard): New
-       class.
+       Include ndk-build.mk.
+       (emacs.apk-in): Depend on shared libraries.  Then, package shared
+       libraries.
+
+       * java/org/gnu/emacs/EmacsClipboard.java: New file.
+
        * java/org/gnu/emacs/EmacsFontDriver.java: Update comment to say
        this is unused.
-       * java/org/gnu/emacs/EmacsNative.java (EmacsNative): New
-       function `sendExpose'.
-       * java/org/gnu/emacs/EmacsSdk11Clipboard.java
-       (EmacsSdk11Clipboard):
-       * java/org/gnu/emacs/EmacsSdk8Clipboard.java
-       (EmacsSdk8Clipboard): New classes.
-       * java/org/gnu/emacs/EmacsView.java (EmacsView, handleDirtyBitmap)
+
+       * java/org/gnu/emacs/EmacsNative.java (sendExpose): New function
+       `sendExpose'.
+
+       * java/org/gnu/emacs/EmacsSdk11Clipboard.java:
+       * java/org/gnu/emacs/EmacsSdk8Clipboard.java: New files.
+
+       * java/org/gnu/emacs/EmacsView.java (handleDirtyBitmap)
        (onDetachedFromWindow): When window is reattached, expose the
        frame.
 
-       * lib/Makefile.in (VPATH):
-       (ALL_CFLAGS): Adjust for rename.
+       * lib/Makefile.in (VPATH, ALL_CFLAGS): Adjust for rename.
 
        * lisp/term/android-win.el (android-clipboard-exists-p)
        (android-get-clipboard, android-set-clipboard)
        functions.
 
        * m4/ndk-build.m4: New file.
+
        * src/Makefile.in (GIF_CFLAGS, ANDROID_LDFLAGS): New variables.
-       (EMACS_CFLAGS): Add GIF_CFLAGS.  Include
-       ndk-build.mk.
-       (libemacs.so): Depend on and link with required
-       libraries.
+       (EMACS_CFLAGS): Add GIF_CFLAGS.  Include ndk-build.mk.
+       (libemacs.so): Depend on and link with required libraries.
 
        * src/android.c (android_check_compressed_file): New function.
        (android_open): Work around Android platform bug.
        (struct android_expose_event, union android_event): Add expose
        events.
 
-       * src/androidselect.c (struct android_emacs_clipboard)
-       (android_init_emacs_clipboard, Fandroid_clipboard_owner_p)
-       (Fandroid_set_clipboard, Fandroid_get_clipboard)
-       (Fandroid_clipboard_exists_p, init_androidselect)
-       (syms_of_androidselect): New file.
+       * src/androidselect.c: New file.
 
-       * src/androidterm.c (handle_one_android_event): Handle
-       exposures.
-       * src/androidterm.h: Update prototypes.
-       * src/emacs.c (android_emacs_init): Initialize androidselect.
+       * src/androidterm.c (handle_one_android_event) <ANDROID_EXPOSE>:
+       Handle exposures.
 
-2023-01-24  Po Lu  <luangruo@yahoo.com>
+       * src/androidterm.h: Update prototypes.
 
-       Update android port
-       * xcompile: Move to cross.
-       * cross: New directory.
+       * src/emacs.c (android_emacs_init): Initialize androidselect.
 
-       Update android port
        * xcompile: Move to cross.
        * cross: New directory.
 
 2023-01-21  Po Lu  <luangruo@yahoo.com>
 
-       Improve touch-screen support
        * doc/lispref/commands.texi (Touchscreen Events): Document
        changes.
+
        * lisp/touch-screen.el (touch-screen-current-tool): Update doc
        string.
        (touch-screen-precision-scroll): New user option.
 
        * src/fileio.c (Fverify_visited_file_modtime): Fix fs check.
 
-       Merge remote-tracking branch 'origin/master' into feature/android
-
 2023-01-21  Po Lu  <luangruo@yahoo.com>
 
-       Update Android port
        * doc/emacs/android.texi (Android File System): Document that
        ls-lisp is now used by default.
+
        * java/org/gnu/emacs/EmacsThread.java (EmacsThread): Name the
        thread something meaningful.
+
        * lisp/loadup.el (featurep): Load ls-lisp on Android.
-       * lisp/ls-lisp.el (ls-lisp-use-insert-directory-program):
-       Default to off on Android.
+
+       * lisp/ls-lisp.el (ls-lisp-use-insert-directory-program): Default
+       to off on Android.
+
        * src/android.c (android_is_directory): New fucntion.
        (android_fstatat): Handle directories created by
        `android_opendir'.
        (android_lookup_asset_directory_fd): New function.
 
        * src/android.h: Update prototypes.
+
        * src/androidfont.c (androidfont_check_init): New function.
        (androidfont_list, androidfont_match, androidfont_draw)
        (androidfont_open_font, androidfont_close_font)
        * src/sfntfont-android.c (GET_SCANLINE_BUFFER)
        (sfntfont_android_u255to256, sfntfont_android_over_8888_1)
        (sfntfont_android_over_8888, sfntfont_android_composite_bitmap):
-       Optimize on 64-bit ARM devices.
-       (sfntfont_android_put_glyphs): Optimize away memset if
-       background need not be filled.
+       Optimize for 64-bit ARM devices.
+       (sfntfont_android_put_glyphs): Optimize away memset if background
+       need not be filled.
 
 2023-01-20  Po Lu  <luangruo@yahoo.com>
 
-       Merge remote-tracking branch 'origin/master' into feature/android
-
-       Update Android port
        * src/android.c (android_run_select_thread, android_select)
        (android_ftruncate):
-       * src/android.h (ftruncate): Fix compilation on Android 16 and
-       up.
+       * src/android.h (ftruncate): Fix compilation on Android 16 and up.
 
-       Update Android port
        * src/android.c (android_run_select_thread, android_init_events)
        (android_select): Add alternative android_select implementation
        for API 16 and lower.
+
        * src/androidterm.c (handle_one_android_event): Fix
        use-after-frees.
 
-       Remove unused file
        * xcompile/lib/gnulib.mk.in: Delete.
 
 2023-01-20  Po Lu  <luangruo@yahoo.com>
 
-       Update Android port
        * .gitignore: Don't ignore verbose.mk.android.
+
        * doc/emacs/Makefile.in (EMACSSOURCES): Add android.texi and
        input.texi.
+
        * doc/emacs/android.texi (Android): Document support for the
        on-screen keyboard.
-       (Android Startup): Document how to start Emacs with -Q on
-       Android.
-       (Android Environment): Document how Emacs works around the
-       system ``task killer''.  Document changes to frame deletion
-       behavior.
+       (Android Startup): Document how to start Emacs with -Q on Android.
+       (Android Environment): Document how Emacs circumvents the system
+       ``task killer''.  Document changes to frame deletion behavior.
+
        * doc/emacs/emacs.texi (Top):
-       * doc/emacs/input.texi (Other Input Devices, On-Screen
-       Keyboards): Document how to use Emacs with virtual keyboards.
-       * doc/lispref/commands.texi (Touchscreen Events): Document
-       changes to `touch-screen-track-drag'.
-       * doc/lispref/frames.texi (Frames, On-Screen Keyboards): New
-       node.
+       * doc/emacs/input.texi (Other Input Devices)
+       (On-Screen Keyboards): Document how to use Emacs with virtual
+       keyboards.
+
+       * doc/lispref/commands.texi (Touchscreen Events): Document changes
+       to `touch-screen-track-drag'.
+
+       * doc/lispref/frames.texi (Frames, On-Screen Keyboards): New node.
+
        * java/AndroidManifest.xml.in: Add settings activity and
        appropriate OSK adjustment mode.
-       * java/org/gnu/emacs/EmacsActivity.java (onCreate): Allow
-       creating Emacs with -Q.
+
+       * java/org/gnu/emacs/EmacsActivity.java (onCreate): Allow creating
+       Emacs with -Q.
        (onDestroy): Don't remove if killed by the system.
-       * java/org/gnu/emacs/EmacsContextMenu.java (inflateMenuItems):
-       Fix context menus again.
+
+       * java/org/gnu/emacs/EmacsContextMenu.java (inflateMenuItems): Fix
+       context menus again.
+
        * java/org/gnu/emacs/EmacsNative.java (EmacsNative): Make all
        event sending functions return long.
-       * java/org/gnu/emacs/EmacsPreferencesActivity.java
-       (EmacsPreferencesActivity): New class.
+
+       * java/org/gnu/emacs/EmacsPreferencesActivity.java: New fle.
+
        * java/org/gnu/emacs/EmacsService.java (EmacsService)
        (onStartCommand, onCreate, startEmacsService): Start as a
        foreground service if necessary to bypass system restrictions.
+
        * java/org/gnu/emacs/EmacsSurfaceView.java (EmacsSurfaceView):
-       * java/org/gnu/emacs/EmacsThread.java (EmacsThread, run):
-       * java/org/gnu/emacs/EmacsView.java (EmacsView, onLayout)
+       * java/org/gnu/emacs/EmacsThread.java (run):
+       * java/org/gnu/emacs/EmacsView.java (onLayout)
        (onDetachedFromWindow):
-       * java/org/gnu/emacs/EmacsWindow.java (EmacsWindow, viewLayout):
-       Implement frame resize synchronization..
+       * java/org/gnu/emacs/EmacsWindow.java (viewLayout):
+       Implement frame resize synchronization.
+
        * java/org/gnu/emacs/EmacsWindowAttachmentManager.java
-       (EmacsWindowAttachmentManager, removeWindowConsumer): Adjust
-       accordingly for changes to frame deletion behavior.
+       (removeWindowConsumer): Adjust accordingly for changes to frame
+       deletion behavior.
+
        * lisp/frame.el (android-toggle-on-screen-keyboard)
-       (frame-toggle-on-screen-keyboard): New function.
+       (frame-toggle-on-screen-keyboard): New functions.
+
        * lisp/minibuffer.el (minibuffer-setup-on-screen-keyboard)
        (minibuffer-exit-on-screen-keyboard): New functions.
        (minibuffer-setup-hook, minibuffer-exit-hook): Add new functions
        (touch-screen-drag-mode-line-1, touch-screen-drag-mode-line):
        Refactor to use `no-drag'.
 
-       * src/android.c (struct android_emacs_window): New methods.
-       Make all event sending functions return the event serial.
+       * src/android.c (struct android_emacs_window): New methods.  Make
+       all event sending functions return the event serial.
        (android_toggle_on_screen_keyboard, android_window_updated): New
        functions.
+
        * src/android.h: Update prototypes.
+
        * src/androidfns.c (Fandroid_toggle_on_screen_keyboard)
-       (syms_of_androidfns): New function.
+       (syms_of_androidfns): New functions.
+
        * src/androidgui.h (struct android_any_event)
        (struct android_key_event, struct android_configure_event)
        (struct android_focus_event, struct android_window_action_event)
 
        * src/androidterm.c (handle_one_android_event)
        (android_frame_up_to_date):
+
        * src/androidterm.h (struct android_output): Implement frame
        resize synchronization.
 
-2023-01-20  Po Lu  <luangruo@yahoo.com>
-
-       Check in missing file
        * xcompile/verbose.mk.android: New file.
 
 2023-01-19  Po Lu  <luangruo@yahoo.com>
 
-       Merge remote-tracking branch 'origin/master' into feature/android
+       * .gitignore: Add new files.
 
-2023-01-19  Po Lu  <luangruo@yahoo.com>
+       * INSTALL.android: Explain how to build Emacs for ancient versions
+       of Android.
 
-       Update Android port
-       * .gitignore: Add new files.
-       * INSTALL.android: Explain how to build Emacs for ancient
-       versions of Android.
        * admin/merge-gnulib (GNULIB_MODULES): Add getdelim.
+
        * build-aux/config.guess (timestamp, version):
        * build-aux/config.sub (timestamp, version): Autoupdate.
+
        * configure.ac (BUILD_DETAILS, ANDROID_MIN_SDK):
        (ANDROID_STUBIFY): Allow specifying CFLAGS via ANDROID_CFLAGS.
        Add new configure tests for Android API version when not
        Input Devices''.
        (Android File System): Remove restrictions on directory-files on
        the assets directory.
+
        * doc/emacs/emacs.texi (Top): Add Other Input Devices to menu.
+
        * doc/emacs/input.texi (Other Input Devices): New node.
+
        * doc/lispref/commands.texi (Touchscreen Events): Document
        changes to touchscreen input events.
+
        * doc/lispref/frames.texi (Pop-Up Menus): Likewise.
+
        * etc/NEWS: Announce changes.
+
        * java/Makefile.in: Use lib-src/asset-directory-tool to generate
        an `directory-tree' file placed in /assets.
+
        * java/debug.sh: Large adjustments to support Android 2.2 and
        later.
 
        * java/org/gnu/emacs/EmacsDrawable.java (EmacsDrawable):
        * java/org/gnu/emacs/EmacsFillPolygon.java (perform):
        * java/org/gnu/emacs/EmacsFillRectangle.java (perform):
-       * java/org/gnu/emacs/EmacsGC.java (EmacsGC):
-       * java/org/gnu/emacs/EmacsPixmap.java (EmacsPixmap):
-       (destroyHandle):
+       * java/org/gnu/emacs/EmacsGC.java:
+       * java/org/gnu/emacs/EmacsPixmap.java (destroyHandle):
        * java/org/gnu/emacs/EmacsSdk7FontDriver.java (draw): Avoid
        redundant canvas saves and restores.
+
        * java/org/gnu/emacs/EmacsService.java (run):
        * java/org/gnu/emacs/EmacsView.java (EmacsView):
        (handleDirtyBitmap):
        (EmacsWindow): Make compatible with Android 2.2 and later.
 
        * lib-src/Makefile.in (DONT_INSTALL): Add asset-directory-tool
-       on Android.:(asset-directory-tool{EXEEXT}): New target.
+       on Android.
+       (asset-directory-tool${EXEEXT}): New target.
+
        * lib-src/asset-directory-tool.c (struct directory_tree, xmalloc)
        (main_1, main_2, main): New file.
 
        * lib, m4: Merge from gnulib.  This will be reverted before
        merging to master.
 
-       * lisp/button.el (button-map):
-       (push-button):
+       * lisp/button.el (button-map, push-button):
        * lisp/frame.el (display-popup-menus-p): Improve touchscreen
        support.
-       * lisp/subr.el (event-start):
-       (event-end): Handle touchscreen events.
-       * lisp/touch-screen.el (touch-screen-handle-timeout):
-       (touch-screen-handle-point-update):
-       (touch-screen-handle-point-up):
-       (touch-screen-track-tap):
-       (touch-screen-track-drag):
-       (touch-screen-drag-mode-line-1):
-       (touch-screen-drag-mode-line): New functions.
-       ([mode-line touchscreen-begin]):
+
+       * lisp/subr.el (event-start, event-end): Handle touchscreen
+       events.
+
+       * lisp/touch-screen.el (touch-screen-handle-timeout)
+       (touch-screen-handle-point-update, touch-screen-handle-point-up)
+       (touch-screen-track-tap, touch-screen-track-drag)
+       (touch-screen-drag-mode-line-1, touch-screen-drag-mode-line): New
+       function
+       ([mode-line touchscreen-begin])
        ([bottom-divider touchscreen-begin]): Bind new events.
 
-       * lisp/wid-edit.el (widget-event-point):
-       (widget-keymap):
-       (widget-event-start):
-       (widget-button--check-and-call-button):
+       * lisp/wid-edit.el (widget-event-point, widget-keymap)
+       (widget-event-start, widget-button--check-and-call-button)
        (widget-button-click): Improve touchscreen support.
 
        * src/alloc.c (make_lisp_symbol): Avoid ICE on Android NDK GCC.
        (android_opendir, android_readdir, android_closedir): Likewise.
        (android_four_corners_bilinear): Fix coding style.
        (android_ftruncate): New function.
+
        * src/android.h: Update prototypes.  Replace ftruncate with
        android_ftruncate when necessary.
 
        * src/androidterm.c (handle_one_android_event): Pacify GCC.  Fix
        touch screen tool bar bug.
+
        * src/emacs.c (using_utf8): Fix compilation error.
+
        * src/fileio.c (Ffile_system_info): Return Qnil when fsusage.o
        is not built.
+
        * src/filelock.c (BOOT_TIME_FILE): Fix definition for Android.
+
        * src/frame.c (Fx_parse_geometry): Fix uninitialized variable
        uses.
+
        * src/keyboard.c (lispy_function_keys): Fix `back'.
+
        * src/menu.c (x_popup_menu_1): Handle touch screen events.
        (Fx_popup_menu): Document changes.
 
        minor problem.
        (init_sfntfont_android): Check for
        HAVE_DECL_ANDROID_GET_DEVICE_API_LEVEL.
-       * src/sfntfont.c (struct sfnt_font_desc): New fields `adstyle'
-       and `languages'.
+
+       * src/sfntfont.c (struct sfnt_font_desc): New fields `adstyle' and
+       `languages'.
        (sfnt_parse_style): Append tokens to adstyle.
        (sfnt_parse_languages): New function.
        (sfnt_enum_font_1): Parse supported languages and adstyle.
 
 2023-01-17  Po Lu  <luangruo@yahoo.com>
 
-       Merge remote-tracking branch 'origin/master' into feature/android
-
-2023-01-17  Po Lu  <luangruo@yahoo.com>
+       * doc/emacs/android.texi (Android Fonts): Document that TTC format
+       fonts are now supported.
 
-       Update Android port
-       * doc/emacs/android.texi (Android Fonts): Document that TTC
-       format fonts are now supported.
        * doc/emacs/emacs.texi (Top): Fix menus.
+
        * doc/lispref/commands.texi (Touchscreen Events)
        (Key Sequence Input): Document changes to touchscreen events.
+
        * etc/DEBUG: Describe how to debug 64 bit binaries on Android.
 
        * java/org/gnu/emacs/EmacsCopyArea.java (perform): Explicitly
        recycle copy bitmap.
+
        * java/org/gnu/emacs/EmacsDialog.java (EmacsDialog): New class.
+
        * java/org/gnu/emacs/EmacsDrawRectangle.java (perform): Use 5
-       point PolyLine like X, because Android behaves like Postscript
-       on some devices and X elsewhere.
-       * java/org/gnu/emacs/EmacsFillRectangle.java (perform):
-       Explicitly recycle copy bitmap.
-       * java/org/gnu/emacs/EmacsPixmap.java (destroyHandle):
-       Explicitly recycle bitmap and GC if it is big.
+       point PolyLine like X, because Android behaves like Postscript on
+       some devices and X elsewhere.
+
+       * java/org/gnu/emacs/EmacsFillRectangle.java (perform): Explicitly
+       recycle copy bitmap.
+
+       * java/org/gnu/emacs/EmacsPixmap.java (destroyHandle): Explicitly
+       recycle bitmap and GC if it is big.
+
        * java/org/gnu/emacs/EmacsView.java (EmacsView): Make
        `bitmapDirty' a boolean.
        (handleDirtyBitmap): Reimplement in terms of that boolean.
        * src/android.c (android_run_select_thread, android_select):
        Really fix android_select.
        (android_build_jstring): New function.
+
        * src/android.h: Update prototypes.
+
        * src/androidmenu.c (android_process_events_for_menu): Totally
        unblock input before process_pending_signals.
-       (android_menu_show): Remove redundant unblock_input and
-       debugging code.
+       (android_menu_show): Remove redundant unblock_input and debugging
+       code.
        (struct android_emacs_dialog, android_init_emacs_dialog)
        (android_dialog_show, android_popup_dialog, init_androidmenu):
        Implement popup dialogs on Android.
        tapping tool bar items.
        (android_create_terminal): Add dialog hook.
        (android_wait_for_event): Adjust call to android_select.
+
        * src/androidterm.h (struct android_touch_point): New field
        `tool_bar_p'.
+
        * src/keyboard.c (read_key_sequence, head_table)
        (syms_of_keyboard): Prefix touchscreen events with posn.
+
        * src/keyboard.h (EVENT_HEAD): Handle touchscreen events.
+
        * src/process.c (wait_reading_process_output): Adjust call to
        android_select.
-       * src/sfnt.c (sfnt_read_table_directory): If the first long
-       turns out to be ttcf, return -1.
+
+       * src/sfnt.c (sfnt_read_table_directory): If the first long turns
+       out to be ttcf, return -1.
        (sfnt_read_ttc_header): New function.
        (main): Test TTC support.
 
        * src/sfnt.h (struct sfnt_ttc_header): New structure.
        (enum sfnt_ttc_tag): New enum.
 
-       * src/sfntfont-android.c (struct
-       sfntfont_android_scanline_buffer): New structure.
+       * src/sfntfont-android.c
+       (struct sfntfont_android_scanline_buffer): New structure.
        (GET_SCANLINE_BUFFER): New macro.  Try to avoid so much malloc
        upon accessing the scanline buffer.
-       (sfntfont_android_put_glyphs): Do not use SAFE_ALLOCA to
-       allocate the scaline buffer.
+       (sfntfont_android_put_glyphs): Do not use SAFE_ALLOCA to allocate
+       the scaline buffer.
        (Fandroid_enumerate_fonts): Enumerate ttc fonts too.
 
        * src/sfntfont.c (struct sfnt_font_desc): New field `offset'.
        (sfnt_enum_font_1): Split out enumeration code from
        sfnt_enum_font.
-       (sfnt_enum_font): Read TTC tables and enumerate each font
-       therein.
+       (sfnt_enum_font): Read TTC tables and enumerate each font therein.
        (sfntfont_open): Seek to the offset specified.
 
        * xcompile/Makefile.in (maintainer-clean): Fix depends here.
 
 2023-01-16  Po Lu  <luangruo@yahoo.com>
 
-       Fix display of glyphs with word-sized component offsets on Android
-       * src/sfnt.c (sfnt_decompose_compound_glyph): Handle correctly
+       * src/sfnt.c (sfnt_decompose_compound_glyph): Correct treatment of
        the Y offset in components with ARG_1_AND_2_ARE_WORDS.
        (main): Update debugging code.
 
-       Merge remote-tracking branch 'origin/master' into feature/android
-
-2023-01-16  Po Lu  <luangruo@yahoo.com>
-
-       Update Android port
        * doc/emacs/android.texi (Android, Android Environment): Improve
        documentation.
-       * doc/lispref/commands.texi (Touchscreen Events): Document
-       changes to touchscreen support.
+
+       * doc/lispref/commands.texi (Touchscreen Events): Document changes
+       to touchscreen support.
+
        * doc/lispref/display.texi (Defining Faces, Window Systems):
-       * doc/lispref/frames.texi (Frame Layout, Font and Color
-       Parameters):
+       * doc/lispref/frames.texi (Frame Layout)
+       (Font and Color Parameters):
        * doc/lispref/os.texi (System Environment): Document Android in
        various places.
 
        * java/org/gnu/emacs/EmacsWindow.java (figureChange): Fix crash.
-       * lisp/loadup.el: ("touch-screen"): Load touch-screen.el.
+
+       * lisp/loadup.el ("touch-screen"): Load touch-screen.el.
+
        * lisp/pixel-scroll.el: Autoload two functions.
+
        * lisp/term/android-win.el: Add require 'touch-screen.
+
        * lisp/touch-screen.el (touch-screen-current-tool)
        (touch-screen-current-timer, touch-screen-delay)
        (touch-screen-relative-xy, touch-screen-handle-scroll)
        (touch-screen-handle-timeout, touch-screen-handle-point-update)
        (touch-screen-handle-point-up, touch-screen-handle-touch)
        (global-map, touch-screen): New file.
+
        * src/android.c (android_run_debug_thread): Fix build on 64 bit
        systems.
        (JNICALL, android_put_pixel): Likewise.
        (android_fetch_pixel_bilinear, android_project_image_bilinear)
        (android_fetch_pixel_nearest_24, android_fetch_pixel_nearest_1)
        (android_project_image_nearest): New functions.
+
        * src/androidgui.h (struct android_transform): New structure.
-       * src/androidterm.c (android_note_mouse_movement): Remove
-       obsolete TODO.
+
+       * src/androidterm.c (android_note_mouse_movement): Remove obsolete
+       TODO.
        (android_get_scale_factor): New function.
        (android_draw_underwave): Scale underwave correctly.
+
        * src/dispextern.h: Support native image transforms on Android.
+
        * src/image.c (matrix_identity, matrix_rotate)
        (matrix_mirror_horizontal, matrix_translate): New functions.
        (image_set_transform): Implement native image transforms on
        (Fimage_transforms_p): Implement on Android.
 
        * src/keyboard.c (make_lispy_event, syms_of_keyboard): Handle
-       touch screen- menu bar events.
+       touch screen menu bar events.
+
        * src/sfnt.c: Fix typo in comment.
+
        * src/sfntfont-android.c (sfntfont_android_blend, U255TO256)
-       (sfntfont_android_put_glyphs): Avoid redundant swizzling.
+       (sfntfont_android_put_glyphs): Prevent redundant swizzling.
+
        * src/sfntfont.c (sfntfont_lookup_char): Fix build on 64 bit
        systems.
 
 2023-01-15  Po Lu  <luangruo@yahoo.com>
 
-       Implement submenus on Android
        * java/org/gnu/emacs/EmacsActivity.java (onCreate): Set the
        default theme to Theme.DeviceDefault.NoActionBar if possible.
        (onContextMenuClosed): Add hack for Android bug.
+
        * java/org/gnu/emacs/EmacsContextMenu.java (EmacsContextMenu)
        (onMenuItemClick): Set flag upon submenu selection.
        (inflateMenuItems): Set onClickListener for submenus as well.
        (display1): Clear new flag.
+
        * java/org/gnu/emacs/EmacsDrawRectangle.java (perform): Fix
        rectangle bounds.
-       * java/org/gnu/emacs/EmacsNative.java (EmacsNative):
+
+       * java/org/gnu/emacs/EmacsNative.java (setEmacsParams): New
+       argument for the cache directory.
+
        * java/org/gnu/emacs/EmacsService.java (onCreate): Pass cache
        directory.
        (sync): New function.
-       * src/android.c (struct android_emacs_service): New method
-       `sync'.
+
+       * src/android.c (struct android_emacs_service): New method `sync'.
        (setEmacsParams, initEmacs): Handle cache directory.
        (android_init_emacs_service): Initialize new method `sync'.
        (android_sync): New function.
+
        * src/androidfns.c (Fx_show_tip): Call both functions.
+
        * src/androidgui.h: Update prototypes.
+
        * src/androidmenu.c (struct android_menu_subprefix)
        (android_free_subprefixes, android_menu_show): Handle submenu
        prefixes correctly.
+
        * src/androidterm.c (handle_one_android_event): Clear help echo
        on MotionNotify like on X.
-       * src/menu.c (single_menu_item): Enable submenus on Android.
 
-       Merge remote-tracking branch 'origin/master' into feature/android
+       * src/menu.c (single_menu_item): Enable submenus on Android.
 
 2023-01-15  Po Lu  <luangruo@yahoo.com>
 
-       Implement toolkit menus on Android
        * java/org/gnu/emacs/EmacsActivity.java (onContextMenuClosed):
        New function.
-       * java/org/gnu/emacs/EmacsContextMenu.java (EmacsContextMenu):
-       New field `itemAlreadySelected'.
+
+       * java/org/gnu/emacs/EmacsContextMenu.java (EmacsContextMenu): New
+       field `itemAlreadySelected'.
        (onMenuItemClick): New function.
        (inflateMenuItems): Attach onClickListener as appropriate.
        (display1): Clear itemAlreadySelected.
        (display): Fix runnable synchronization.
+
        * java/org/gnu/emacs/EmacsNative.java (sendContextMenu): New
        function.
+
        * java/org/gnu/emacs/EmacsView.java (popupMenu):
        (cancelPopupMenu): Set popupactive correctly.
 
        * src/android.c (android_run_select_thread): Fix android_select
        again.
        (android_wait_event): New function.
+
        * src/android.h: Update prototypes.
        * src/androidgui.h (enum android_event_type): New
        `ANDROID_CONTEXT_MENU' event.
 
        * src/androidterm.c (handle_one_android_event): Handle context
        menu events.
+
        * src/androidterm.h (struct android_display_info): New field for
        menu item ID.
+
        * src/emacs.c (android_emacs_init): Call syms_of_androidmenu.
-       * src/xdisp.c (note_mouse_highlight): Return if popup_activated
-       on Android as well.
+
+       * src/xdisp.c (note_mouse_highlight): Return if popup_activated on
+       Android as well.
 
 2023-01-14  Po Lu  <luangruo@yahoo.com>
 
-       Fix android_select
        * src/android.c (android_run_select_thread, android_select):
        Handle EINTR in sem_wait and fix sigsets.
 
-       Add temporary gnulib patch
        * xcompile/lib/fpending.c (__fpending): Fix gnulib problem.
 
-       Drop unneeded changes to gnulib
        * xcompile/lib/fpending.c (__fpending):
        * xcompile/lib/open.c:
        * xcompile/lib/unistd.c (_GL_UNISTD_INLINE): Remove Android
        patches.
 
-       Merge remote-tracking branch 'origin/master' into feature/android
-
 2023-01-14  Po Lu  <luangruo@yahoo.com>
 
-       Update Android port
-       * java/Makefile.in (clean): Fix distclean and bootstrap-clean rules.
-       * java/debug.sh (jdb_port):
-       (attach_existing):
-       (num_pids):
-       (line): Add new options to upload a gdbserver binary to the device.
+       * java/Makefile.in (clean): Fix distclean and bootstrap-clean
+       rules.
+       * java/debug.sh (jdb_port, attach_existing, num_pids, line): Add
+       new options to upload a gdbserver binary to the device.
 
        * java/org/gnu/emacs/EmacsActivity.java (EmacsActivity): Make
        focusedActivities public.
-       * java/org/gnu/emacs/EmacsContextMenu.java (EmacsContextMenu):
-       New class.
+
+       * java/org/gnu/emacs/EmacsContextMenu.java: New file.
+
        * java/org/gnu/emacs/EmacsDrawRectangle.java (perform): Fix
        bounds computation.
-       * java/org/gnu/emacs/EmacsGC.java (markDirty): Set stroke width
-       explicitly.
-       * java/org/gnu/emacs/EmacsService.java (EmacsService)
-       (getLocationOnScreen, nameKeysym): New functions.
-       * java/org/gnu/emacs/EmacsView.java (EmacsView): Disable focus
+
+       * java/org/gnu/emacs/EmacsGC.java (markDirty): Expressly provide
+       stroke width.
+
+       * java/org/gnu/emacs/EmacsService.java (getLocationOnScreen)
+       (nameKeysym): New functions.
+
+       * java/org/gnu/emacs/EmacsView.java (<init>): Disable focus
        highlight.
-       (onCreateContextMenu, popupMenu, cancelPopupMenu): New
-       functions.
-       * java/org/gnu/emacs/EmacsWindow.java (EmacsWindow): Implement a
-       kind of ``override redirect'' window for tooltips.
+       (onCreateContextMenu, popupMenu, cancelPopupMenu): New functions.
+
+       * java/org/gnu/emacs/EmacsWindow.java: Implement a kind of
+       ``override redirect'' window for tooltips.
+
        * src/android.c (struct android_emacs_service): New method
        `name_keysym'.
        (android_run_select_thread, android_init_events):
        (android_move_resize_window, android_map_raised)
        (android_translate_coordinates, android_get_keysym_name)
        (android_build_string, android_exception_check): New functions.
+
        * src/android.h: Update prototypes.
 
        * src/androidfns.c (android_set_parent_frame, Fx_create_frame)
 
 2023-01-14  Po Lu  <luangruo@yahoo.com>
 
-       Improve reliability of Android build system
        * .gitignore: Add new files.
+
        * INSTALL.android: New file.
+
        * Makefile.in (clean_dirs): Clean xcompile as well.
-       * admin/merge-gnulib (avoided_flags): Import gnulib into Android
+
+       * admin/merge-gnulib (avoided_flags): Import Gnulib into Android
        directory as well.
+
        * doc/emacs/android.texi (Android):
        * doc/emacs/emacs.texi (Top): New node `Android'.
-       * java/org/gnu/emacs/EmacsThread.java (run): Use right
-       executable name.
+
+       * java/org/gnu/emacs/EmacsThread.java (run): Use right executable
+       name.
+
        * lib/Makefile.in (ANDROID_CFLAGS): Use better way to refer to
        /src.
        (vpath): Delete ugly block of vpath statements.
        (mostlyclean): Remove Makefile.android.
+
        * lib/fpending.c (__fpending):
        * lib/open.c:
        * lib/unistd.c (_GL_UNISTD_INLINE): Revert changes to gnulib in
        lib/.
+
        * src/android.h:
        * src/androidterm.c: Fix build.
-       * xcompile/Makefile.in (LIB_SRCDIR):
-       (LIBSRC_BINARIES, src/verbose.mk):
-       (PRE_BUILD_DEPS, PHONY): Use gnulib in xcompile/lib/ as opposed
-       to lib/.
+       * xcompile/Makefile.in (LIB_SRCDIR, LIBSRC_BINARIES)
+       (src/verbose.mk, PRE_BUILD_DEPS, PHONY): Use gnulib in
+       xcompile/lib/ as opposed to lib/.
+
        * xcompile/README: Adjust README.
 
-       Check in gnulib with Android patches
-       * xcompile/lib: Check-in gnulib with patches for Android.
+       * xcompile/lib: Check-in Gnulib with patches for Android.
 
 2023-01-13  Po Lu  <luangruo@yahoo.com>
 
-       Merge remote-tracking branch 'origin/master' into feature/android
-
-       Fix crashes in Android port
        * java/org/gnu/emacs/EmacsService.java (queryTree): Fix NULL
        pointer dereference.
+
        * src/android.c (android_query_tree): Set *nchildren_return.
 
        * .gitignore: Add AndroidManifest.xml.
 
        * src/frame.c (make_monitor_attribute_list): Allow source to be NULL.
 
-2023-01-13  Po Lu  <luangruo@yahoo.com>
-
-       Update Android port
        * configure.ac (ANDROID_MIN_SDK): New variable.
        (DX): Remove and replace with D8.
        (XCONFIGURE): Check for the minimum version of Android the cross
        * java/Makefile.in (top_srcdir, version): New variables.
        (DX, D8): Replace with D8.
        (ANDROID_MIN_SDK, APK_NAME): New variables.
-       (.PHONY):
-       (.PRECIOUS):
-       (classes.dex):
-       (emacs.apk): Generate $(APK_NAME) instead of `emacs.apk'.
+       (.PHONY, .PRECIOUS, classes.dex, emacs.apk): Generate $(APK_NAME)
+       rather than `emacs.apk'.
 
        * java/debug.sh: New option --attach-existing.  Attach to an
        existing Emacs instance when specified.
 
-       * java/org/gnu/emacs/EmacsActivity.java (EmacsActivity): New
-       field `isPaused'.
+       * java/org/gnu/emacs/EmacsActivity.java (EmacsActivity): New field
+       `isPaused'.
        (invalidateFocus1): Fix infinite recursion.
        (detachWindow): Deiconify window.
        (attachWindow): Iconify the window if the activity is paused.
        (onCreate): Use the ``no title bar'' theme.
        (onPause, onResume): New functions.
+
        * java/org/gnu/emacs/EmacsNative.java (sendTouchUp, sendTouchDown)
        (sendTouchMove, sendWheel, sendIconified, sendDeiconified): New
        functions.
+
        * java/org/gnu/emacs/EmacsSdk7FontDriver.java (Sdk7Typeface):
        (list): Remove logging for code that is mostly going to be unused.
+
        * java/org/gnu/emacs/EmacsService.java (ringBell, queryTree)
        (getScreenWidth, getScreenHeight, detectMouse): New functions.
+
        * java/org/gnu/emacs/EmacsSurfaceView.java (EmacsSurfaceView)
        (surfaceChanged, surfaceCreated, surfaceDestroyed): Add extra
        debug logging.  Avoid deadlock in surfaceCreated.
 
-       * java/org/gnu/emacs/EmacsView.java (EmacsView): Try very hard
-       to make the SurfaceView respect Z order.  It didn't work.
+       * java/org/gnu/emacs/EmacsView.java (EmacsView): Try very hard to
+       make the SurfaceView respect Z order.  It didn't work.
        (handleDirtyBitmap): Copy over the contents from the old bitmap.
        (explicitlyDirtyBitmap): New function.
        (onLayout): Don't dirty bitmap if unnecessary.
        (reparentTo, makeInputFocus, raise, lower, getWindowGeometry)
        (noticeIconified, noticeDeiconified, setDontAcceptFocus)
        (setDontFocusOnMap, getDontFocusOnMap): New functions.
+
        * java/org/gnu/emacs/EmacsWindowAttachmentManager.java
        (registerWindow, detachWindow): Synchronize.
        (noticeIconified, noticeDeiconified): New functions.
        (frame-list-z-order, frame-restack, display-mouse-p)
        (display-monitor-attributes-list): Implement on Android.
 
-       * lisp/mwheel.el (mouse-wheel-down-event):
-       (mouse-wheel-up-event):
-       (mouse-wheel-left-event):
-       (mouse-wheel-right-event): Define on Android.
+       * lisp/mwheel.el (mouse-wheel-down-event, mouse-wheel-up-event)
+       (mouse-wheel-left-event, mouse-wheel-right-event): Define on
+       Android.
 
        * src/android.c (struct android_emacs_service): New methods
        `ringBell', `queryTree', `getScreenWidth', `getScreenHeight',
        (android_bell, android_set_input_focus, android_raise_window)
        (android_lower_window, android_query_tree, android_get_geometry)
        (android_get_screen_width, android_get_screen_height)
-       (android_get_mm_width, android_get_mm_height, android_detect_mouse)
+       (android_get_mm_width, android_get_mm_height)
+       (android_detect_mouse)
        (android_set_dont_focus_on_map, android_set_dont_accept_focus):
        New functions.
        (struct android_dir): New structure.
        handlers.
        (syms_of_androidfns): Update appropriately.
 
-       * src/androidfont.c (androidfont_draw): Use
-       FRAME_ANDROID_DRAWABLE instead of FRAME_ANDROID_WINDOW.
+       * src/androidfont.c (androidfont_draw): Use FRAME_ANDROID_DRAWABLE
+       instead of FRAME_ANDROID_WINDOW.
 
        * src/androidgui.h (enum android_event_type): New events.
        (struct android_touch_event, struct android_wheel_event)
        * src/androidterm.c (android_clear_frame): Use
        FRAME_ANDROID_DRAWABLE instead of FRAME_ANDROID_WINDOW.
        (android_flash, android_ring_bell): Implement bell ringing.
-       (android_toggle_invisible_pointer): Don't TODO function that
-       can't be implemented.
-       (show_back_buffer, android_flush_dirty_back_buffer_on): Check if
-       buffer flip is required before doing the flip.
+       (android_toggle_invisible_pointer): Don't TODO function that can't
+       be implemented.
+       (show_back_buffer, android_flush_dirty_back_buffer_on): Check if a
+       buffer flip is required before doing the flip.
        (android_lower_frame, android_raise_frame): Implement functions.
        (android_update_tools, android_find_tool): New functions.
        (handle_one_android_event): Handle new iconification, wheel and
        (android_draw_glyph_string, android_clear_frame_area)
        (android_clear_under_internal_border, android_draw_hollow_cursor)
        (android_draw_bar_cursor, android_draw_vertical_window_border)
-       (android_draw_window_divider): Use FRAME_ANDROID_DRAWABLE
-       instead of FRAME_ANDROID_WINDOW for drawing operations.
+       (android_draw_window_divider): Use FRAME_ANDROID_DRAWABLE instead
+       of FRAME_ANDROID_WINDOW for drawing operations.
 
        * src/androidterm.h (struct android_touch_point): New structure.
        (struct android_output): New fields.
 
        * src/dired.c (emacs_readdir, open_directory)
        (directory_files_internal_unwind, read_dirent)
-       (directory_files_internal, file_name_completion): Add
-       indirection over readdir and opendir.  Use android variants on
-       Android.
+       (directory_files_internal, file_name_completion): Add indirection
+       over readdir and opendir.  Use android variants on Android.
 
        * src/dispnew.c (Fopen_termscript):
        * src/fileio.c (fclose_unwind): Use emacs_fclose.
        (file_accessible_directory_p): Append right suffix to Android
        assets directory.
        (do_auto_save_unwind): Use emacs_fclose.
-       * src/keyboard.c (lispy_function_keys): Use right function key
-       for page up and page down.
+
+       * src/keyboard.c (lispy_function_keys): Use right function key for
+       page up and page down.
        (Fopen_dribble_file): Use emacs_fclose.
 
        * src/lisp.h: New prototype emacs_fclose.
        * src/sfnt.c (sfnt_curve_is_flat): Fix area-squared computation.
        (sfnt_prepare_raster): Compute raster width and height
        consistently with outline building.
-       (sfnt_build_outline_edges): Use the same offsets used to set
-       offy and offx.
+       (sfnt_build_outline_edges): Use the same offsets used to set offy
+       and offx.
        (main): Adjust debug code.
 
        * src/sfntfont-android.c (sfntfont_android_saturate32): Delete
        function.
        (sfntfont_android_blend, sfntfont_android_blendrgb): Remove
        unnecessary debug code.
-       (sfntfont_android_composite_bitmap): Prevent out of bounds
-       write.
+       (sfntfont_android_composite_bitmap): Prevent out of bounds write.
        (sfntfont_android_put_glyphs): Use FRAME_ANDROID_DRAWABLE.
        (init_sfntfont_android): Initialize Monospace Serif font to
        something sensible.
+
        * src/sfntfont.c (sfntfont_text_extents): Clear glyph metrics
        before summing up pcm.
        (sfntfont_draw): Use s->font instead of s->face->font.
 
        * src/sysdep.c (emacs_fclose): Wrap around android_fclose on
-       android.
+       Android.
 
-       * src/term.c (Fsuspend_tty):
-       (delete_tty): Use emacs_fclose.
+       * src/term.c (Fsuspend_tty, delete_tty): Use emacs_fclose.
        * src/verbose.mk.in (AM_V_DX): Replace with D8 version.
 
-2023-01-11  Po Lu  <luangruo@yahoo.com>
-
-       Merge remote-tracking branch 'origin/master' into feature/android
-
 2023-01-11  Po Lu  <luangruo@yahoo.com>
 
        Bring up the sfnt-android font driver