summaryrefslogtreecommitdiff
path: root/ChangeLog.android
diff options
context:
space:
mode:
authorPo Lu <luangruo@yahoo.com>2023-08-04 15:00:18 +0800
committerPo Lu <luangruo@yahoo.com>2023-08-04 15:00:18 +0800
commit6bfff65778796d997813719a1c18e27b6bd49203 (patch)
tree5bde44110ada3a51c57493cdc925215d6d30692c /ChangeLog.android
parentbfbdf4eb892935536fc665d6cc986fd669364263 (diff)
downloademacs-6bfff65778796d997813719a1c18e27b6bd49203.tar.gz
; Prepare Android port for inclusion in Emacs
* ChangeLog.android: New file.
Diffstat (limited to 'ChangeLog.android')
-rw-r--r--ChangeLog.android7926
1 files changed, 7926 insertions, 0 deletions
diff --git a/ChangeLog.android b/ChangeLog.android
new file mode 100644
index 00000000000..4fad3d872cf
--- /dev/null
+++ b/ChangeLog.android
@@ -0,0 +1,7926 @@
+2023-08-04 Po Lu <luangruo@yahoo.com>
+
+ * ChangeLog.android: New file.
+
+2023-08-04 Po Lu <luangruo@yahoo.com>
+
+ Optimize creation of multibyte menu items on Android
+ * src/androidvfs.c (android_verify_jni_string): Move to
+ android.c.
+ * src/android.c (android_verify_jni_string): New function.
+ (android_build_string): Forgo encoding menu text if TEXT is a
+ multibyte string that's also a valid JNI string.
+ * src/android.h: Update prototypes.
+
+ Avoid encoding commonplace characters in tree names
+ * java/org/gnu/emacs/EmacsService.java (getDocumentTrees): Don't
+ encode some characters that need not be escaped within file
+ names.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-08-03 Po Lu <luangruo@yahoo.com>
+
+ * src/fileio.c (check_vfs_filename): Revert earlier change.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Isolate fchmodat within the Android VFS layer
+ * src/android.h: Update prototypes.
+ * src/androidvfs.c (unix_vfs_ops, android_unix_chmod, afs_vfs_ops)
+ (android_afs_chmod, content_vfs_ops, android_content_chmod)
+ (authority_vfs_ops, android_authority_chmod, saf_root_vfs_ops)
+ (android_saf_root_chmod, saf_tree_vfs_ops, android_saf_tree_chmod)
+ (saf_file_vfs_ops, saf_new_vfs_ops, android_saf_new_chmod)
+ (root_vfs_ops): Add `chmod' to the list of functions implemented
+ by each vnode.
+ (android_fchmodat): New function.
+ * src/fileio.c (Fset_file_modes): Use `emacs_fchmodat'.
+ * src/lisp.h:
+ * src/sysdep.c (emacs_fchmodat): Delegate to android_fchmodat on
+ Android.
+
+ Update Android port
+ * java/org/gnu/emacs/EmacsSafThread.java (CacheToplevel):
+ (EmacsSafThread):
+ (DocIdEntry):
+ (getCache):
+ (pruneCache):
+ (cacheDirectoryFromCursor):
+ (run):
+ (documentIdFromName1):
+ (statDocument1):
+ (openDocumentDirectory1):
+ (openDocument1): Introduce a file status cache and populate
+ it with files within directories as they are opened.
+ * java/org/gnu/emacs/EmacsService.java (createDocument):
+ (createDirectory):
+ (moveDocument): Invalidate the file status cache wherever
+ needed.
+ * src/fileio.c (check_vfs_filename):
+ (Fset_file_modes): Permit `set-file-modes' to silently fail
+ on asset and content files.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-08-02 Po Lu <luangruo@yahoo.com>
+
+ Fix reporting of key events containing SYM and META
+ * doc/emacs/android.texi (Android)::(What is Android?):
+ (Android Startup, Android File System, Android Environment)
+ (Android Windowing, Android Fonts, Android Troubleshooting):
+ Improve section titles.
+ (Android Windowing): Describe the relation between keyboard
+ modifiers reported by Android and those in key events.
+ * java/org/gnu/emacs/EmacsWindow.java (onKeyDown, onKeyUp):
+ Clear META_SYM_ON and META_META_MASK when retrieving ASCII
+ characters.
+ * src/androidgui.h: Add ANDROID_META_MASK.
+ * src/androidterm.c (android_android_to_emacs_modifiers)
+ (android_emacs_to_android_modifiers): Transform META to Alt, and
+ vice versa.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-08-01 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * doc/emacs/android.texi (Android File System): Describe how to
+ access real files named /assets or /contents if so required.
+ * java/org/gnu/emacs/EmacsService.java (validAuthority):
+ * src/android.c (android_init_emacs_service):
+ * src/android.h: New function.
+ * src/androidvfs.c (android_saf_valid_authority_p): New
+ function. Wrap the Java function.
+ (android_saf_root_stat, android_saf_root_access): Don't return
+ success if no authority by vp->authority's name exists.
+ (android_saf_tree_from_name): Check validity of string data
+ before giving it to JNI.
+
+ Micro-optimize PUSHW/PUSHB
+ * src/sfnt.c (CHECK_STACK_AVAILABLE): New macro.
+ (PUSH):
+ (PUSH_UNCHECKED): Always define to unchecked versions,
+ even if TEST.
+ (PUSH2_UNCHECKED): New macro.
+ (NPUSHB):
+ (NPUSHW):
+ (PUSHB):
+ (PUSHW): Check the number of remaining stack elements
+ once.
+ (stack_overflow_test_args): Expect zero stack arguments.
+
+ * src/android.c (ANDROID_THROW): Remove unused macro.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-07-31 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * src/sfnt.c (ISECT): Micro-optimize this instruction.
+ * src/sfntfont.c (sfnt_parse_style): Avoid GC safety problem.
+
+ Update Android port
+ * src/sfntfont.c (sfnt_parse_style): Fix misworded commentary.
+
+ Initialize Android API level earlier
+ * java/org/gnu/emacs/EmacsNative.java (EmacsNative):
+ * java/org/gnu/emacs/EmacsNoninteractive.java (main):
+ * java/org/gnu/emacs/EmacsService.java (run):
+ * java/org/gnu/emacs/EmacsThread.java (run):
+ * src/android.c (initEmacs, setEmacsParams): Set
+ `android_api_level' within setEmacsParams, not in initEmacs.
+ * src/androidvfs.c: Pacify compiler warnings.
+
+ Implement cross-directory SAF rename operations
+ * java/org/gnu/emacs/EmacsService.java (renameDocument): Don't
+ catch UnsupportedOperationException; handle ENOSYS in
+ android_saf_rename_document instead.
+ (moveDocument): New function.
+ * lisp/subr.el (y-or-n-p): Always change the text conversion
+ style.
+ * src/android.c (android_init_emacs_service)
+ (android_exception_check_4): New function.
+ * src/android.h: Update Java function table.
+ * src/androidvfs.c (android_saf_rename_document): Handle ENOSYS
+ here by setting errno to EXDEV.
+ (android_saf_move_document): New function.
+ (android_document_id_from_name): Take const `dir_name'.
+ (android_saf_tree_rename): Use delete-move-rename to implement
+ cross-directory renames.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-07-30 Po Lu <luangruo@yahoo.com>
+
+ Partially implement rename operations on SAF files
+ * java/org/gnu/emacs/EmacsSafThread.java
+ (postInvalidateCacheDir):
+ * java/org/gnu/emacs/EmacsService.java (renameDocument): New
+ functions.
+ * src/android.c (android_init_emacs_service):
+ * src/android.h (struct android_emacs_service): Link to new JNI
+ function.
+ * src/androidvfs.c (android_saf_rename_document): New function.
+ (android_saf_tree_rename): Implement in terms of that function
+ if possible.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-07-29 Po Lu <luangruo@yahoo.com>
+
+ Correct directory permissions reported for VFS files
+ * java/org/gnu/emacs/EmacsSafThread.java (statDocument1):
+ * src/androidvfs.c (android_afs_stat, android_content_stat)
+ (android_saf_root_stat): Report search permissions for files.
+
+ Update Android port
+ * src/androidvfs.c: Improve commentary.
+
+2023-07-29 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * java/org/gnu/emacs/EmacsSafThread.java (postInvalidateCache):
+ New argument cacheName. Remove that file from the cache.
+ (accessDocument1): Consult the storage cache as well.
+ * java/org/gnu/emacs/EmacsService.java (deleteDocument): New
+ argument NAME.
+
+ * src/android.c (android_init_emacs_service): Add new argument.
+ * src/androidvfs.c (android_saf_delete_document)
+ (android_saf_tree_rmdir, android_saf_file_unlink): Pass name of
+ file being deleted to `deleteDocument'.
+
+2023-07-29 Po Lu <luangruo@yahoo.com>
+
+ ; Update Android port
+ * src/androidvfs.c (android_saf_exception_check): Describe
+ exceptions earlier.
+
+ Update Android port
+ * java/org/gnu/emacs/EmacsSafThread.java (DocIdEntry):
+ (getCacheEntry):
+ (CacheEntry):
+ (documentIdFromName1): Fix earlier change.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Update Android port
+ * java/org/gnu/emacs/EmacsSafThread.java (DocIdEntry)
+ (getCacheEntry, CacheEntry): Use `uptimeMillis' as the basis for
+ cache expiration.
+
+ Update Android port
+ * java/org/gnu/emacs/EmacsSafThread.java (EmacsSafThread, getCache)
+ (pruneCache1, pruneCache, cacheChild, cacheDirectoryFromCursor)
+ (documentIdFromName1, openDocumentDirectory1): Implement the
+ cache referred to by the commentary.
+ * java/org/gnu/emacs/EmacsService.java (deleteDocument):
+ Invalidate the cache upon document removal.
+ * src/androidvfs.c (android_saf_exception_check)
+ (android_document_id_from_name): Correctly preserve or set errno
+ in error cases.
+
+2023-07-28 Po Lu <luangruo@yahoo.com>
+
+ Fix SAF query
+ * java/org/gnu/emacs/EmacsSafThread.java (documentIdFromName1):
+ Fix query argument placeholder string.
+
+ Update Android port
+ * src/androidvfs.c (android_document_id_from_name): Don't return
+ 0 if an SAF exception occurs.
+
+ Avoid crashes when the primary clip is empty
+ * src/androidselect.c (Fandroid_get_clipboard): Don't return
+ data if clipboard is empty. Reported by Johan Widén
+ <j.e.widen@gmail.com>.
+
+2023-07-28 Po Lu <luangruo@yahoo.com>
+
+ Allow quitting from Android content provider operations
+ * doc/emacs/android.texi (Android Document Providers): Say that
+ quitting is now possible.
+ * java/org/gnu/emacs/EmacsNative.java (EmacsNative): New
+ functions `safSyncAndReadInput', `safync' and `safPostRequest'.
+ * java/org/gnu/emacs/EmacsSafThread.java: New file. Move
+ cancel-able SAF operations here.
+ * java/org/gnu/emacs/EmacsService.java (EmacsService): Allow
+ quitting from most SAF operations.
+ * src/androidvfs.c (android_saf_exception_check): Return EINTR
+ if OperationCanceledException is received.
+ (android_saf_stat, android_saf_access)
+ (android_document_id_from_name, android_saf_tree_opendir_1)
+ (android_saf_file_open): Don't allow reentrant calls from async
+ input handlers.
+ (NATIVE_NAME): Implement new synchronization primitives for JNI.
+ (android_vfs_init): Initialize new class.
+
+ * src/dired.c (open_directory): Handle EINTR from opendir.
+ * src/sysdep.c: Describe which operations may return EINTR on
+ Android.
+
+2023-07-28 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * java/org/gnu/emacs/EmacsDirectoryEntry.java
+ (EmacsDirectoryEntry): Make class final.
+ * java/org/gnu/emacs/EmacsService.java (accessDocument)
+ (openDocumentDirectory, openDocument, createDocument): Throw
+ access and IO error exceptions instead of catching them.
+ (createDirectory, deleteDocument): New functions.
+ * src/android.c (android_init_emacs_service): Add new functions.
+ * src/android.h (struct android_emacs_service): Likewise.
+ * src/androidvfs.c (android_saf_exception_check): New function.
+ Translate between Java exceptions and errno values.
+ (android_saf_stat, android_saf_access, android_saf_delete_document)
+ (struct android_saf_tree_vnode, android_document_id_from_name)
+ (android_saf_tree_name, android_saf_tree_rmdir)
+ (android_saf_tree_opendir_1, android_saf_tree_opendir)
+ (android_saf_file_open, android_saf_file_unlink)
+ (android_saf_new_open, android_saf_new_mkdir): Implement missing
+ VFS operations and derive errno values from the type of any
+ exceptions thrown.
+ (android_vfs_init): Initialize exception classes.
+ (android_mkdir, android_fstat): Remove trailing whitespace.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-07-27 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * doc/emacs/android.texi (Android Document Providers): Improve
+ wording of paragraph clarifying limits on subprocesses.
+ * java/org/gnu/emacs/EmacsService.java (getDocumentTrees): Use
+ Java standard US-ASCII coding standard instead of the
+ undocumented ``ASCII'' alias.
+ (decodeFileName): Remove unused function.
+ (documentIdFromName):
+ * src/android.c (android_init_emacs_service): Take a String for
+ NAME instead of a byte array.
+ * src/androidvfs.c (android_verify_jni_string): New function.
+ (android_document_id_from_name): Verify that STRING is a valid
+ Modified UTF-8 string.
+
+ Update Android port
+ * src/androidvfs.c (android_afs_initial):
+ (android_content_get_directory_name):
+ (android_saf_tree_name):
+ (android_saf_tree_from_name):
+ (android_vfs_init): Silence compiler warnings.
+
+ Update Android port
+ * src/android.c (android_run_in_emacs_thread): Behave more
+ robustly if SIGIO arrives too late Emacs for Emacs to check for
+ signals, but too early to preempt a long running syscall.
+
+ Avoid crashes in some edge cases
+ * java/org/gnu/emacs/EmacsActivity.java (onActivityResult):
+ Avoid crashes in some edge cases.
+
+ Avoid dereference of a freed vnode's operations table
+ * src/androidvfs.c (android_renameat_noreplace):
+ (android_rename): Free vdst using vdst->ops, not vp->ops.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-07-27 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * configure.ac (ANDROID_STUBIFY): Add androidvfs.o when building
+ libemacs.so.
+ * doc/emacs/android.texi (Android): Add `Android Document Providers'.
+ (Android Startup): Update the location of the content identifier
+ directory.
+ (Android File System): Describe access to document provider
+ directories.
+ (Android Document Providers): New node.
+ * doc/emacs/emacs.texi (Top): Update the menu for the Android
+ appendix.
+ * java/Makefile.in (filename, install_temp/assets/build_info): Make
+ directory-tree depend on build_info.
+ * java/org/gnu/emacs/EmacsActivity.java (onActivityResult): New
+ function. When a document tree is accepted, persist access to it.
+ * java/org/gnu/emacs/EmacsDirectoryEntry.java (EmacsDirectoryEntry):
+ New struct.
+ * java/org/gnu/emacs/EmacsOpenActivity.java (checkReadableOrCopy): Use
+ EmacsService.buildContentName.
+ * java/org/gnu/emacs/EmacsService.java (getEmacsView, openContentUri)
+ (checkContentUri): Remove excessive debug logging.
+ (buildContentName, getDocumentAuthorities, requestDirectoryAccess)
+ (getDocumentTrees, decodeFileName, documentIdFromName, getTreeUri)
+ (statDocument, accessDocument, openDocumentDirectory, readDirectoryEntry)
+ (openDocument, createDocument): New functions.
+
+ * lib-src/asset-directory-tool.c: Improve commentary by illustrating
+ the difference between directory and ordinary files.
+
+ * src/android.c (ANDROID_THROW, enum android_fd_table_entry_flags)
+ (struct android_emacs_service, android_extract_long)
+ (android_scan_directory_tree, android_is_directory)
+ (android_get_asset_name, android_url_encode, android_content_name_p)
+ (android_get_content_name, android_check_content_access, android_fstat)
+ (android_fstatat, android_file_access_p, android_hack_asset_fd_fallback)
+ (android_detect_ashmem, android_hack_asset_fd, android_close_on_exec)
+ (android_open, android_close, android_fclose, android_create_lib_link)
+ (android_faccessat, struct android_dir, android_opendir, android_dirfd)
+ (android_readdir, android_closedir, android_lookup_asset_directory_fd)
+ (android_exception_check_3, android_get_current_api_level)
+ (android_open_asset, android_close_asset, android_asset_read_quit)
+ (android_asset_read, android_asset_lseek, android_asset_fstat): Move
+ content and asset related functions to androidvfs.c.
+ (android_init_emacs_service): Obtain handles for new JNI functions.
+ (initEmacsParams): Initialize the VFS layer.
+ (android_request_directory_access): New function.
+ (android_display_toast): Remove unused function.
+
+ * src/android.h (android_get_current_api_level): Assume that
+ this function never returns less than __ANDROID_API__.
+ (struct android_emacs_service): Move `struct
+ android_emacs_service' here.
+
+ * src/androidfns.c (Fandroid_request_directory_access): New
+ interactive function.
+ (syms_of_androidfns): Register new subr.
+
+ * src/androidvfs.c (struct android_vdir, struct android_vops)
+ (struct android_vnode, struct android_special_vnode)
+ (enum android_vnode_type, struct android_cursor_class)
+ (struct emacs_directory_entry_class)
+ (struct android_parcel_file_descriptor_class)
+ (android_init_cursor_class, android_init_entry_class)
+ (android_init_fd_class, android_vfs_canonicalize_name)
+ (struct android_unix_vnode, struct android_unix_vdir, unix_vfs_ops)
+ (android_unix_name, android_unix_vnode, android_unix_open)
+ (android_unix_close, android_unix_unlink, android_unix_symlink)
+ (android_unix_rmdir, android_unix_rename, android_unix_stat)
+ (android_unix_access, android_unix_mkdir, android_unix_readdir)
+ (android_unix_closedir, android_unix_dirfd, android_unix_opendir)
+ (android_extract_long, android_scan_directory_tree)
+ (android_is_directory, android_init_assets)
+ (android_hack_asset_fd_fallback, android_detect_ashmem)
+ (android_hack_asset_fd, struct android_afs_vnode)
+ (struct android_afs_vdir, struct android_afs_open_fd, afs_vfs_ops)
+ (android_afs_name, android_afs_initial, android_close_on_exec)
+ (android_afs_open, android_afs_close, android_afs_unlink)
+ (android_afs_symlink, android_afs_rmdir, android_afs_rename)
+ (android_afs_stat, android_afs_access, android_afs_mkdir)
+ (android_afs_readdir, android_afs_closedir, android_afs_dirfd)
+ (android_afs_opendir, android_afs_get_directory_name)
+ (struct android_content_vdir, content_vfs_ops)
+ (content_directory_contents, android_content_name)
+ (android_content_open, android_content_close)
+ (android_content_unlink, android_content_symlink)
+ (android_content_rmdir, android_content_rename)
+ (android_content_stat, android_content_access)
+ (android_content_mkdir, android_content_readdir)
+ (android_content_closedir, android_content_dirfd)
+ (android_content_opendir, android_content_get_directory_name)
+ (android_content_initial, android_get_content_name)
+ (android_check_content_access, struct android_authority_vnode)
+ (authority_vfs_ops, android_authority_name, android_authority_open)
+ (android_authority_close, android_authority_unlink)
+ (android_authority_symlink, android_authority_rmdir)
+ (android_authority_rename, android_authority_stat)
+ (android_authority_access, android_authority_mkdir)
+ (android_authority_opendir, android_authority_initial)
+ (struct android_saf_root_vnode, struct android_saf_root_vdir)
+ (saf_root_vfs_ops, android_saf_root_name, android_saf_root_open)
+ (android_saf_root_close, android_saf_root_unlink)
+ (android_saf_root_symlink, android_saf_root_rmdir)
+ (android_saf_root_rename, android_saf_root_stat)
+ (android_saf_root_access, android_saf_root_mkdir)
+ (android_saf_root_readdir, android_saf_root_closedir)
+ (android_saf_root_dirfd, android_saf_root_opendir)
+ (android_saf_root_initial, android_saf_root_get_directory)
+ (android_saf_stat, android_saf_access)
+ (struct android_saf_tree_vnode, struct android_saf_tree_vdir)
+ (saf_tree_vfs_ops, android_document_id_from_name)
+ (android_saf_tree_name, android_saf_tree_open)
+ (android_saf_tree_close, android_saf_tree_unlink)
+ (android_saf_tree_symlink, android_saf_tree_rmdir)
+ (android_saf_tree_rename, android_saf_tree_stat)
+ (android_saf_tree_access, android_saf_tree_mkdir)
+ (android_saf_tree_opendir_1, android_saf_tree_readdir)
+ (android_saf_tree_closedir, android_saf_tree_dirfd)
+ (android_saf_tree_opendir, android_saf_tree_from_name)
+ (android_saf_tree_get_directory, android_saf_file_vnode)
+ (saf_file_vfs_ops, android_saf_file_name, android_saf_file_open)
+ (android_saf_file_unlink, android_saf_file_rmdir)
+ (android_saf_file_opendir, android_close_parcel_fd)
+ (android_saf_new_vnode, android_saf_new_name, android_saf_new_open)
+ (android_saf_new_unlink, android_saf_new_symlink)
+ (android_saf_new_rmdir, android_saf_new_rename)
+ (android_saf_new_stat, android_saf_new_access)
+ (android_saf_new_mkdir, android_saf_new_opendir, root_vfs_ops)
+ (special_vnodes, android_root_name, android_name_file)
+ (android_vfs_init, android_open, android_unlink, android_symlink)
+ (android_rmdir, android_mkdir, android_renameat_noreplace)
+ (android_rename, android_fstat, android_fstatat_1, android_fstatat)
+ (android_faccessat, android_fdopen, android_close, android_fclose)
+ (android_open_asset, android_close_asset, android_asset_read_quit)
+ (android_asset_read, android_asset_lseek, android_asset_fstat)
+ (android_opendir, android_dirfd, android_readdir)
+ (android_closedir): Move file system emulation routines here.
+ Introduce a new ``VFS'' layer for translating between
+ Emacs-specific file names and the various disparate interfaces
+ for accessing files on Android.
+
+ * src/callproc.c (delete_temp_file):
+ * src/charset.c (load_charset_map_from_file):
+ * src/dired.c:
+ * src/emacs.c (Fkill_emacs):
+ * src/fileio.c (check_mutable_filename, Fcopy_file)
+ (Fmake_directory_internal, Fdelete_directory_internal)
+ (Fdelete_file, Frename_file, Fadd_name_to_file)
+ (Fmake_symbolic_link, file_accessible_directory_p, Fset_file_modes)
+ (Fset_file_times, write_region):
+ * src/filelock.c (get_boot_time, rename_lock_file)
+ (create_lock_file, current_lock_owner, unlock_file):
+ * src/image.c (slurp_file, png_load_body, jpeg_load_body):
+ * src/keyboard.c (Fopen_dribble_file):
+ * src/lisp.h:
+ * src/lread.c (Fload):
+ * src/process.c (handle_child_signal):
+ * src/sysdep.c (init_standard_fds, emacs_fopen, emacs_fdopen)
+ (emacs_unlink, emacs_symlink, emacs_rmdir, emacs_mkdir)
+ (emacs_renameat_noreplace, emacs_rename):
+ * src/term.c (Fresume_tty, init_tty): Use and add new wrappers
+ for fopen, fdopen, unlink, symlink, rmdir, mkdir,
+ renameat_norepalce and rename.
+
+2023-07-26 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-07-24 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-07-23 Po Lu <luangruo@yahoo.com>
+
+ Facilitate locating the app library directory
+ * doc/emacs/android.texi (Android File System): Document where
+ the app library directory can probably be found.
+ * src/android.c (android_create_lib_link): New function. Try to
+ symlink `lib' in the directory holding the files directory to
+ the app library directory.
+ (setEmacsParams): Call that function if Emacs is being
+ initialized from an application context.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-07-22 Po Lu <luangruo@yahoo.com>
+
+ Try harder to keep the initial word selected
+ * lisp/touch-screen.el (touch-screen-drag): If
+ touch-screen-word-select, also keep the initial word within the
+ region while scrolling.
+
+ Fix window box computation for menu bar windows
+ * src/window.h (WINDOW_MENU_BAR_P): Check for external menu bars
+ using HAVE_WINDOW_SYSTEM && HAVE_EXT_MENU_BAR instead of hard
+ coding X without Xt or GTK.
+
+ Update Android port
+ * doc/lispref/commands.texi (Key Sequence Input): Describe which
+ events receive imaginary prefix keys.
+ * lisp/touch-screen.el (touch-screen-translate-touch): Consider
+ `vertical-line' a virtual function key.
+ (function-key-map): Translate events on vertical window borders.
+
+ * etc/NEWS: Announce `current-key-remap-sequence'.
+
+ Fix default value of scroll bar frame parameters on Android
+ * src/androidfns.c (Fx_create_frame): Default
+ Qvertical_scroll_bars to Qnil, but set scroll-bar-width and
+ scroll-bar-height.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-07-21 Po Lu <luangruo@yahoo.com>
+
+ Improve touch screen and text conversion behavior of many commands
+ * doc/lispref/commands.texi (Key Sequence Input): Document new
+ argument to `read-key-sequence' etc.
+ * lisp/help-macro.el (make-help-screen):
+ * lisp/subr.el (read-key, read-char-choice-with-read-key):
+ Disable text conversion and display the OSK before reading a key
+ sequence.
+ * lisp/touch-screen.el (touch-screen-window-selection-changed):
+ Only cancel the minibuffer OSK timer.
+ (touch-screen-handle-point-up): Update comment accordingly.
+ * src/keyboard.c (command_loop_1, read_menu_command)
+ (read_key_sequence, read_key_sequence_vs, Fread_key_sequence)
+ (Fread_key_sequence_vector): New arg DISABLE_TEXT_CONVERSION.
+ All callers changed.
+
+ Correctly translate touchscreen-up events outside a frame
+ * lisp/touch-screen.el (touch-screen-translate-touch): Check if
+ a prefix is specified separately from prefix being non-nil.
+ Accept `nil' as an imaginary prefix key.
+ (function-key-map): Register translation functions on the tab
+ bar, tab lines and internal border.
+
+ Improve touch screen scrolling support
+ * lisp/touch-screen.el (touch-screen-preview-select): Avoid
+ unnecessary redisplays.
+ (touch-screen-drag): Scroll at window margins using window
+ scrolling functions instead of relying on redisplay to recenter
+ the window around point.
+
+ Update Android port
+ * doc/emacs/input.texi (Touchscreens): Document
+ `touch-screen-preview-select'.
+ * doc/lispref/commands.texi (Touchscreen Events): Fix typo in
+ the descriptions of two touch screen events.
+ * lisp/dired.el (dired-insert-set-properties): Adjust for
+ changes to file end computation.
+ * lisp/minibuffer.el (clear-minibuffer-message): Don't clear
+ minibuffer message if dragging.
+ * lisp/touch-screen.el (touch-screen-current-tool): Fix doc
+ string.
+ (touch-screen-preview-select): New function.
+ (touch-screen-drag): Call it if point changes.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-07-20 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * exec/trace.c (handle_readlinkat): Adjust commentary to match
+ behavior.
+ * src/android.c (android_get_keysym_name): NULL terminate
+ *name_return.
+
+ Update some menu definitions for Android
+ * lisp/international/mule-cmds.el (set-coding-system-map): Don't
+ display `set-terminal-coding-system' on Android.
+
+ * lisp/cus-edit.el (custom-display): Add `android' display type.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Update Android port
+ * src/android.c (struct android_event_queue): Don't make
+ unnecessarily volatile.
+
+ Update Android port
+ * lisp/touch-screen.el (touch-screen-handle-touch): Don't
+ restart dragging if point is at ZV and the tap falls on a
+ different row.
+
+ Use context menu header titles on Android
+ * java/org/gnu/emacs/EmacsContextMenu.java (EmacsContextMenu):
+ New field `title'.
+ (addSubmenu): New arg TITLE. Set that field.
+ (expandTo): Set MENU's header title if it's a context menu.
+ * src/androidmenu.c (android_init_emacs_context_menu): Adjust
+ signature of `createContextMenu'.
+ (android_menu_show): Use TITLE instead of pane titles if there's
+ only one pane.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Introduce a `dired-click-select' mode
+ * doc/emacs/dired.texi (Marks vs Flags): Document command bound
+ to `touchscreen-hold'.
+ * doc/lispref/commands.texi (Touchscreen Events): Describe
+ `touch-screen-inhibit-drag'.
+ * etc/NEWS: Improve description of changes to touch screen
+ support.
+ * lisp/dired-aux.el (dired-do-chxxx, dired-do-chmod)
+ (dired-do-print, dired-do-shell-command, dired-do-compress-to)
+ (dired-do-create-files, dired-do-rename, dired-do-isearch)
+ (dired-do-isearch-regexp, dired-do-search)
+ (dired-do-query-replace-regexp, dired-do-find-regexp)
+ (dired-vc-next-action): Disable ``click to select'' after
+ running this command.
+ * lisp/dired.el (dired-insert-set-properties): Attach
+ click-to-select keymap to file names if necessary.
+ (dired-mode-map): Bind `touchscreen-hold' to click to select
+ mode.
+ (dired-post-do-command): New function.
+ (dired-do-delete): Call it.
+ (dired-mark-for-click, dired-enable-click-to-select-mode): New
+ functions.
+ (dired-click-to-select-mode): New minor mode.
+ * lisp/touch-screen.el (touch-screen-current-tool): Fix doc
+ string.
+ (touch-screen-inhibit-drag): New function.
+
+2023-07-19 Po Lu <luangruo@yahoo.com>
+
+ * src/sfnt.c (sfnt_infer_deltas): Improve commentary.
+
+ Improve behavior of `restart-drag'
+ * lisp/touch-screen.el (touch-screen-handle-point-up): If what
+ is `restart-drag' (meaning that a drag has been restarted but
+ the touchpoint has not moved), translate the release into a
+ regular mouse click to deactivate the region.
+
+ Update Android port
+ * build-aux/makecounter.sh (curcount): Rename `counter' to
+ `emacs_shortlisp_counter'.
+ * doc/emacs/input.texi (Touchscreens): Document
+ `touch-screen-extend-selection'.
+ * doc/lispref/commands.texi (Touchscreen Events): Document
+ `touchscreen-restart-drag'.
+ * lisp/touch-screen.el (touch-screen-extend-selection): New user
+ option.
+ (touch-screen-restart-drag): New function.
+ (touch-screen-handle-point-update): Handle `restart-drag'
+ gestures.
+ (touch-screen-handle-touch): Check if the prerequisites for
+ extending a previous drag gesture are met, and generate such
+ events if so.
+ (touch-screen-translate-touch): Update doc string.
+ * src/Makefile.in (otherobj): Remove BUILD_COUNTER_OBJ.
+ ($(lispsource)/international/charprop.el):
+ (%.elc): Don't depend on bootstrap-emacs if cross configuring
+ for Android.
+ (libemacs.so): Directly depend on and link with
+ BUILD_COUNTER_OBJ.
+
+ Make sure Android builds are redumped upon changes to shortlisp
+ * build-aux/makecounter.sh: New script.
+ * src/Makefile.in (abs_top_builddir): New variable.
+ (BUILD_COUNTER_OBJ): Define to build-counter.o
+ if compiling for Android.
+ (build-counter.c): New target. Generate this file using
+ makecounter.sh upon changes to lisp.mk or shortlisp.
+ (lisp.mk): Make and load relative to abs_top_builddir.
+ (emacs$(EXEEXT)): Adjust acordingly.
+ (mostlyclean): Remove build-counter.c.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-07-18 Po Lu <luangruo@yahoo.com>
+
+ Fix typos in touch-screen.el
+ * lisp/touch-screen.el (touch-screen-handle-point-update)
+ (touch-screen-handle-point-up): Fix typos.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ * lisp/touch-screen.el (touch-screen-handle-point-update): Fix typo.
+
+ Avoid splurious menu-bar nil events
+ * src/keyboard.c (make_lispy_event): Return nil if no menu item
+ is found.
+
+ Update Android port
+ * lisp/touch-screen.el (touch-screen-hold)
+ (touch-screen-handle-point-up): Don't select inactive minibuffer
+ windows.
+ (touch-screen-handle-point-update): Improve detection of left
+ and right edges.
+
+ Update Android port
+ * lisp/touch-screen.el (touch-screen-handle-touch): Fix
+ treatment of stray update events.
+
+ Don't enable scroll-bar-mode by default on Android
+ * src/frame.c (syms_of_frame): Default to nil if HAVE_ANDROID.
+
+ * src/keyboard.c (make_lispy_event): Fix botched merge.
+
+ Update Android port
+ * doc/lispref/commands.texi (Touchscreen Events): Describe
+ treatment of canceled touch sequences during touch event
+ translation.
+ * java/org/gnu/emacs/EmacsNative.java (EmacsNative): Update JNI
+ prototypes.
+ * java/org/gnu/emacs/EmacsWindow.java (motionEvent): Set
+ cancelation flag in events sent where appropriate.
+ * lisp/touch-screen.el (touch-screen-handle-point-update):
+ Improve treatment of horizontal scrolling near window edges.
+ (touch-screen-handle-touch): Don't handle point up if the touch
+ sequence has been canceled.
+ * src/android.c (sendTouchDown, sendTouchUp, sendTouchMove): New
+ argument `flags'.
+ * src/androidgui.h (enum android_touch_event_flags): New enum.
+ (struct android_touch_event): New field `flags'.
+ * src/androidterm.c (handle_one_android_event): Report
+ cancelation in TOUCHSCREEN_END_EVENTs.
+ * src/keyboard.c (make_lispy_event): Fix botched merge.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-07-17 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Update Android port
+ * doc/lispref/commands.texi (Touchscreen Events): Document
+ meaning of `mouse-1-menu-command'.
+ * lisp/mouse.el (minor-mode-menu-from-indicator): New arg EVENT.
+ Give it to popup-menu.
+ (mouse-minor-mode-menu): Use posn specified within EVENT.
+ * lisp/touch-screen.el (touch-screen-handle-touch): Fix
+ interactive translation. Treat commands labeled
+ `mouse-1-menu-command' like ordinary keymaps.
+
+ Update Android port
+ * doc/lispref/commands.texi (Touchscreen Events): Document
+ changes to simple translation.
+ * lisp/touch-screen.el (touch-screen-handle-point-up): Generate
+ `down-mouse-1' if the current gesture is `mouse-1-menu'.
+ (touch-screen-handle-touch): If binding is a keymap, set state
+ to `mouse-1-menu' and wait for point to be released before
+ generating down-mouse-1.
+
+ Improve word selection behavior
+ * lisp/tab-bar.el (tab-bar-map): Don't bind touch-screen-drag.
+ * lisp/touch-screen.el (touch-screen-drag): Extend the region
+ based on the position of the mark, not the position of point
+ relative to EVENT.
+ (touch-screen-translate-touch): Don't generate virtual function
+ keys for non-mouse events.
+ (function-key-map): Remove redundant definitions.
+ * src/keyboard.c (read_key_sequence): Don't generate *-bar
+ prefix keys for mock input (such as input from function key
+ translation.)
+
+ Improve touch screen support
+ * doc/emacs/input.texi (Touchscreens): Document the new feature
+ for people who have trouble dragging to word boundaries.
+ * lisp/touch-screen.el (touch-screen-word-select): New
+ defcustom.
+ (touch-screen-word-select-bounds)
+ (touch-screen-word-select-initial-word): New variable
+ definitions.
+ (touch-screen-hold): If `touch-screen-word-select', select the
+ word around EVENT.
+ (touch-screen-drag): If `touch-screen-word-select', extend the
+ region to the next word boundary if the character under point
+ constitutes a word.
+ (touch-screen-handle-point-update, touch-screen-handle-touch)
+ (touch-screen-translate-touch): Fix doc strings and fill
+ comments.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-07-16 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * java/org/gnu/emacs/EmacsService.java (displayToast):
+ * src/android.c (android_init_emacs_service): Remove unused
+ function.
+ * lisp/touch-screen.el (touch-screen-handle-point-up): Correctly
+ compute posn point.
+ (touch-screen-translate-touch): Update doc string.
+ (function-key-map): Define touch screen translation functions
+ within the internal border.
+
+ Update Android port
+ * doc/lispref/commands.texi (Touchscreen Events): Improve
+ documentation.
+ * lisp/tab-bar.el (tab-bar-map): Bind `[tab-bar
+ touchscreen-hold]'.
+ * lisp/touch-screen.el (touch-screen-hold, touch-screen-drag):
+ New functions.
+ (touch-screen-handle-timeout): Generate a `touchscreen-hold'
+ event instead.
+ (touch-screen-handle-point-update): Generate a
+ `touchscreen-drag' event upon dragging.
+ (touch-screen-translate-touch): Cancel touch screen timer upon
+ exit.
+ * src/keyboard.c (access_keymap_keyremap): Take unsigned int
+ start and end instead.
+
+ Improve touch-screen support
+ * doc/emacs/emacs.texi (Top):
+ * doc/emacs/input.texi (Other Input Devices): Correctly
+ capitalize subsection name.
+ (Touchscreens): Document additional translation.
+ * doc/lispref/commands.texi (Touchscreen Events): Document that
+ `touchscreen-end' events now have prefix keys. Also, describe
+ mouse emulation and `touchscreen-scroll' events.
+ * doc/lispref/keymaps.texi (Translation Keymaps): Document
+ `current-key-remap-sequence'.
+ * lisp/touch-screen.el (touch-screen-translate-prompt): New
+ function.
+ (touch-screen-scroll): New command. Bind to
+ `touchscreen-scroll'.
+ (touch-screen-handle-point-update, touch-screen-handle-point-up)
+ (touch-screen-handle-touch): Refactor to actually translate
+ touch screen event sequences, as opposed to looking up commands
+ and executing them.
+ (touch-screen-translate-touch): New function. Bind in
+ function-key-map to all touch screen events.
+ (touch-screen-drag-mode-line-1, touch-screen-drag-mode-line)
+ (touch-screen-tap-header-line): Remove special commands for
+ dragging the mode line and clicking on the header line.
+ * lisp/wid-edit.el (widget-button-click): Adjust accordingly.
+ * src/keyboard.c (access_keymap_keyremap): Bind
+ `current-key-remap-sequence' to the key sequence being remapped.
+ (keyremap_step): Give fkey->start and fkey->end to
+ access_keymap_keyremap.
+ (head_table): Add imaginary prefix to touchscreen-end events as
+ well.
+ (syms_of_keyboard): New variable Vcurrent_key_remap_sequence.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-07-15 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * doc/emacs/android.texi (Android): Add new node to menu.
+ (Android Environment): Add footnote pointing to new node.
+ (Android Software): New node.
+ * doc/emacs/emacs.texi (Top): Add new node to menu.
+ * java/AndroidManifest.xml.in (manifest): Fix location of
+ sharedUserId property.
+ * java/INSTALL: Improve documentation of shared user ID
+ support.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-07-14 Po Lu <luangruo@yahoo.com>
+
+ Make --with-shared-user-id work
+ * configure.ac (ANDROID_SHARED_USER_NAME): New variable.
+ Substitute it.
+ * java/AndroidManifest.xml.in: Set `sharedUserLabel' if a shared
+ user ID is enabled.
+ * java/res/values/strings.xml (shared_user_name): New string
+ resource.
+
+ Update Android port
+ * src/android.c (android_blit_copy): Don't check for overflow
+ where not required.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Clean up Android debug code
+ * java/org/gnu/emacs/EmacsInputConnection.java
+ (getSurroundingText): Don't print debug information if DEBUG_IC
+ is off.
+
+ * lisp/calc/calc.el (calc): Fix typo.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-07-13 Po Lu <luangruo@yahoo.com>
+
+ Add a Doc View tool bar
+ * etc/NEWS: Announce the new tool bar.
+ * etc/images/last-page.xpm:
+ * etc/images/last-page.pbm: New images. Mirrored from
+ next-page.xpm.
+ * lisp/doc-view.el (doc-view-menu): Use `doc-view-new-search'
+ instead of an anonymous function.
+ (doc-view-tool-bar-map): New keymap.
+ (doc-view-search): Update the tool bar after initiating a
+ search.
+ (doc-view-new-search): New command.
+ (doc-view-mode): Set the tool bar map appropriately.
+
+ Improve workaround for partial texture updates on Android
+ * java/AndroidManifest.xml.in:
+ * java/org/gnu/emacs/EmacsDialog.java (toAlertDialog): Don't
+ change hardware acceleration state.
+ * java/org/gnu/emacs/EmacsNative.java (notifyPixelsChanged): New
+ function.
+ * java/org/gnu/emacs/EmacsSurfaceView.java (EmacsSurfaceView):
+ New field `bitmapChanged'.
+ (copyToFrontBuffer): Signal that the bitmap has changed.
+ (onDraw): If the bitmap has changed, increment the generation
+ ID.
+ * src/android.c (JNICALL): Implement new function.
+
+2023-07-13 Po Lu <luangruo@yahoo.com>
+
+ Disable hardware acceleration on Android
+ It serves no purpose and causes tearing. Uploading the bitmap
+ to the GPU takes about as long as it does to incrementally
+ update the surface in software.
+
+ * java/AndroidManifest.xml.in: Disable hardware acceleration.
+ * java/org/gnu/emacs/EmacsActivity.java (EmacsActivity): Make
+ lastClosedMenu static.
+ * java/org/gnu/emacs/EmacsDialog.java (toAlertDialog): Enable
+ hardware acceleration within alert dialogs.
+ * java/org/gnu/emacs/EmacsSurfaceView.java (onDraw): Describe
+ why hardware acceleration is disabled.
+ * java/org/gnu/emacs/EmacsWindow.java (run): Remove redundant
+ call.
+
+2023-07-13 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-07-12 Po Lu <luangruo@yahoo.com>
+
+ * src/android.c (android_run_select_thread): Fix typo.
+
+ Update Android port
+ * src/android.c (android_run_select_thread): Correctly return
+ the set of ready read and write descriptors on __ANDROID_API__ <
+ 16 systems.
+ (android_select): Clear the set of ready file descriptors if
+ events from the event queue are present despite pselect failing.
+
+ Fix keyboard state translation on Android
+ * src/androidterm.c (android_android_to_emacs_modifiers)
+ (android_emacs_to_android_modifiers): Fix statement precedence
+ bugs.
+
+ * src/doc.c (doc_close): Remove unused macro.
+
+ Update Android port
+ * java/org/gnu/emacs/EmacsWindow.java (whatButtonWasIt): Handle
+ back and forward buttons along with styluses.
+ * src/doc.c (close_file_unwind_android_fd): New function.
+ (get_doc_string, Fsnarf_documentation): Don't create a temporary
+ fd if it can be avoided.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-07-11 Po Lu <luangruo@yahoo.com>
+
+ Fix doc file generation on Android
+ * .gitignore: Ignore cross/etc/DOC.
+ * configure.ac: Make the directory `cross/etc'.
+ * cross/Makefile.in (CLEAN_SUBDIRS): Clean files inside `etc' as
+ well.
+ * java/Makefile.in (install_temp): Copy cross/etc/DOC to the
+ package if it is available.
+ * src/Makefile.in (SOME_MACHINE_OBJECTS): Add androidselect.c,
+ sfntfont-android.c and sfntfont.c.
+ (libemacs.so): Depend on $(etc)/DOC.
+
+ Update Android port
+ * src/sfnt.c (sfnt_fill_span): Correctly clip span to raster
+ width, ensuring that the last pixel is filled.
+ (main): Adjust test sizes.
+
+ Update Android port
+ * java/org/gnu/emacs/EmacsView.java (onGenericMotionEvent): Call
+ onGenericMotionEvent.
+ * java/org/gnu/emacs/EmacsWindow.java (Coordinate): New fields
+ `button' and `id'.
+ (<init>): Add new arguments to the construtor.
+ (whatButtonWasIt): Return 0 if the button state has not changed.
+ (buttonForEvent): New function.
+ (figureChange): Return the Coordinate object associated to
+ EVENT. Determine whether or not EVENT was accompanied by a
+ change to the button state, and ascertain which button that was.
+ (motionEvent): New function.
+ (onGenericMotionEvent, onTouchEvent): Factor out touch and mouse
+ event delivery to motionEvent.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-07-10 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * java/org/gnu/emacs/EmacsService.java (browseUrl): New argument
+ SEND. Choose from a list of applications that want to share the
+ URL if true.
+ * lisp/net/browse-url.el (browse-url-android-share): New user
+ option.
+ (browse-url-default-android-browser): Respect said user option.
+ * src/android.c (android_init_emacs_service)
+ (android_browse_url): Expose new option.
+ * src/android.h: Update prototypes.
+ * src/androidselect.c (Fandroid_browse_url): Likewise.
+
+ ; Update from Gnulib
+ * lib/vasnprintf.c (VASNPRINTF):
+ * m4/printf.m4 (gl_SWPRINTF_WORKS):
+ (gl_SWPRINTF_DIRECTIVE_LA):
+ * m4/vasnprintf.m4 (gl_PREREQ_PRINTF_PARSE):
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-07-09 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * java/org/gnu/emacs/EmacsWindow.java (eventModifiers)
+ (motionEventModifiers): New functions.
+ (onKeyDown, onKeyUp, onFocusChanged, onSomeKindOfMotionEvent):
+ Don't record the previous modifier mask; instead, always use the
+ modifier state specified in the event.
+ * src/androidterm.c (handle_one_android_event): Don't dispatch
+ button release events when a popup is active.
+
+ Update Android port
+ * java/org/gnu/emacs/EmacsService.java (onStartCommand): Fix
+ typo in notification message.
+ * java/org/gnu/emacs/EmacsWindow.java (onFocusChanged): Reset
+ the recorded modifier state upon a change to the window focus.
+
+ * java/org/gnu/emacs/EmacsService.java (onCreate): Fix typo.
+
+ Update Android port
+ * java/org/gnu/emacs/EmacsDrawPoint.java (perform): Don't fill
+ an extra pixel.
+ * java/org/gnu/emacs/EmacsService.java (onCreate): Make sure
+ scaledDensity is always at least 160 dpi.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-07-08 Po Lu <luangruo@yahoo.com>
+
+ Fix EmacsDrawLine again
+ * java/org/gnu/emacs/EmacsDrawLine.java (perform): Symmetrically
+ adjust coordinates to cover the last pixel. Then, fill the left
+ most pixel of the line.
+
+ Update Android port
+ * java/org/gnu/emacs/EmacsService.java (DEBUG_IC)
+ (DEBUG_THREADS): Improve commentary.
+ * src/androidterm.c (handle_one_android_event): Signal
+ completion of IME events that have lost their frames.
+ (requestCursorUpdates): Don't set an edit counter as this event
+ won't be passed to the text conversion machinery.
+
+ ; Fix whitespace
+ * src/android.c (android_blit_xor):
+ (android_check_query_urgent):
+ (android_run_in_emacs_thread):
+ (android_update_extracted_text): Fix whitespace.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-07-07 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * java/org/gnu/emacs/EmacsSurfaceView.java (copyToFrontBuffer):
+ Use fallback bit blit function on Android 7.0 as well, as
+ crashes have been observed in drawBitmap.
+
+2023-07-07 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * lisp/tool-bar.el (modifier-bar-modifier-list): New variable.
+ (modifier-bar-button): New function.
+ (tool-bar-event-apply-alt-modifier)
+ (tool-bar-event-apply-super-modifier)
+ (tool-bar-event-apply-hyper-modifier)
+ (tool-bar-event-apply-shift-modifier)
+ (tool-bar-event-apply-control-modifier)
+ (tool-bar-event-apply-meta-modifier): Factor out modifier bar
+ logic to that function, and redisplay the tool bar where
+ necessary.
+ (modifier-bar-available-p): New function.
+ (modifier-bar-mode): Disable tool bar items corresponding to
+ modifier keys that've already been pressed.
+
+ * etc/images/shift.pbm: Regenerate from correct font.
+
+2023-07-07 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-07-06 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * java/org/gnu/emacs/EmacsNative.java (scaledDensity): Announce
+ new argument `scaledDensity'.
+ * java/org/gnu/emacs/EmacsNoninteractive.java (main): Specify
+ new argument.
+ * java/org/gnu/emacs/EmacsService.java (onCreate): Compute an
+ adjusted DPI for the font size based on the ratio between
+ density and scaledDensity.
+ (run): Specify that adjusted density.
+ * src/android.c (setEmacsParams): Set
+ `android_scaled_pixel_density'.
+ * src/android.h: (android_scaled_pixel_density: New variable.
+ * src/androidterm.c (android_term_init): Set `font_resolution'.
+ * src/androidterm.h (struct android_display_info): New field.
+ * src/font.c (font_pixel_size, font_find_for_lface)
+ (font_open_for_lface, Ffont_face_attributes, Fopen_font): Use
+ FRAME_RES instead of FRAME_RES_Y.
+ * src/frame.h (FRAME_RES): New macro. Use this to convert
+ between font point and pixel sizes as opposed to FRAME_RES_Y.
+ * src/w32font.c (fill_in_logfont):
+ * src/xfaces.c (Fx_family_fonts, set_lface_from_font): Use
+ FRAME_RES instead of FRAME_RES_Y. (bug#64444)
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-07-05 Po Lu <luangruo@yahoo.com>
+
+ Fix bug#64445
+ * doc/emacs/android.texi (Android Environment): Document that
+ Emacs also receives READ_EXTERNAL_STORAGE by default on old
+ versions of Android.
+ * java/AndroidManifest.xml.in: Request READ_EXTERNAL_STORAGE.
+ (bug#64445)
+
+ * doc/emacs/emacs.texi (Emacs and Android): Fix menu.
+
+ ; Update Android port
+ * doc/emacs/android.texi (Android): Fix discrepancies between
+ menu and sectioning.
+
+ Fix crash between Android 4.0 and Android 5.1
+ * java/org/gnu/emacs/EmacsService.java (detectMouse): Don't use
+ function that is not present on Android 4.0.
+
+ Update Android port
+ * doc/lispref/commands.texi (Misc Events): Correctly index
+ `set-text-conversion-style'.
+ * lisp/tool-bar.el (tool-bar-event-apply-alt-modifier)
+ (tool-bar-event-apply-super-modifier)
+ (tool-bar-event-apply-hyper-modifier)
+ (tool-bar-event-apply-shift-modifier)
+ (tool-bar-event-apply-control-modifier)
+ (tool-bar-event-apply-meta-modifier): Pass t when restoring text
+ conversion style.
+ * src/keyboard.c (restore_reading_key_sequence): New function.
+ (read_key_sequence): Set `reading_key_sequence' where necessary.
+ * src/keyboard.h: Declare variable.
+ * src/textconv.c (check_postponed_buffers): New function.
+ (Fset_text_conversion_style): New argument. If set, and a key
+ sequence is being read, postpone resetting the IME until the key
+ sequence is read.
+ (syms_of_textconv): Clear new variable and add staticpro.
+ * src/textconv.h: Update prototypes.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-07-04 Po Lu <luangruo@yahoo.com>
+
+ Implement a tool bar containing modifier keys
+ * doc/emacs/frames.texi (Tool Bars): Describe modifier bars.
+ * doc/lispref/keymaps.texi (Extended Menu Items, Tool Bar):
+ Document changes to tool bar menu item handling and secondary
+ tool bars.
+ * etc/NEWS: Announce changes.
+ * lisp/simple.el (event-apply-modifier): Correctly apply Ctrl
+ and Shift modifiers to lower case ASCII key events that already
+ have other modifiers applied.
+ * lisp/tool-bar.el (tool-bar--cache-key)
+ (tool-bar--secondary-cache-key): New defsubsts.
+ (tool-bar--flush-cache): Flush secondary tool bar cache.
+ (tool-bar-make-keymap): Include secondary tool bar if necessary.
+ (tool-bar-make-keymap-1): New arg MAP. Generate a keymap for
+ that map if specified, else default to tool-bar-map.
+ (set-text-conversion-style, tool-bar-apply-modifiers)
+ (overriding-text-conversion-style)
+ (tool-bar-event-apply-alt-modifier)
+ (tool-bar-event-apply-super-modifier)
+ (tool-bar-event-apply-hyper-modifier)
+ (tool-bar-event-apply-shift-modifier)
+ (tool-bar-event-apply-control-modifier)
+ (tool-bar-event-apply-meta-modifier, modifier-bar-mode): New
+ functions.
+ * src/dispextern.h (enum tool_bar_item_idx): Add
+ TOOL_BAR_ITEM_WRAP.
+ * src/frame.c (make_frame): Clear new field `tool_bar_wraps_p'.
+ * src/frame.h (struct frame): New field `tool_bar_wraps_p'.
+ * src/keyboard.c (parse_tool_bar_item): Handle QCwrap properties
+ in tool bar menu items.
+ (syms_of_keyboard): New defsym QCwrap.
+ * src/xdisp.c (build_desired_tool_bar_string): Clear
+ f->tool_bar_wraps_p and set it appropriately. Insert new line
+ characters in the tool bar string upon encountering a wrap
+ character.
+ (display_tool_bar_line): Stop at EOB, not line end. Reseat on
+ the next line upon encountering EOL characters.
+ (redisplay_tool_bar): Allow rows to be different heights if
+ explicit new lines are present upon the tool bar string.
+
+ * src/sfnt.c (sfnt_decompose_compound_glyph): Pacify warning.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-07-03 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-07-02 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-07-01 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-06-30 Po Lu <luangruo@yahoo.com>
+
+ * src/android.c (android_query_tree): Correctly return children.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-06-29 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-06-28 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-06-27 Po Lu <luangruo@yahoo.com>
+
+ * doc/emacs/android.texi (Android Environment): Improve wording.
+
+ * doc/emacs/android.texi (Android Environment): Fix typos.
+
+ Update Android port
+ * src/android.c (android_exception_check)
+ (android_exception_check_1)
+ (android_exception_check_2)
+ (android_exception_check_nonnull)
+ (android_exception_check_nonnull_1): Tell the compiler to expect
+ that the object is non-NULL, or that no exception has been
+ thrown.
+
+ * exec/loader-mips64el.s (rest_of_exec): Fix typo in comment.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-06-26 Po Lu <luangruo@yahoo.com>
+
+ * doc/lispref/commands.texi (Touchscreen Events): Fix typo.
+
+2023-06-26 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * lisp/calc/calc.el (calc-mode, calc): Make sure the on-screen
+ keyboard is not hidden when a Calc buffer is created or a Calc
+ Trail window is being created for the first time.
+ * lisp/touch-screen.el (touch-screen-window-selection-changed):
+ Take touch-screen-display-keyboard in to account.
+
+ * src/sfnt.c (sfnt_decompose_compound_glyph)
+ (sfnt_interpret_compound_glyph_1): Reset `defer_offsets' before
+ processing each component.
+ (sfnt_lerp_half): Avoid undefined shift of negative value.
+ (sfnt_compute_tuple_scale): Pacify compiler warning.
+
+2023-06-26 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-06-25 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-06-24 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-06-23 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * java/org/gnu/emacs/EmacsDrawRectangle.java (perform):
+ * java/org/gnu/emacs/EmacsSdk7FontDriver.java (Sdk7FontEntity):
+ (hasChar): Clean up dead stores.
+
+ * src/android.c (android_wc_lookup_string): Fix typo.
+
+ Correctly check result of string lookup
+ * src/android.c (android_wc_lookup_string): Check that
+ GetStringChars returns non-NULL, not if it throws an exception.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-06-22 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-06-21 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * src/androidfns.c (android_set_tool_bar_position):
+ (frame_geometry):
+ * src/androidterm.c (android_flash):
+ (android_clear_under_internal_border): Synchronize with X.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-06-20 Po Lu <luangruo@yahoo.com>
+
+ * src/androidfns.c (android_frame_parm_handlers): Fix typo.
+
+ Synchronize tool bar position code with X
+ * src/androidfns.c (android_set_tool_bar_position): New
+ function.
+ (android_frame_parm_handlers): Add new frame param handler.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-06-19 Po Lu <luangruo@yahoo.com>
+
+ * lib-src/Makefile.in (seccomp-filter$(EXEEXT)): Link with Gnulib.
+
+ Update Android port
+ * java/org/gnu/emacs/EmacsView.java (EmacsView, dimensionsLock):
+ New field.
+ (<init>): Create new lock object.
+ (handleDirtyBitmap, onLayout, onAttachedToWindow): Make sure
+ measuredWidth and measuredHeight are extracted and set
+ atomically. Send Expose upon layout changes if the view has
+ grown.
+
+ * exec/Makefile.in (clean): Add `exec1'.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-06-18 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * src/window.h (GCALIGNED_STRUCT): Improve documentation of
+ `last_mark'.
+ * src/xdisp.c (mark_window_display_accurate_1): Don't set
+ `last_mark' to -1 if the mark is inactive.
+
+ Enable text conversion in conf-modes
+ * lisp/textmodes/conf-mode.el (conf-mode-initialize): Set
+ text-conversion-style.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-06-17 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Initialize signal mask earlier
+ * java/org/gnu/emacs/EmacsService.java (onCreate, run): Don't
+ initialize signal mask here.
+ * java/org/gnu/emacs/EmacsApplication.java (onCreate): Do it
+ here instead.
+ * src/android.c (JNICALL): Restore previous signal masks.
+
+ * java/README: More documentation.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-06-16 Po Lu <luangruo@yahoo.com>
+
+ Fix quitting after changes to signal delivery
+ * src/android.c (android_write_event, JNICALL)
+ (android_run_in_emacs_thread): Don't rely on raise to call
+ deliver_process_signal.
+
+ Update Android port
+ * java/org/gnu/emacs/EmacsActivity.java (EmacsActivity):
+ * java/org/gnu/emacs/EmacsApplication.java (findDumpFile):
+ * java/org/gnu/emacs/EmacsContextMenu.java (EmacsContextMenu)
+ (addSubmenu, display):
+ * java/org/gnu/emacs/EmacsDocumentsProvider.java
+ (getNotificationUri, queryChildDocuments, deleteDocument):
+ * java/org/gnu/emacs/EmacsDrawRectangle.java (perform):
+ * java/org/gnu/emacs/EmacsFillRectangle.java (perform):
+ * java/org/gnu/emacs/EmacsOpenActivity.java (readEmacsClientLog)
+ (checkReadableOrCopy):
+ * java/org/gnu/emacs/EmacsSdk7FontDriver.java
+ (EmacsSdk7FontDriver):
+ * java/org/gnu/emacs/EmacsSurfaceView.java (EmacsSurfaceView):
+ * java/org/gnu/emacs/EmacsView.java (EmacsView):
+ * java/org/gnu/emacs/EmacsWindow.java (EmacsWindow, onKeyUp):
+ * java/org/gnu/emacs/EmacsWindowAttachmentManager.java
+ (EmacsWindowAttachmentManager): Remove various unused arguments
+ and variables, dead stores, and make minor cleanups and
+ performance improvements.
+ * src/androidmenu.c (FIND_METHOD_STATIC, android_menu_show):
+ Adjust accordingly.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-06-15 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * java/org/gnu/emacs/EmacsInputConnection.java
+ (EmacsInputConnection, beginBatchEdit, reset, endBatchEdit):
+ Keep track of the number of batch edits and return an
+ appropriate value.
+ (takeSnapshot): Implement function.
+ * java/org/gnu/emacs/EmacsNative.java (takeSnapshot): New
+ function.
+ * java/org/gnu/emacs/EmacsService.java (resetIC): Improve
+ debugging output.
+ * java/org/gnu/emacs/EmacsView.java (onCreateInputConnection):
+ Call `reset' to clear the UI side batch edit count.
+ * src/androidterm.c (struct
+ android_get_surrounding_text_context): New fields
+ `conversion_start' and `conversion_end'.
+ (android_get_surrounding_text): Return the conversion region.
+ (android_get_surrounding_text_internal, NATIVE_NAME): Factor out
+ `getSurroundingText'.
+ (takeSnapshot): New function.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-06-14 Po Lu <luangruo@yahoo.com>
+
+ Improve IM synchronization on Android
+ * java/org/gnu/emacs/EmacsInputConnection.java
+ (EmacsInputConnection): Reimplement as an InputConnection, not
+ BaseInputConnection.
+ * src/androidterm.c (performEditorAction): Sync prior to sending
+ keyboard events.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-06-13 Po Lu <luangruo@yahoo.com>
+
+ Improve behavior of Gnus on Android
+ * etc/NEWS: Fix typo.
+ * lisp/gnus/gnus-score.el (gnus-read-char): New function.
+ (gnus-summary-increase-score): Use it to display a dialog box on
+ Android, where input methods have trouble with plain old
+ read-char.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-06-12 Po Lu <luangruo@yahoo.com>
+
+ Improve appearance of custom dialog buttons on Android
+ * java/org/gnu/emacs/EmacsDialog.java (toAlertDialog): Resolve
+ dialog button style and use it instead.
+
+ Fix deadlocks
+ * java/org/gnu/emacs/EmacsView.java (EmacsView)
+ (showOnScreenKeyboard, hideOnScreenKeyboard): Don't synchronize.
+ * java/org/gnu/emacs/EmacsWindow.java (EmacsWindow)
+ (toggleOnScreenKeyboard): Revert to calling IMM functions from
+ the main thread.
+ * src/android.c (struct android_event_container)
+ (android_pselect_nfds, android_pselect_readfds)
+ (android_pselect_writefds, android_pselect_exceptfds)
+ (android_pselect_timeout): Don't make volatile.
+ (android_wait_event): Run queries if necessary.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-06-11 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * lisp/net/tramp.el (tramp-encoding-shell):
+ * lisp/obsolete/terminal.el (terminal-emulator):
+ * lisp/term.el (term-exec-1):
+ * lisp/textmodes/artist.el (artist-figlet-get-font-list):
+ * src/android.c (JNICALL): Where /bin/sh was previously used,
+ use /system/bin/sh on Android.
+
+ Update Android port
+ * java/org/gnu/emacs/EmacsSurfaceView.java (EmacsSurfaceView):
+ Document member variables.
+ (onDraw): Use separate Paint object on the UI thread.
+ * src/textconv.c (really_commit_text, really_set_composing_text)
+ (really_delete_surrounding_text): Run modification hooks when
+ deleting text.
+
+ Avoid extraneous calls to the UI thread
+ * java/org/gnu/emacs/EmacsView.java (EmacsView)
+ (showOnScreenKeyboard, hideOnScreenKeyboard)
+ (onCheckIsTextEditor): Make synchronized.
+ * java/org/gnu/emacs/EmacsWindow.java (EmacsWindow)
+ (toggleOnScreenKeyboard): Don't post to the main thread.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-06-10 Po Lu <luangruo@yahoo.com>
+
+ ; Update Android port
+ * src/keyboard.c (handle_input_available_signal): Don't generate
+ instructions not available in arm mode.
+
+ Update Android port
+ * src/android.c (android_select, android_check_query)
+ (android_check_query_urgent, android_answer_query)
+ (android_answer_query_spin, android_begin_query, android_end_query)
+ (android_run_in_emacs_thread): Use finer grained memory
+ synchronization semantics.
+ * src/androidterm.c (android_get_selection): Use the current
+ selection, not its value at the time of the last redisplay.
+ * src/keyboard.c (handle_input_available_signal): Place memory
+ barrier.
+
+ Inherit surrounding text properties when inserting conversion text
+ * src/textconv.c (really_commit_text)
+ (really_set_composing_text): Improve behavior of certain
+ fontification mechanisms by inheriting text properties from
+ surrounding text.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Prevent hangs from IM requests with the main thread busy
+ * src/android.c (android_select): Clear `android_urgent_query'.
+ (android_check_query): Make static. Clear
+ `android_urgent_query'.
+ (android_check_query_urgent): New function; work like
+ `android_check_query', but only answer urgent queries.
+ (android_answer_query, android_end_query): Clear urgent query
+ flag.
+ (android_run_in_emacs_thread): Initially wait two seconds for
+ the query to run from the keyboard loop; upon a timeout, set
+ `android_urgent_query' to true and wait for it to run while
+ reading async input.
+ * src/android.h: Update prototypes.
+ * src/keyboard.c (handle_async_input): Call
+ `android_check_query_urgent'.
+
+2023-06-09 Po Lu <luangruo@yahoo.com>
+
+ ; Fix typos
+ * src/textconv.c (really_commit_text):
+ (handle_pending_conversion_events): Fix minor typos.
+
+ Avoid responding to input method queries asynchronously
+ * src/androidterm.c (handle_one_android_event): Don't answer
+ queries here; just rely on the event interrupting
+ android_select. This avoids exposing buffer contents to input
+ methods while a command is being executed.
+ * src/textconv.c (TEXTCONV_DEBUG, really_commit_text)
+ (really_finish_composing_text, really_set_composing_text)
+ (really_set_composing_region, really_delete_surrounding_text)
+ (really_set_point_and_mark, get_extracted_text): Add debugging
+ printouts.
+
+ Initialize text conversion hooks for each C Mode buffer
+ * lisp/progmodes/cc-mode.el (c-initialize-cc-mode): Always add
+ text conversion hooks.
+
+ * src/android.c (android_get_gc_values): Remove redundancy.
+
+ Block profiling signals in the Android UI thread
+ * java/org/gnu/emacs/EmacsNative.java (EmacsNative): New
+ function `setupSystemThread'.
+ * java/org/gnu/emacs/EmacsService.java (onCreate): Block all
+ signals except for SIGBUS and SIGSEGV in the UI thread.
+ * src/android.c (setupSystemThread): New function.
+
+ Fix crash starting Emacs to open file
+ * java/org/gnu/emacs/EmacsThread.java (run): Correct check
+ against extraStartupArgument when an initial file is specified.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-06-08 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Correctly display popup dialogs from Emacsclient
+ * java/org/gnu/emacs/EmacsContextMenu.java (EmacsContextMenu):
+ Make subclasses final.
+ * java/org/gnu/emacs/EmacsDialog.java (display1): Check if an
+ instance of EmacsOpenActivity is open; if it is, try using it to
+ display the pop up dialog.
+ * java/org/gnu/emacs/EmacsDialogButtonLayout.java
+ (EmacsDialogButtonLayout): Make final.
+ * java/org/gnu/emacs/EmacsHolder.java (EmacsHolder<T>):
+ Likewise.
+ * java/org/gnu/emacs/EmacsOpenActivity.java (EmacsOpenActivity):
+ New field `currentActivity'.
+ (onCreate, onDestroy, onWindowFocusChanged, onPause): Set that
+ field as appropriate.
+
+ Update Android port
+ * src/android.c (android_is_special_directory): New function.
+ (android_get_asset_name, android_content_name_p)
+ (android_get_content_name):
+ * src/android.h (android_is_special_directory)
+ (JNI_STACK_ALIGNMENT_PROLOGUE):
+ * src/fileio.c (check_mutable_filename):
+ * src/filelock.c (WTMP_FILE, make_lock_file_name):
+ * src/inotify.c (IN_ONLYDIR, Finotify_add_watch): Factor out
+ checks against asset and content directories to that function.
+
+ ; Update from Gnulib
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-06-07 Po Lu <luangruo@yahoo.com>
+
+ ; Update Android port
+ * doc/emacs/android.texi (Android Startup): Fix reference to
+ non existent node.
+
+ Update Android port
+ * java/org/gnu/emacs/EmacsInputConnection.java (beginBatchEdit)
+ (endBatchEdit, commitCompletion, commitText, deleteSurroundingText)
+ (finishComposingText, getSelectedText, getTextAfterCursor)
+ (getTextBeforeCursor, setComposingText, setComposingRegion)
+ (performEditorAction, performContextMenuAction, getExtractedText)
+ (setSelection, sendKeyEvent, deleteSurroundingTextInCodePoints)
+ (requestCursorUpdates): Ensure that the input connection is up
+ to date.
+ (getSurroundingText): New function.
+ * java/org/gnu/emacs/EmacsNative.java (getSurroundingText):
+ Export new C function.
+ * java/org/gnu/emacs/EmacsService.java (resetIC): Invalidate
+ previously created input connections.
+ * java/org/gnu/emacs/EmacsView.java (EmacsView)
+ (onCreateInputConnection): Signify that input connections are
+ now up to date.
+ * src/androidterm.c (struct
+ android_get_surrounding_text_context): New structure.
+ (android_get_surrounding_text, NATIVE_NAME):
+ * src/textconv.c (get_surrounding_text):
+ * src/textconv.h: New functions.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-06-06 Po Lu <luangruo@yahoo.com>
+
+ * lisp/simple.el (analyze-text-conversion): Remove old workaround.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-06-06 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * java/org/gnu/emacs/EmacsContextMenu.java (display): Use
+ `EmacsHolder' instead of `Holder'.
+ * java/org/gnu/emacs/EmacsDialog.java (toAlertDialog): Use
+ `EmacsDialogButtonLayout' to ensure that buttons are wrapped
+ properly.
+ (display): Adjust for new holder class.
+ * java/org/gnu/emacs/EmacsDialogButtonLayout.java
+ (EmacsDialogButtonLayout, onMeasure, onLayout): New functions.
+
+ * java/org/gnu/emacs/EmacsDrawLine.java:
+ * java/org/gnu/emacs/EmacsFillPolygon.java: Remove redundant
+ imports.
+ * java/org/gnu/emacs/EmacsHolder.java (EmacsHolder<T>):
+ * java/org/gnu/emacs/EmacsService.java (class Holder<T>)
+ (getEmacsView, EmacsService): Rename `Holder' to `EmacsHolder'
+ and make it public.
+
+2023-06-06 Po Lu <luangruo@yahoo.com>
+
+ Improve undo behavior on Android
+ * lisp/simple.el (undo-auto-amalgamate): Update doc string to
+ describe new amalgamating commands.
+ (analyze-text-conversion): Make this an amalgamating command by
+ default, unless a new line has been inserted. Also, shorten the
+ undo boundary timer.
+ * src/textconv.c (really_commit_text)
+ (really_set_composing_text): Correctly report ephemeral
+ deletions.
+ (syms_of_textconv): Fix doc strings.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-06-05 Po Lu <luangruo@yahoo.com>
+
+ Clear batch edit state once a new input connection is established
+ * src/androidterm.c (android_handle_ime_event): Clear batch edit
+ state, in case the previous input method forgot to do so.
+
+ Update Android port
+ * java/org/gnu/emacs/EmacsNative.java (EmacsNative): New
+ function clearInputFlags.
+ * java/org/gnu/emacs/EmacsView.java (onCreateInputConnection):
+ Stop reporting changes after a new input method connection is
+ established.
+ * src/androidterm.c (android_handle_ime_event): Implement that
+ change.
+ (JNICALL): New function.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-06-04 Po Lu <luangruo@yahoo.com>
+
+ * src/keyboard.c: Fix build without window system
+
+ * configure.ac: Tune pty detection for Android.
+
+ Fix input method synchronization problems
+ * java/debug.sh (gdbserver_cmd, is_root): Prefer TCP again.
+ * java/org/gnu/emacs/EmacsNative.java (EmacsNative): New
+ function `queryAndSpin'.
+ * java/org/gnu/emacs/EmacsService.java (EmacsService)
+ (icBeginSynchronous, icEndSynchronous, viewGetSelection): New
+ synchronization functions.
+ (resetIC, updateCursorAnchorInfo): Call those instead.
+ * java/org/gnu/emacs/EmacsView.java (onCreateInputConnection):
+ Call viewGetSelection.
+ * src/android.c (JNICALL, android_answer_query_spin): New
+ functions.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-06-03 Po Lu <luangruo@yahoo.com>
+
+ Fix typos in Android port
+ * lisp/bindings.el (global-map): Bind cut, copy and paste.
+ * src/androidterm.c (JNICALL): Use key.
+
+ Behave correctly when IMEs commit or compose text with active mark
+ * src/textconv.c (really_commit_text)
+ (really_set_composing_text): Delete text between mark and point
+ if the mark is active. Don't record changes if the text is
+ empty.
+
+ Update Android port
+ * src/androidterm.c (struct android_get_extracted_text_context):
+ New field `mark_active'.
+ (android_get_extracted_text): Set that field.
+ (struct android_extracted_text_class): New field `flags'.
+ (android_build_extracted_text): New argument `mark_active'. Set
+ flags appropriately.
+ (NATIVE_NAME, android_update_selection): Likewise.
+ * src/textconv.c (get_extracted_text): New argument
+ `mark_active'. Set it if the mark is active.
+ * src/textconv.h: Update prototypes.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ * etc/MACHINES: Fix reference to obsolete file.
+
+2023-06-02 Po Lu <luangruo@yahoo.com>
+
+ Improve Eldoc text conversion support
+ * lisp/emacs-lisp/eldoc.el: ("back-to-indentation"): Register
+ touch screen and text conversion commands.
+
+ Improve CC Mode support for text conversion
+ * lisp/progmodes/cc-cmds.el (c-post-text-conversion): New
+ function.
+ * lisp/progmodes/cc-mode.el (c-initialize-cc-mode): Add it as
+ the `post-texxt-conversion-hook'.
+ * lisp/simple.el (post-text-conversion-hook): New hook.
+ (analyze-text-conversion): Run it until success before trying
+ post insert functions.
+
+ Update Android port
+ * java/org/gnu/emacs/EmacsInputConnection.java
+ (EmacsInputConnection): Apply workarounds on Vivo devices as
+ well.
+ * src/android.c (sendKeyPress, sendKeyRelease): Clear counter.
+ * src/androidgui.h (struct android_key_event): New field
+ `counter'.
+ * src/androidterm.c (handle_one_android_event): Generate
+ barriers as appropriate.
+ (JNICALL): Set `counter'.
+ * src/frame.h (enum text_conversion_operation):
+ * src/textconv.c (detect_conversion_events)
+ (really_set_composing_text, handle_pending_conversion_events_1)
+ (handle_pending_conversion_events, textconv_barrier):
+ * src/textconv.h: Implement text conversion barriers and fix
+ various typos.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-06-01 Po Lu <luangruo@yahoo.com>
+
+ Correctly export file:// URIs on Android
+ * java/org/gnu/emacs/EmacsService.java (browseUrl): If uri's
+ scheme is `file', rewrite it into a content URI.
+
+ Update Android port
+ * java/org/gnu/emacs/EmacsInputConnection.java
+ (EmacsInputConnection, performContextMenuAction): New function.
+ * java/org/gnu/emacs/EmacsNative.java (EmacsNative)
+ (performContextMenuAction): New function.
+ * src/android.c (android_get_gc_values): Implement more
+ efficiently.
+ * src/androidterm.c (android_handle_ime_event): Pass through
+ `update' argument to `finish_composing_text'. Fix thinko.
+ * src/textconv.c (really_finish_composing_text)
+ (really_set_composing_text, really_set_composing_region)
+ (handle_pending_conversion_events_1, finish_composing_text): New
+ argument `update'. Notify IME of conversion region changes if
+ set.
+ * src/textconv.h: Update structs and prototypes.
+
+ Update Android port
+ * java/org/gnu/emacs/EmacsInputConnection.java
+ (EmacsInputConnection): Add compatibility adjustments for
+ Samsung devices.
+
+ Correctly report start and end in extracted text
+ * src/androidterm.c (struct android_get_extracted_text_context):
+ New field `start_offset' and `end_offset'. Delete `offset'.
+ (android_get_extracted_text, android_build_extracted_text):
+ Replace `offset' with new args `start_offset' and `end_offset'.
+ (NATIVE_NAME): Set `start_offset' and `end_offset'.
+ (android_update_selection): Likewise.
+ * src/textconv.c (get_extracted_text): Likewise.
+ * src/textconv.h: Update prototypes.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-05-31 Po Lu <luangruo@yahoo.com>
+
+ Fix build with Lisp_Object type checking
+ * configure.ac: Pass through `--enable-check-lisp-object-type'
+ on Android.
+ * src/alloc.c (android_make_lisp_symbol):
+ * src/android.c:
+ * src/androidfns.c (android_set_no_focus_on_map)
+ (android_set_no_accept_focus):
+ * src/androidfont.c (androidfont_match, androidfont_open_font):
+ * src/androidselect.c (Fandroid_get_clipboard)
+ (Fandroid_get_clipboard_targets):
+ * src/keyboard.c (make_lispy_event, syms_of_keyboard):
+ * src/sfntfont.c (sfnt_enum_font_1, sfntfont_list_1):
+ * src/textconv.c (really_set_point_and_mark): Fix Lisp_Object
+ and integer screw-ups.
+
+ Update Android port
+ * doc/emacs/input.texi (Other Input Devices, Touchscreens)
+ (On-Screen Keyboards):
+ * doc/lispref/commands.texi (Misc Events):
+ * src/android.c (android_faccessat): Improve word choices and
+ commentary.
+ * lisp/touch-screen.el (touch-screen-handle-scroll): Make
+ precision scrolling work better with horizontal movement.
+
+ * src/android.c (android_copy_area): Pacify compiler warning.
+
+ Update Android port
+ * exec/exec.c (insert_args): New argument `arg3'. Replace
+ argv[1] with that argument.
+ (exec_0): Pass file name of script to `insert_args'.
+
+ Update android.texi
+ * doc/emacs/android.texi (What is Android?):
+ (Android Startup):
+ (Android File System):
+ (Android Environment):
+ (Android Windowing):
+ (Android Troubleshooting): Improve wording and various other
+ issues.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Update Android port
+ * java/debug.sh (is_root): Go back to using unix sockets; allow
+ adb to forward them correctly.
+ * java/org/gnu/emacs/EmacsInputConnection.java
+ (getExtractedText): Don't print text if NULL.
+ * java/org/gnu/emacs/EmacsService.java (EmacsService): New field
+ `imSyncInProgress'.
+ (updateIC): If an IM sync might be in progress, avoid deadlocks.
+ * java/org/gnu/emacs/EmacsView.java (onCreateInputConnection):
+ Set `imSyncInProgress' across synchronization point.
+ * src/android.c (android_check_query): Use __atomic_store_n.
+ (android_answer_query): New function.
+ (android_begin_query): Set `android_servicing_query' to 2.
+ Check once, and don't spin waiting for query to complete.
+ (android_end_query): Use __atomic_store_n.
+ (android_run_in_emacs_thread): Compare-and-exchange flag. If
+ originally 1, fail.
+ * src/textconv.c (really_set_composing_text): Clear conversion
+ region if text is empty.
+
+2023-05-30 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-05-29 Po Lu <luangruo@yahoo.com>
+
+ * src/android.c: Fix typos.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Update Android port
+ * src/android.c (android_blit_copy):
+ (android_blit_xor): Fix typos.
+
+ * src/android.c (android_blit_copy): Fix typos.
+
+ Work around more problems with Bitmaps
+ * java/org/gnu/emacs/EmacsNative.java (EmacsNative): New
+ function `blitRect'.
+ * java/org/gnu/emacs/EmacsSurfaceView.java (EmacsSurfaceView):
+ Use it on Android 8.x.
+ * src/android.c (blitRect): Implement new function.
+
+ Update Android port
+ * src/android.c (android_neon_mask_line): Fix iteration
+ over remainder.
+ (android_blit_copy): Be more paranoid.
+
+ Implement android_copy_area in C
+ * java/org/gnu/emacs/EmacsCopyArea.java: Remove file.
+ * java/org/gnu/emacs/EmacsService.java (EmacsService, copyArea):
+ Delete function.
+ * src/android.c (struct android_emacs_service)
+ (android_init_emacs_service): Remove `copy_area'.
+ (android_create_gc, android_change_gc, android_get_gc_values):
+ Record new GC values.
+ (android_neon_mask_line): New function.
+ (android_blit_copy, android_blit_xor): New functions.
+ (android_copy_area): Implement in C.
+ (android_lock_bitmap): Accept drawables instead of windows.
+ * src/android.h: Adjust prototype for `android_lock_bitmap'.
+ * src/androidgui.h (struct android_gc): Record last known GC
+ values.
+
+2023-05-27 Po Lu <luangruo@yahoo.com>
+
+ Add extra thread-related checking
+ * java/org/gnu/emacs/EmacsService.java (EmacsService)
+ (checkEmacsThread): New function.
+ (fillPolygon, drawRectangle, drawLine, drawPoint, copyArea)
+ (clearArea):
+ * java/org/gnu/emacs/EmacsThread.java (EmacsThread):
+ * java/org/gnu/emacs/EmacsView.java (EmacsView, swapBuffers):
+ Call where appropriate.
+
+ Remove synchronization around `damageRegion'
+ * java/org/gnu/emacs/EmacsView.java (EmacsView, swapBuffers):
+ Remove unnecessary documentation. `damageRegion' is only
+ changed from the Emacs thread.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-05-26 Po Lu <luangruo@yahoo.com>
+
+ Allow starting Emacs --debug-init on Android
+ * doc/emacs/android.texi (Android Troubleshooting): Document
+ `debug-init' option.
+ * java/AndroidManifest.xml.in
+ (EmacsLauncherPreferencesActivity): New activity. Export on
+ systems older than Android 7.0.
+ * java/org/gnu/emacs/EmacsActivity.java (onCreate): Adjust for
+ string startup argument.
+ * java/org/gnu/emacs/EmacsLauncherPreferencesActivity.java: New
+ file.
+ * java/org/gnu/emacs/EmacsPreferencesActivity.java
+ (EmacsPreferencesActivity): Don't make final.
+ (startEmacsQ): Give start-up argument as an argument, not as a
+ boolean.
+ (startEmacsDebugInit): New function.
+ (onCreate): Register new listener; make final.
+ * java/org/gnu/emacs/EmacsService.java (onCreate): Pass
+ extraStartupArgument.
+ * java/org/gnu/emacs/EmacsThread.java (EmacsThread): Rename
+ startDashQ to extraStartupArgument.
+ (run): Adjust accordingly.
+ * java/res/values-v24/bool.xml:
+ * java/res/values/bool.xml:
+ * java/res/values/strings.xml: New files.
+ * java/res/xml/preferences.xml: Add new option. Move string
+ resources around.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-05-25 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-05-24 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * src/sfnt.c (sfnt_decompose_compound_glyph): Allow decomposing
+ up to 16 nested components.
+ (CALL, LOOPCALL): Correctly error if no fdef storage exists.
+ (sfnt_interpret_run): New label `next_instruction', for CALL.
+ (sfnt_interpret_compound_glyph_1): Allow decomposing up to 16
+ nested components. Prevent crash if there are no end points or
+ points.
+ (sfnt_read_cvar_table): Prevent assigning uninitialized values.
+ (sfnt_vary_simple_glyph): Update commentary.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-05-23 Po Lu <luangruo@yahoo.com>
+
+ * exec/exec.c (exec_0): Use strcpy.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-05-22 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-05-21 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-05-20 Po Lu <luangruo@yahoo.com>
+
+ Remove arbitrary process count limit
+ * exec/trace.c (handle_clone_prepare):
+ (handle_clone): When !REENTRANT, use malloc to allocate
+ tracees after running out of static ones.
+
+ Update Android port
+ * java/org/gnu/emacs/EmacsView.java (swapBuffers): Restore
+ missing damage rect code.
+ (onDetachedFromWindow): Remove redundant synchronization.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-05-19 Po Lu <luangruo@yahoo.com>
+
+ Make tapping on header lines behave reasonably
+ * lisp/touch-screen.el (touch-screen-tap-header-line): New
+ function.
+ ([header-line touchscreen-begin]): Define to
+ `touch-screen-tap-header-line'.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-05-18 Po Lu <luangruo@yahoo.com>
+
+ * make-dist (possibly_non_vc_files): Add Android-specific files.
+
+ Allow interacting with the tab line from a touch screen
+ * doc/emacs/frames.texi (Tab Bars): Explain how to interact with
+ the tab bar from a touch screen.
+ * doc/emacs/input.texi (Touchscreens): Document exactly what a
+ ``long press'' is.
+ * doc/emacs/windows.texi (Tab Line): Likewise.
+ * lisp/tab-line.el (tab-line-tab-map, tab-line-add-map)
+ (tab-line-tab-close-map, tab-line-left-map, tab-line-right-map):
+ Bind `touchscreen-begin' to each command.
+ (tab-line-track-tap, tab-line-event-start): New functions.
+ (tab-line-hscroll-right, tab-line-hscroll-left, tab-line-new-tab)
+ (tab-line-select-tab, tab-line-close-tab): Use them.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-05-17 Po Lu <luangruo@yahoo.com>
+
+ ; Update from Gnulib
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-05-16 Po Lu <luangruo@yahoo.com>
+
+ Add touchscreen support to the tab bar
+ * lisp/menu-bar.el (popup-menu-normalize-position): Normalize
+ `touchscreen-begin' events correctly.
+ * lisp/tab-bar.el (tab-bar-mouse-context-menu): New argument
+ POSN. Use it if specified.
+ (touch-screen-track-tap, tab-bar-handle-timeout)
+ (tab-bar-touchscreen-begin): New functions.
+ (tab-bar-map): Bind [tab-bar touchscreen-begin].
+ * lisp/touch-screen.el (touch-screen-track-drag): Fix doc
+ string.
+ * src/dispextern.h: Export `get_tab_bar_item_kbd'.
+ * src/keyboard.c (coords_in_tab_bar_window): New function.
+ (make_lispy_event): Adjust touchscreen begin event mouse
+ position list for tab bar.
+ * src/xdisp.c (tab_bar_item_info): Allow CLOSE_P to be NULL.
+ (get_tab_bar_item): Adjust doc string.
+ (get_tab_bar_item_kbd): New function.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-05-15 Po Lu <luangruo@yahoo.com>
+
+ Fix year 2038 code for Android 4.4 and earlier
+ * configure.ac: Also disable enable_year2038.
+
+ Fix the MS-DOS build
+ * msdos/sed1v2.inp: Fix removal of ANDROID_BUILD_CFLAGS.
+ * msdos/sedlibmk.inp: Clear DIR_HAS_FD_MEMBER and
+ LOCALE_FR_UTF8.
+
+ ; Update from Gnulib
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-05-14 Po Lu <luangruo@yahoo.com>
+
+ Implement document moving on Android
+ * java/org/gnu/emacs/EmacsDocumentsProvider.java
+ (notifyChangeByName): New function.
+ (queryDocument1): Set FLAG_SUPPORTS_MOVE where necessary.
+ (moveDocument): Implement new function.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-05-13 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-05-12 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-05-11 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-05-10 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-05-09 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-05-08 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * java/Makefile.in (install_temp/assets/version): Fix generation
+ in out of tree builds.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-05-07 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * java/org/gnu/emacs/EmacsInputConnection.java
+ (requestCursorUpdates):
+ * java/org/gnu/emacs/EmacsNative.java (requestCursorUpdates):
+ * java/org/gnu/emacs/EmacsService.java (updateCursorAnchorInfo):
+ New functions.
+ * src/android.c (struct android_emacs_service)
+ (android_init_emacs_service): Add new method.
+ (android_update_cursor_anchor_info): New function.
+ * src/androidfns.c (android_set_preeditarea): New function.
+ * src/androidgui.h (enum android_ime_operation): New operation
+ `REQUEST_CURSOR_UPDATES'.
+ (struct android_ime_event): Document new meaning of `length'.
+ * src/androidterm.c (android_request_cursor_updates): New
+ function.
+ (android_handle_ime_event): Handle new operations.
+ (handle_one_android_event, android_draw_window_cursor): Update
+ the preedit area if needed, like on X.
+ (requestCursorUpdates): New function.
+ * src/androidterm.h (struct android_output): New field
+ `need_cursor_updates'.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-05-06 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Update Android port
+ * configure.ac (LIBGMP_CFLAGS): Avoid non portable test
+ expression.
+
+ Update Android port
+ * cross/verbose.mk.android: Get rid of badly aligned ANDROID_CC
+ messages.
+ * java/org/gnu/emacs/EmacsInputConnection.java (syncAfterCommit)
+ (extractAbsoluteOffsets): Add workarounds for several kinds of
+ machines.
+ (commitText, getExtractedText): Likewise.
+ * src/textconv.c (really_commit_text): Improve definition of
+ POSITION.
+ (get_extracted_text): Default to providing at least 4
+ characters.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-05-05 Po Lu <luangruo@yahoo.com>
+
+ Fix execution of /proc/self/exe within child processes
+ * exec/exec.h (struct exec_tracee): New field `new_child'.
+ Also, make `waiting_for_syscall' a bitfield.
+ * exec/trace.c (PTRACE_GETEVENTMSG): New declaration.
+ (MAX_TRACEES): Bump to 4096.
+ (handle_clone_prepare): New function.
+ (handle_clone): If required, set `new_child' and wait for a
+ ptrace event describing the parent to arrive.
+ (after_fork): Clear new field.
+ (exec_waitpid): Upon a ptrace event describing a clone, create
+ the child's tracee if it doesn't already exist. Otherwise, copy
+ over the parent's cmdline and start running it.
+
+ Update Android port
+ * doc/emacs/android.texi (Android Environment): Document lossage
+ with SIGSTOP.
+ * exec/exec.c (exec_0): Check X_OK on file being opened. Also
+ handle /proc/self/exe.
+
+ Update Android port
+ * exec/trace.c (SYS_SECCOMP): Define when not present.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-05-04 Po Lu <luangruo@yahoo.com>
+
+ Document another misfeature of Android
+ * doc/emacs/android.texi (Android Environment): Describe how to
+ turn off process killing.
+
+ Update Android port
+ * exec/trace.c (check_signal): New function.
+ (handle_exec, process_system_call): Handle signal-delivery-stop
+ while waiting synchronously for syscall completion.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-05-03 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * exec/config.h.in: Autoheader.
+ * exec/configure.ac: Check for siginfo_t.si_syscall.
+ * exec/trace.c (exec_waitpid): If SIGSYS is received, and caused by
+ seccomp, drop it should the call number be the invalid system call
+ used by Emacs.
+
+ Update Android port
+ * exec/config.h.in: Autoheader.
+ * exec/configure.ac: Use system extensions.
+ (HAVE_PROCESS_VM): Define if process_vm_readv and
+ process_vm_writev are available.
+ * exec/trace.c (read_memory, user_copy): Implement in terms of
+ process_vm if possible.
+
+ Remove extra debugging code
+ * exec/loader-mipsel.s (__start): Remove extraneous debugging
+ code.
+
+ Update Android port
+ * exec/Makefile.in: (.PHONY): Add `bootstrap-clean' and
+ `extraclean'.
+ (bootstrap-clean): New rule.
+
+ Update Android port
+ * java/Makefile.in (FIND_DELETE): New substitution.
+ (clean): Use FIND_DELETE.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-05-02 Po Lu <luangruo@yahoo.com>
+
+ * doc/emacs/android.texi (Android Environment): Improve doc.
+
+ Update Android port
+ * exec/config.h.in (__bool_true_false_are_defined):
+ * exec/configure.ac (REENTRANT): New definition.
+ (READLINKAT_SYSCALL, READLINK_SYSCALL): New defines. Set on all
+ hosts.
+ * exec/exec.c (MIN, MAX): Remove redundant declarations. Move
+ to config.h.
+ (exec_0): Copy name of executable into NAME when !REENTRANT.
+ * exec/exec.h (struct exec_tracee): New struct `exec_file'.
+ * exec/trace.c (remove_tracee, handle_exec, handle_readlinkat)
+ (process_system_call, after_fork): Handle readlinkat system
+ calls.
+
+ Fix ps name in Android subprocesses
+ * exec/Makefile.in (.SUFFIXES): Include ., then `srcdir'.
+ * exec/loader-aarch64.s (_start):
+ * exec/loader-armeabi.s (_start):
+ * exec/loader-mips64el.s (__start):
+ * exec/loader-mipsel.s (__start):
+ * exec/loader-x86.s (_start):
+ * exec/loader-x86_64.s (_start): Get basename of opened exec
+ file and make it the command name. Fix envp skipping on x86
+ and various leaks.
+
+ Port Android port to older Android systems
+ * exec/config.h.in: Autoheader.
+ * exec/configure.ac: Check for declarations of stpcpy and
+ stpncpy.
+ * exec/exec.c (stpcpy, stpncpy): Use replacements if
+ declarations are not present; this happens when a new Android
+ NDK is building for an old version of Android.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-05-01 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * exec/config.h.in: Update config.h.in.
+ * exec/configure.ac: Check for stpcpy and stpncpy.
+ * exec/exec.c (rpl_stpcpy, rpl_stpncpy): Define replacements
+ when they are not present on the system.
+ (process_program_header): Fill comment.
+
+ * src/term.c (syms_of_term): Pretend Android uses TERMINFO.
+
+ Fix cwd relative process execution on Android
+ * exec/exec.c (format_pid): New function.
+ (exec_0): Make cwd relative file names relative to
+ /proc/pid/cwd.
+ * exec/trace.c (handle_exec): Handle EINTR.
+ (process_system_call): Report failure without clobbering x0.
+
+ * README: Describe `exec' directory.
+
+ Fix use dialog box regression on Android
+ * lisp/subr.el (use-dialog-box-p): Always prefer dialog boxes.
+
+ Make it easier to quit on Android
+ * src/android.c (android_write_event):
+ (JNICALL): Raise SIGIO on key press and window action events.
+
+ Fix syscall error reporting on aarch64
+ * exec/trace.c (process_system_call): Save and restore x0, x1
+ and x2 regs after replacing them with an invalid file
+ descriptor.
+
+ Update Android port
+ * Makefile.in (extraclean): Clean in exec as well.
+ * configure.ac: Fix detection of absolute srcdir. Also, pass
+ CFLAGS.
+ * exec/Makefile.in: (.c.o): Add -I. so config.h can be
+ found.:(.s.o): Don't create m4 temporary in srcdir.
+ * exec/config-mips.m4.in (DADDI2, DADDI3): New macros. Define
+ to substitute if as cannot assemble daddi.
+ * exec/configure.ac (user_h): Look for user.h in asm/ as well.
+ Use new user.h. Also look in ptrace.h on arm systems. Check if
+ as supports daddi on mips64.
+ * exec/exec.c (check_interpreter): Fix char signedness bug.
+ * exec/loader-mips64el.s (__start): Use DADDI2 and DADDI3 for
+ two- and 3-operand daddi.
+ * exec/mipsel-user.h: Don't include sgidefs.h.
+ * java/INSTALL: Document that m4 is now required.
+ * src/android.c (android_rewrite_spawn_argv): Add missing NULL.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Work around system restrictions regarding exec
+ * doc/emacs/android.texi (Android Environment): Document
+ `android-use-exec-loader'.
+ * exec/exec1.c (main): Set program group of child process.
+ * src/android.c (android_rewrite_spawn_argv): New function.
+ * src/android.h: Update prototypes.
+ * src/androidfns.c (syms_of_androidfns): New variable
+ `android_use_exec_loader'.
+ * src/callproc.c (emacs_spawn): Rewrite the argument vector to
+ use exec1 if necessary.
+
+ Remove exec/configure
+ * exec/configure: Remove file.
+ * .gitignore: Add exec/configure.
+
+2023-04-30 Po Lu <luangruo@yahoo.com>
+
+ Add helper binary `exec1'
+ * .gitignore: New files.
+ * Makefile.in (mostlyclean_dirs): Add libexec, if its Makefile
+ exists.
+ * autogen.sh (do_git): Autoreconf in exec as well.
+ * configure.ac: Configure libexec on Android.
+ * exec/Makefile.in:
+ * exec/README:
+ * exec/config-mips.m4.in:
+ * exec/config.guess:
+ * exec/config.h.in:
+ * exec/config.sub:
+ * exec/configure:
+ * exec/configure.ac:
+ * exec/deps.mk:
+ * exec/exec.c (MIN, struct exec_open_command)
+ (struct exec_map_command, struct exec_jump_command)
+ (write_open_command, write_load_command, process_interpreter_1)
+ (process_interpreter, process_program_header, insert_args)
+ (exec_0):
+ * exec/exec.h (_EXEC_H_, struct elf_header_32)
+ (struct program_header_32, struct dt_entry_32)
+ (struct elf_header_64, struct program_header_64)
+ (struct dt_entry_64, struct exec_tracee):
+ * exec/exec1.c (main):
+ * exec/install-sh (scriptversion):
+ * exec/loader-aarch64.s (_start):
+ * exec/loader-armeabi.s (_start):
+ * exec/loader-mips64el.s (__start):
+ * exec/loader-mipsel.s (__start):
+ * exec/loader-x86.s (_start):
+ * exec/loader-x86_64.s (_start):
+ * exec/mipsel-user.h (_MIPSEL_USER_H_):
+ * exec/mipsfpu.c (MIPS_ABI_FP_ANY, fpu_reqs, valid_abi_p)
+ (fp_mode_for_abi, cpu_supports_fr0_p, determine_fpu_mode):
+ * exec/mipsfpu.h (_MIPSFPU_H_, FP_FR0):
+ * exec/test.c (print_usage, main):
+ * exec/trace.c (MAX_TRACEES, aarch64_set_regs, read_memory)
+ (user_alloca, user_copy, remove_tracee, handle_clone)
+ (syscall_trap_p, handle_exec, process_system_call, tracing_execve)
+ (after_fork, find_tracee, exec_waitpid, exec_init): New files.
+ * java/Makefile.in (CROSS_EXEC_BINS): Add exec1 and
+ loader.
+ ($(CROSS_EXEC_BINS) &): New target.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-04-29 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Update Android port
+ * build-aux/ndk-build-helper.mk (TARGET_ARCH): Define variable.
+ * configure.ac (ENABLE_CHECKING, CHECK_STRUCTS)
+ (GC_CHECK_STRING_OVERRUN, GC_CHECK_STRING_FREE_LIST, GLYPH_DEBUG)
+ (GC_CHECK_STRING_BYTES): Enable checking correctly on Android.
+ * java/README: Fix typos.
+ * m4/ndk-build.m4 (ndk_run_test): Pass target arch.
+ * src/android.c (android_get_content_name, android_close)
+ (android_fclose, android_check_string): Fix various typos caught
+ by checking.
+ * src/charset.c (load_charset_map_from_file): Call emacs_fclose,
+ not fclose.
+ * src/image.c (image_set_transform): Fix thinko.
+ (png_load_body, jpeg_load_body, gif_load): Call emacs_fclose,
+ not fclose. Use open instead of fdopen.
+ * src/xfaces.c (Fx_load_color_file): Likewise.
+
+2023-04-28 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-04-27 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * src/image.c (image_create_bitmap_from_data): Fix typo in
+ preprocessor conditionals.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Update Android port
+ * doc/emacs/android.texi (Android File System):
+ (Android Windowing): Make Emacs manual more portable.
+
+ Update Android port
+ * doc/lispref/commands.texi (Misc Events):
+ * doc/lispref/frames.texi (Accessing Selections):
+ (X Selections): Fix pieces of the Info manual.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-04-26 Po Lu <luangruo@yahoo.com>
+
+ Make two well known amusements work on Android
+ * lisp/play/doctor.el (text-conversion-style):
+ (doctor-mode):
+ * lisp/play/dunnet.el (text-conversion-style):
+ (dun-mode): Set `text-conversion-style' to `action'.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-04-25 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-04-24 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-04-23 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-04-22 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-04-21 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-04-20 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-04-19 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-04-18 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-04-17 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-04-16 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-04-15 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-04-14 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-04-13 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * doc/emacs/android.texi (Android Fonts): Update documentation.
+ * doc/lispref/frames.texi (Accessing Selections, X Selections):
+ Fix typos.
+ * src/sfntfont-android.c (system_font_directories)
+ (init_sfntfont_android): Add `/product/fonts'.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-04-12 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-04-11 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-04-10 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-04-09 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-04-08 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Document selections on Android more thoroughly
+ * doc/lispref/elisp.texi (Top):
+ * doc/lispref/frames.texi (Frames): Add ``Accessing Selections''
+ to menu.
+ (Accessing Selections, X Selections, Other Selections): New
+ nodes.
+
+2023-04-07 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-04-06 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-04-06 Po Lu <luangruo@yahoo.com>
+
+ Implement `yank-media' on Android
+ * doc/emacs/android.texi (Android Windowing): Update selection
+ restrictions.
+ * java/org/gnu/emacs/EmacsClipboard.java (EmacsClipboard): New
+ functions `getClipboardTargets' and `getClipboardData'.
+ * java/org/gnu/emacs/EmacsSdk11Clipboard.java
+ (EmacsSdk11Clipboard, getClipboardTargets, getClipboardData):
+ Implement.
+ * java/org/gnu/emacs/EmacsSdk8Clipboard.java: Stub out new
+ functions.
+
+ * lisp/term/android-win.el (android-get-clipboard-1): Implement
+ MIME type targets.
+ * src/android.c (android_exception_check)
+ (android_exception_check_1, android_exception_check_2): Fix
+ punctuation in warning message.
+ (android_exception_check_nonnull_1): New function.
+ * src/android.h: Update prototypes.
+ * src/androidselect.c (struct android_emacs_clipboard): New
+ methods.
+ (android_init_emacs_clipboard): Initialize new methods.
+ (Fandroid_get_clipboard_targets, android_xfree_inside)
+ (Fandroid_get_clipboard_data): New functions.
+ (syms_of_androidselect): Define new subrs.
+
+2023-04-05 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-04-04 Po Lu <luangruo@yahoo.com>
+
+ * lisp/subr.el (read-char-from-minibuffer): Fix typo.
+
+ Update Android port
+ * lisp/subr.el (read-char-from-minibuffer): Don't use undefined
+ variable. Reported by Robert Pluim.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-04-03 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ ; * src/androidselect.c (Fandroid_clipboard_exists_p): Add check.
+
+ Update Android port
+ * src/sfnt.c (sfnt_normalize_vector): Don't rely on undefined
+ sign extension semantics.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-04-02 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-04-01 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-03-31 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-03-30 Po Lu <luangruo@yahoo.com>
+
+ Tweak outline cache stuff
+ * src/sfntfont.c: Adjust font cache size constants.
+
+ * src/sfnt.c (GETINFO): Fix typo.
+
+ * src/sfnt.h: Fix typo.
+
+ Update Android port
+ * src/sfnt.c (sfnt_make_interpreter): New argument `fvar'. Set
+ axis count.
+ (SCANCTRL): Implement selector bit 8.
+ (GXAXIS): New instruction.
+ (SFVTPV): Validate graphics state after changing freedom vector.
+ (sfnt_line_to_vector): Implement `original'.
+ (sfnt_move): Remove redundant division.
+ (sfnt_interpret_run): Implement distortable font related GXAXIS
+ instruction (0x91).
+ (sfnt_vary_interpreter): Set naxis and norm_coords.
+ (sfnt_make_test_interpreter, pushb_test_args, pushw_test_args)
+ (sfnt_name_instruction, main): Adjust accordingly.
+ * src/sfnt.h (struct sfnt_interpreter, PROTOTYPE):
+ * src/sfntfont.c (sfntfont_setup_interpreter, sfntfont_open):
+ Set up distortion information.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-03-29 Po Lu <luangruo@yahoo.com>
+
+ Improve rules for enumerating user fonts
+ * doc/emacs/android.texi (Android Fonts): Document distortable
+ font replacement rules.
+ * src/sfntfont.c (sfnt_replace_fonts_p): New function.
+ (sfnt_enum_font_1): Call it.
+
+ Fix optimized move functions
+ * src/sfnt.c (sfnt_move_x):
+ (sfnt_move_y):
+ (sfnt_move): Set N flags and don't forget to
+ set N points too.
+
+ * src/sfnt.c (sfnt_read_avar_table): Fix sequencing problem.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Update Android port
+ * src/sfntfont.c (sfntfont_setup_interpreter): Don't create
+ interpreter for blatently broken fonts.
+
+ Update Android port
+ * src/sfntfont.c (sfntfont_open): Avoid specifying redundant
+ blends.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Update Android port
+ * src/sfnt.c (sfnt_validate_gs): Fix validation of projection
+ vector.
+
+2023-03-28 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * src/sfnt.c (sfnt_vary_compound_glyph):
+ * src/sfntfont.c (sfntfont_get_glyph)
+ (sfntfont_get_glyph_outline): Avoid clobbering offset size flag
+ when varying compound glyph.
+
+ Update Android port
+ * src/sfnt.c (sfnt_vary_simple_glyph, sfnt_vary_compound_glyph):
+ Fix application of intermediate tuples.
+ * src/sfntfont.c (sfntfont_open): Set xlfd name after applying
+ distortion.
+
+ Correctly round lbearing values
+ * src/sfnt.h (SFNT_ROUND_FIXED):
+ * src/sfntfont.c (sfntfont_probe_widths):
+ (sfntfont_measure_pcm): Round lbearing properly.
+
+ Update Android port
+ * src/sfntfont.c (sfnt_open_tables): Fix typos in non-HarfBuzz
+ code.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Update Android port
+ * src/androidterm.c (android_draw_image_glyph_string): Restore
+ potentially clobbered GC clipping.
+ * src/sfnt.c (sfnt_large_integer_add, sfnt_multiply_divide_round)
+ (sfnt_mul_fixed_round): New functions.
+ (sfnt_build_glyph_outline): Take unscaled glyph metrics.
+ (sfnt_prepare_raster, sfnt_vary_simple_glyph)
+ (sfnt_vary_compound_glyph, sfnt_vary_interpreter): Use rounding
+ multiplication to scale deltas.
+ (main): Adjust tests.
+ * src/sfntfont.c (sfntfont_get_glyph_outline)
+ (sfntfont_probe_widths, sfntfont_open, sfntfont_measure_pcm)
+ (sfntfont_draw): More minor fixes to variable fonts.
+
+2023-03-27 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * src/sfnt.c (sfnt_normalize_blend): Don't crash when axis
+ variations are not present.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Update Android port
+ * configure.ac (HAVE_OTF_GET_VARIATION_GLYPHS): Check for
+ `hb_font_set_var_named_instance'.
+ * src/sfnt.c (main): Update tests.
+ * src/sfntfont-android.c (Fandroid_enumerate_fonts): Blacklist
+ bad font.
+ * src/sfntfont.c (struct sfnt_font_tables, struct sfnt_font_desc)
+ (sfnt_decode_instance_name, sfnt_weight_descriptions)
+ (sfnt_enum_font_1, sfntfont_list_1, sfntfont_desc_to_entity)
+ (sfntfont_list, struct sfntfont_get_glyph_outline_dcontext)
+ (sfntfont_get_glyph, sfntfont_get_glyph_outline)
+ (struct sfnt_font_info, sfnt_close_tables, sfnt_open_tables)
+ (sfntfont_open, sfntfont_measure_pcm, sfntfont_close)
+ (sfntfont_draw, sfntfont_begin_hb_font, syms_of_sfntfont)
+ (mark_sfntfont): Handle variable fonts correctly.
+
+ Refactor sfntfont.c
+ * src/sfnt.c (sfnt_build_glyph_outline): Take scale, not head
+ and pixel size.
+ (sfnt_scale_metrics_to_pixel_size): Delete function.
+ (sfnt_get_scale): New function.
+ (main): Update tests.
+ * src/sfnt.h (PROTOTYPE): Update prototypes.
+ * src/sfntfont.c (struct sfnt_outline_cache)
+ (sfntfont_get_glyph_outline, struct sfnt_font_info)
+ (sfntfont_open): Save scale in font information and use it.
+ (sfntfont_measure_instructed_pcm): Delete function.
+ (sfntfont_measure_pcm): Make this the only ``measure pcm''
+ function.
+ (sfntfont_draw): Rely on sfntfont_get_glyph_outline for the
+ scale.
+
+ Refactor sfntfont.c
+ * src/sfntfont.c (struct sfnt_font_tables): New structure.
+ (struct sfnt_font_desc): New field `tables'.
+ (struct sfnt_font_info): New field `desc'.
+ (sfntfont_setup_interpreter): Drop fd arguments and don't try to
+ load interpreter tables.
+ (sfnt_open_tables, sfnt_close_tables): New functions.
+ (sfnt_reference_font_tables, sfnt_dereference_font_tables): New
+ functions.
+ (sfntfont_open, sfntfont_close): Implement in terms of those
+ functions in order to share tables.
+
+2023-03-26 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-03-26 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * src/sfnt.c (sfnt_table_names): Add avar.
+ (sfnt_read_glyph): Clear distortion fields.
+ (sfnt_build_glyph_outline): Calculate the outline origin point.
+ (sfnt_prepare_raster): Apply the origin point to the X axis
+ offset.
+ (sfnt_scale_metrics_to_pixel_size): New function.
+ (sfnt_build_instructed_outline): Use instructed origin phantom
+ point to determine the outline origin.
+ (sfnt_compute_phantom_points): Apply origin and advance
+ distortion.
+ (struct sfnt_variation_axis, struct sfnt_instance)
+ (struct sfnt_fvar_table, sfnt_read_fvar_table)
+ (struct sfnt_gvar_table, sfnt_read_gvar_table)
+ (sfnt_read_avar_table, struct sfnt_blend, sfnt_init_blend)
+ (sfnt_free_blend, sfnt_normalize_blend, struct sfnt_tuple_header)
+ (struct sfnt_gvar_glyph_header, sfnt_read_packed_deltas)
+ (sfnt_compute_tuple_scale, sfnt_read_cvar_table)
+ (sfnt_infer_deltas_1, sfnt_vary_simple_glyph, sfnt_infer_deltas)
+ (sfnt_vary_glyph, sfnt_vary_compound_glyph)
+ (sfnt_vary_interpreter): New functions. Add structs to
+ sfntfont.h.
+ (struct sfnt_test_dcontext, sfnt_test_get_glyph, main): Test
+ distortable font handling.
+
+ * src/sfnt.h (SFNT_ENABLE_HINTING):
+ (enum sfnt_table):
+ (struct sfnt_glyph):
+ (struct sfnt_glyph_outline):
+ (struct sfnt_raster):
+ (struct sfnt_default_uvs_table):
+ (struct sfnt_unicode_value_range):
+ (struct sfnt_nondefault_uvs_table):
+ (struct sfnt_uvs_mapping):
+ (struct sfnt_mapped_variation_selector_record):
+ (struct sfnt_table_offset_rec):
+ (struct sfnt_uvs_context):
+ (struct sfnt_mapped_table):
+ (struct sfnt_variation_axis):
+ (struct sfnt_instance):
+ (struct sfnt_fvar_table):
+ (struct sfnt_short_frac_correspondence):
+ (struct sfnt_short_frac_segment):
+ (struct sfnt_avar_table):
+ (struct sfnt_tuple_variation):
+ (struct sfnt_cvar_table):
+ (struct sfnt_gvar_table):
+ (struct sfnt_blend):
+ (struct sfnt_metrics_distortion):
+ (PROTOTYPE): Update prototypes.
+
+ * src/sfntfont.c (sfntfont_get_glyph_outline):
+ (sfntfont_measure_pcm): Adjust calls.
+
+2023-03-24 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Update Android port
+ * src/sfnt.c (sfnt_table_names): Add fvar, gvar, cvar.
+ (sfnt_read_maxp_table): Call xmalloc, not malloc.
+ (sfnt_read_simple_glyph): Avoid use-after-free if simple is
+ invalid.
+ (sfnt_fill_span): Fix max coverage.
+ (sfnt_normalize_vector): Fail if magnitude is zero.
+ (sfnt_measure_distance): Fix opcode order.
+ (sfnt_dot_fix_14): Fix implementation.
+ (struct sfnt_variation_axis, struct sfnt_instance)
+ (struct sfnt_fvar_table, struct sfnt_gvar_table)
+ (sfnt_read_fvar_table, sfnt_read_gvar_table, struct sfnt_blend)
+ (sfnt_init_blend, sfnt_free_blend, sfnt_normalize_blend)
+ (struct sfnt_tuple_header, struct sfnt_gvar_glyph_header)
+ (sfnt_read_packed_points, sfnt_read_packed_deltas)
+ (sfnt_compute_tuple_scale, sfnt_infer_deltas_1, sfnt_infer_deltas)
+ (sfnt_vary_glyph): Add WIP variation glyph implementation.
+ * src/sfnt.h (enum sfnt_table, struct sfnt_simple_glyph):
+ Likewise.
+
+2023-03-20 Po Lu <luangruo@yahoo.com>
+
+ * java/INSTALL: Fix typo.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Update Android port
+ * configure.ac: Add support for HarfBuzz on Android.
+ * java/INSTALL: Document where to get Emacs with HarfBuzz.
+ * lisp/subr.el (overriding-text-conversion-style, y-or-n-p):
+ Correctly set text conversion style if y-or-n-p is called inside
+ the minibuffer.
+ * src/sfnt.c (sfnt_read_cmap_format_8)
+ (sfnt_read_cmap_format_12): Fix typos.
+ (sfnt_read_24, sfnt_read_cmap_format_14): New function.
+ (sfnt_read_cmap_table_1, sfnt_read_cmap_table): Handle format 14
+ cmap tables.
+ (sfnt_read_default_uvs_table, sfnt_read_nondefault_uvs_table)
+ (sfnt_compare_table_offsets, sfnt_create_uvs_context)
+ (sfnt_free_uvs_context, sfnt_compare_uvs_mapping)
+ (sfnt_variation_glyph_for_char, sfnt_map_table, sfnt_unmap_table)
+ (sfnt_read_table, sfnt_test_uvs): New functions.
+ (main): Add UVS tests.
+ * src/sfnt.h (struct sfnt_cmap_format_14)
+ (struct sfnt_variation_selector_record)
+ (struct sfnt_default_uvs_table, struct sfnt_unicode_value_range)
+ (struct sfnt_nondefault_uvs_table, struct sfnt_uvs_mapping)
+ (struct sfnt_mapped_variation_selector_record)
+ (struct sfnt_table_offset_rec, struct sfnt_uvs_context)
+ (struct sfnt_mapped_table): New structures. Update prototypes.
+ * src/sfntfont-android.c (android_sfntfont_driver): Register
+ HarfBuzz callbacks where required.
+ * src/sfntfont.c (sfntfont_select_cmap): Look for a format 14
+ table. Save it in new arg FORMAT14.
+ (sfntfont_read_cmap): Adjust accordingly.
+ (struct sfnt_font_info): New field `uvs'. New fields `hb_font',
+ `fd' and `directory'.
+ (sfntfont_open): Open uvs context. Under HarfBuzz, don't close
+ the fd or subtable, but save them in the font info instead.
+ (sfntfont_close): Free UVS context. Close font fd and table
+ directory and HarfBuzz font.
+ (sfntfont_draw): Handle case where s->padding_p.
+ (sfntfont_get_variation_glyphs): New function.
+ (sfntfont_unmap_blob, sfntfont_get_font_table)
+ (sfntfont_begin_hb_font): New functions.
+ * src/sfntfont.h: Update prototypes.
+ * src/textconv.c (Fset_text_conversion_style): Fix doc string.
+
+2023-03-19 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-03-18 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * java/org/gnu/emacs/EmacsView.java (onAttachedToWindow): Send
+ measured width and height in exposures again.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Remove extraneous debugging code
+ * src/androidterm.c (handle_one_android_event): Don't log expose
+ events.
+
+ Work around pselect lossage on Android
+ * src/android.c (android_run_select_thread): New flag. Use it
+ rather than the rc of pselect and errno to determine whether or
+ not it has been interrupted.
+ (android_handle_sigusr1): Set said flag.
+
+ Update Android port
+ * java/org/gnu/emacs/EmacsView.java (EmacsView)
+ (prepareForLayout): New function. Call this prior to mapping
+ the view.
+ (onGlobalLayout): New function. Register as global layout
+ listener.
+ * java/org/gnu/emacs/EmacsWindow.java (EmacsWindow)
+ (notifyContentRectPosition): New function. Use specified
+ xPosition and yPosition when reporting the offsets of children
+ of the root window.
+ * java/org/gnu/emacs/EmacsWindowAttachmentManager.java
+ (registerWindow): Specify activity launch bounds if necessary.
+ * src/androidterm.c (handle_one_android_event): Send
+ MOVE_FRAME_EVENT where necessary.
+
+2023-03-17 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Include more information in Android bug reports
+ * src/androidfns.c (Fx_server_vendor, Fx_server_version): New
+ functions.
+ (syms_of_androidfns): Define new functions.
+ * src/androidterm.c (android_set_build_fingerprint)
+ (syms_of_androidterm): Set new variable
+ Vandroid_build_manufacturer.
+ * src/xfns.c (Fx_server_vendor, Fx_server_version): Update doc
+ strings.
+
+ Fix WINDOWSNT build of fileio.c and image.c
+ * src/fileio.c (emacs_fd_to_int): Don't define on WINDOWSNT.
+ * src/image.c (image_create_bitmap_from_data): Don't abort if
+ !defined HAVE_ANDROID.
+
+ Update Android port
+ * configure.ac:
+ * m4/ndk-build.m4 (ndk_INIT):
+ (ndk_LATE): Avoid AC_REQUIRE magic.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Improve radio button appearance in Android menus
+ * java/org/gnu/emacs/EmacsContextMenu.java (EmacsContextMenu):
+ New field `lastGroupId'.
+ (Item): New field `isRadio'.
+ (addItem): New arg `isRadio'.
+ (inflateMenuItems): Apply an empty radio button group if
+ required.
+ * src/androidmenu.c (android_init_emacs_context_menu): Adjust
+ accordingly.
+ (android_menu_show): Likewise.
+
+ Update Android port
+ * java/org/gnu/emacs/EmacsView.java (cancelPopupMenu): Dismiss
+ context menu correctly.
+ (isOpaque): New function.
+ * java/org/gnu/emacs/EmacsWindowAttachmentManager.java: Make
+ consumer list public.
+
+ * configure.ac: Add missing precious variable.
+
+2023-03-16 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Update Android port
+ * lisp/frame.el (android-detect-mouse):
+ * lisp/term/android-win.el (android-get-connection): Add
+ function declarations.
+
+ * configure.ac: Remove unnecessary escape.
+
+ Make ANDROID_CC and SDK_BUILD_TOOLS precious variables
+ * configure.ac (AUTO_DEPEND, ANDROID_STUBIFY, ANDROID_LDFLAGS):
+ * lib/Makefile.in (ANDROID_CFLAGS, ANDROID_BUILD_CFLAGS)
+ (ALL_CFLAGS):
+ * lib/gnulib.mk.in (AM_DEFAULT_VERBOSITY):
+ * msdos/sed1v2.inp:
+ * msdos/sedlibmk.inp:
+ * src/Makefile.in (ANDROID_OBJ, EMACS_CFLAGS): Make those
+ variables precious. Rename ANDROID_CFLAGS substitution to
+ ANDROID_BUILD_CFLAGS.
+
+ Update Android port
+ * nt/mingw-cfg.site: Suppress build of gnulib printf.
+
+ Update Android port
+ * java/org/gnu/emacs/EmacsDocumentsProvider.java (queryRoots): Add
+ icon to document root.
+
+ Update Android port
+ * lisp/loadup.el (current-load-list): Set to empty load list
+ after startup.
+ * src/lread.c (build_load_history): Revert earlier changes.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-03-15 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * configure.ac: Improve portability.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-03-15 Robert Pluim <rpluim@gmail.com>
+
+ Fix typos in Android port
+ * src/fileio.c (Finsert_file_contents):
+ * src/window.c (replace_buffer_in_windows): Call Fboundp, not
+ boundp.
+
+2023-03-15 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * cross/Makefile.in (lib/gnulib.mk): Edit out
+ build-aux stuff.
+ * m4/ndk-build.m4: Also look for cross ranlib.
+
+ * src/sfntfont.c (sfntfont_close): Fix warning w/o mmap.
+
+ Port to systems without endian.h
+ * lib-src/asset-directory-tool.c (main_2): Port to systems
+ without htole32.
+
+2023-03-15 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * configure.ac (XCONFIGURE): Disable NS.
+ * cross/Makefile.in (lib-src/config.h):
+
+ (lib/libgnu.a):
+ (src/android-emacs): Port sed invocation to Mac OS without GNU
+ sed.
+
+2023-03-15 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * doc/lispref/commands.texi (Misc Events): Document variable
+ `disable-inhibit-text-conversion'.
+ * java/org/gnu/emacs/EmacsDialog.java (display1): Try an
+ activity that is certain to be focused first.
+ * lisp/touch-screen.el (touch-screen-track-tap)
+ (touch-screen-track-drag): Bind
+ `disable-inhibit-text-conversion'.
+ * src/keyboard.c (read_key_sequence): Only disable text
+ conversion if an actual function or numeric key is found in the
+ key sequence.
+ (syms_of_keyboard): New variable
+ `disable-inhibit-text-conversion'.
+ * src/lread.c (read_filtered_event): Check new variable.
+ * src/textconv.c (textconv_query): Remove unused label.
+
+ Omit gnulib modules added by Android port on MinGW
+ * nt/gnulib-cfg.mk: Omit new gnulib modules.
+
+2023-03-14 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * lisp/minibuffer.el (minibuffer-setup-on-screen-keyboard):
+ Handle cases where last-event-frame is a kbd macro.
+ * src/keyboard.c (lispy_function_keys): Remove duplicates.
+
+ Fix the MS-DOS build
+ * msdos/sed1v2.inp:
+ * msdos/sed3v2.inp:
+ * msdos/sedlibcf.inp:
+ * msdos/sedlibmk.inp: Update for Android port and new Gnulib
+ modules.
+
+ Update Android port
+ * java/org/gnu/emacs/EmacsWindow.java (figureChange): Detect
+ mice on up events as well.
+ (onSomeKindOfMotionEvent): Work past framework bug.
+ * src/androidterm.c (android_perform_conversion_query):
+ * src/textconv.c (textconv_query):
+ * src/textconv.h (TEXTCONV_SKIP_ACTIVE_REGION): Remove unused
+ code.
+
+ Update Android port
+ * doc/emacs/android.texi (Android Windowing): Document how to
+ display dialogs when Emacs is in the background.
+ * java/org/gnu/emacs/EmacsDialog.java (display1): Use system
+ dialogs if possible.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-03-13 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * etc/NEWS: Announce new option.
+ * lisp/menu-bar.el (menu-bar-close-window): New option.
+ (kill-this-buffer):
+ (kill-this-buffer-enabled-p): Adjust accordingly.
+ * src/keyboard.c (lispy_function_keys): Add more silly
+ keys.
+
+ Update Android port
+ * src/android.c (android_check_string, android_build_string):
+ Reduce consing when building menu bar strings.
+
+ * etc/MACHINES (Android): Update with more recent information.
+
+ Update Android port
+ * doc/emacs/android.texi (Android Startup): Document changes to
+ emacsclient wrapper.
+ * java/org/gnu/emacs/EmacsOpenActivity.java (EmacsOpenActivity)
+ (startEmacsClient): Open EmacsActivity if the service is not
+ running.
+ * java/org/gnu/emacs/EmacsService.java (onCreate):
+ * java/org/gnu/emacs/EmacsThread.java (EmacsThread, run): Pass
+ any file to open to Emacs.
+ * lisp/term/android-win.el (handle-args-function): Implement.
+
+ Update Android port
+ * src/image.c (image_create_bitmap_from_file, image_find_image_fd)
+ (close_android_fd, slurp_file): Return and use `struct
+ android_fd_or_asset' on Android.
+ (xbm_load, xpm_load, pbm_load, png_load_body, jpeg_load_body)
+ (webp_load, svg_load): Adjust accordingly.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-03-12 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * src/android.c (android_get_screen_width):
+ (android_get_screen_height):
+ (android_get_mm_width):
+ (android_get_mm_height):
+ (android_detect_mouse): Correctly handle Java exceptions.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Update Android port
+ * src/android.c (android_check_if_event):
+ * src/androidgui.h: New function.
+ * src/androidterm.c (android_event_is_for_frame): New function.
+ (android_reset_conversion): Free and unqueue all text conversion
+ events for the given frame.
+
+ Update Android port
+ * src/androidterm.c (NATIVE_NAME, JNICALL)
+ (android_build_extracted_text, android_update_selection): Use
+ 0-based indices for Android buffer positions. Also, report
+ surrounding text relative to the region, not to the cursor.
+ * src/textconv.c (textconv_query): Accept new values of
+ position.
+ (really_set_composing_text): Use ephemeral last point.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Update Android port
+ * java/org/gnu/emacs/EmacsOpenActivity.java (EmacsOpenActivity)
+ (onCancel): New function.
+ (displayFailureDialog): Handle dialog cancellation.
+ * src/sfntfont.c (sfnt_parse_languages): Look for SLNG tag if
+ DLNG is not present.
+
+ Add Super modifier support to Android port
+ * src/androidgui.h (enum android_modifier_mask): New modifier
+ ANDROID_SUPER_MASK.
+ * src/androidterm.c (android_android_to_emacs_modifiers)
+ (android_emacs_to_android_modifiers): Add new modifier.
+
+ Fix crash during androidterm init
+ * src/androidterm.c (syms_of_androidterm): Initialize
+ Vandroid_build_fingerprint in case GC happens.
+
+ * src/emacs-module.c (module_reset_handlerlist): Fix macro conflict.
+
+ Clean up emacs-module.c
+ * src/emacs-module.c (MODULE_HANDLE_NONLOCAL_EXIT)
+ (module_make_global_ref, module_free_global_ref)
+ (module_make_function, module_get_function_finalizer)
+ (module_set_function_finalizer, module_make_interactive)
+ (module_funcall, module_intern, module_type_of)
+ (module_extract_integer, module_make_integer, module_extract_float)
+ (module_make_float, module_copy_string_contents)
+ (module_make_string, module_make_unibyte_string)
+ (module_make_user_ptr, module_get_user_ptr, module_set_user_ptr)
+ (module_get_user_finalizer, module_set_user_finalizer)
+ (module_vec_set, module_vec_get, module_vec_size)
+ (module_process_input, module_extract_time, module_make_time)
+ (module_extract_big_integer, module_make_big_integer)
+ (module_open_channel, module_reset_handlerlist): Adjust as
+ recommended by Paul Eggert <eggert@cs.ucla.edu>.
+
+ Update Android port
+ * configure.ac: Take option `--with-shared-user-id' and give it
+ to AndroidManifest.xml.in.
+ * java/AndroidManifest.xml.in: Substitute that into the
+ application info.
+ * java/INSTALL (BUILDING WITH A SHARED USER ID): New section.
+
+2023-03-11 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ Improve default value of `with_mailutils' on Android
+ * configure.ac: Default to off on Android.
+
+ * configure.ac: Fix typo.
+
+ Update Android port
+ * configure.ac (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 when --with-mailutils.
+
+ Update Android port
+ * src/android.c (android_resolve_handle)
+ (android_resolve_handle2): Don't perform checking done by
+ CheckJNI by default.
+ (android_copy_area): Check for errors here because CopyArea can
+ perform a lot of consing.
+ (android_define_cursor): Remove redundant code.
+
+ Fix problems with the menu bar on large screen Android devices
+ * java/org/gnu/emacs/EmacsActivity.java (onContextMenuClosed):
+ Process submenu closing normally if it happens more than 300 ms
+ after a submenu item was selected.
+ * java/org/gnu/emacs/EmacsContextMenu.java (EmacsContextMenu)
+ (onMenuItemClick, display1): Give `wasSubmenuSelected' different
+ values depending on how the submenu was selected.
+
+ * lib/gnulib.mk.in: Update from gnulib.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+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.
+ (MODULE_INTERNAL_CLEANUP): New macro.
+ (module_make_global_ref, module_free_global_ref)
+ (module_make_function, module_get_function_finalizer)
+ (module_set_function_finalizer, module_make_interactive)
+ (module_funcall, module_intern, module_type_of)
+ (module_extract_integer, module_make_integer, module_extract_float)
+ (module_make_float, module_copy_string_contents)
+ (module_make_string, module_make_unibyte_string)
+ (module_make_user_ptr, module_get_user_ptr, module_set_user_ptr)
+ (module_get_user_finalizer, module_set_user_finalizer)
+ (module_vec_set, module_vec_get, module_vec_size)
+ (module_process_input, module_extract_time, module_make_time)
+ (module_extract_big_integer, module_make_big_integer)
+ (module_open_channel): Call MODULE_INTERNAL_CLEANUP prior to
+ returning.
+
+2023-03-11 Po Lu <luangruo@yahoo.com>
+
+ Implement hourglass cursor on Android
+ * lisp/term/android-win.el (x-pointer-arrow, x-pointer-left-ptr)
+ (x-pointer-left-side, x-pointer-sb-h-double-arrow)
+ (x-pointer-sb-v-double-arrow, x-pointer-watch, x-pointer-xterm)
+ (x-pointer-invisible): New constants.
+ * src/androidterm.c (android_show_hourglass)
+ (android_hide_hourglass): New functions.
+ (android_toggle_visible_pointer, android_define_frame_cursor):
+ Define or don't define hourglass cursor if x->hourglass.
+ (android_redisplay_interface): Add new functions.
+ * src/androidterm.h (struct android_output): New field
+ `hourglass'.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+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.
+ * 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.
+ * 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.
+ (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.
+
+ Port Android battery status to Android 4.4 and earlier
+ * java/org/gnu/emacs/EmacsService.java (EmacsService)
+ (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
+
+2023-03-09 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ 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/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.
+ (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>
+
+ 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
+ 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'.
+
+ 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'.
+ (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
+
+ Fix occasional crash
+ * 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.
+ * src/android.c (struct android_emacs_service): New method
+ `updateExtractedText'.
+ (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_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
+
+2023-03-07 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ 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_fill_polygon, android_draw_rectangle, android_draw_point)
+ (android_draw_line, android_clear_area, android_bell)
+ (android_set_input_focus, android_raise_window)
+ (android_lower_window, android_set_dont_focus_on_map)
+ (android_set_dont_accept_focus, android_get_keysym_name)
+ (android_toggle_on_screen_keyboard, android_restart_emacs)
+ (android_display_toast, android_update_ic, android_reset_ic)
+ (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.
+ (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
+
+ 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.
+ * src/android-asset.h (AAsset_seek): Define stub.
+ * src/android.c (android_open): Take mode_t.
+ (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/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.
+ * 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/EmacsDrawLine.java (perform):
+ * java/org/gnu/emacs/EmacsDrawRectangle.java (perform):
+ * java/org/gnu/emacs/EmacsFillPolygon.java:
+ * 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/EmacsNative.java:
+ * java/org/gnu/emacs/EmacsNoninteractive.java
+ (EmacsNoninteractive, main):
+ * java/org/gnu/emacs/EmacsOpenActivity.java (EmacsOpenActivity)
+ (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/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.
+
+ 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.
+
+ Update Android port
+ * etc/PROBLEMS: Document problem with default monospace font.
+ * src/fileio.c (check_mutable_filename): Check /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
+ top_builddir/config.status instead.
+
+ * configure.ac: Fix another typo.
+
+ * cross/Makefile.in (builddir): Define.
+
+ * 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.
+ * 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
+
+ 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.
+
+ 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.
+ * 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/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.
+
+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
+ * 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.
+ * 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.
+ (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
+
+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/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):
+ * java/org/gnu/emacs/EmacsSdk7FontDriver.java
+ (EmacsSdk7FontDriver):
+ * java/org/gnu/emacs/EmacsService.java (queryBattery):
+ * java/org/gnu/emacs/EmacsWindow.java (EmacsWindow): Make
+ functions final and classes static where necessary.
+ * 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/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.
+ * 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.
+ (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/Makefile): Edit srcdir and VPATH to LIB_SRCDIR.
+ (src/Makefile): Edit -I$$(top_srcdir) to -I../$(srcdir)/lib,
+ instead of ommitting it.
+ (clean): Allow ndk-build clean to fail.
+
+ * java/Makefile.in (builddir): New variable.
+ (WARN_JAVAFLAGS): Likewise.
+ (JAVAFLAGS): Define in terms of WARN_JAVAFLAGS.
+ (SIGN_EMACS, SIGN_EMACS_V2): Use emacs.keystore relative to
+ srcdir. Allow inclusion of ndk-build.mk to fail.
+ (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.
+
+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
+ * 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/callproc.c (get_current_directory): When trying to run a
+ 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/EmacsDocumentsProvider.java
+ (EmacsDocumentsProvider):
+ * java/org/gnu/emacs/EmacsDrawLine.java (EmacsDrawLine):
+ * java/org/gnu/emacs/EmacsDrawPoint.java (EmacsDrawPoint):
+ * java/org/gnu/emacs/EmacsDrawRectangle.java
+ (EmacsDrawRectangle):
+ * java/org/gnu/emacs/EmacsFillPolygon.java (EmacsFillPolygon):
+ * java/org/gnu/emacs/EmacsFillRectangle.java
+ (EmacsFillRectangle):
+ * java/org/gnu/emacs/EmacsGC.java (EmacsGC):
+ * java/org/gnu/emacs/EmacsInputConnection.java
+ (EmacsInputConnection):
+ * java/org/gnu/emacs/EmacsNative.java (EmacsNative):
+ * java/org/gnu/emacs/EmacsNoninteractive.java
+ (EmacsNoninteractive):
+ * java/org/gnu/emacs/EmacsOpenActivity.java (EmacsOpenActivity):
+ * java/org/gnu/emacs/EmacsPixmap.java (EmacsPixmap):
+ * java/org/gnu/emacs/EmacsPreferencesActivity.java
+ (EmacsPreferencesActivity):
+ * java/org/gnu/emacs/EmacsSdk11Clipboard.java
+ (EmacsSdk11Clipboard):
+ * java/org/gnu/emacs/EmacsSdk23FontDriver.java
+ (EmacsSdk23FontDriver):
+ * 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/EmacsWindowAttachmentManager.java
+ (EmacsWindowAttachmentManager): Make classes final where
+ appropriate.
+
+ 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_exception_check_nonnull): New function.
+ * src/android.h:
+ * src/androidselect.c (Fandroid_get_clipboard): Likewise.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+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.
+
+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_change_window_attributes, android_reparent_window)
+ (android_map_window, android_unmap_window, android_resize_window)
+ (android_move_window, android_set_input_focus)
+ (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.
+
+ 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
+
+ Update Android port
+ * doc/lispref/commands.texi (Misc Events): Update documentation.
+ * java/org/gnu/emacs/EmacsService.java (EmacsService)
+ (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.
+
+ * 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
+ * doc/emacs/android.texi (Android Startup, Android File System)
+ (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_init_emacs_service): Look up new method.
+ (android_destroy_handle, android_create_window)
+ (android_init_android_rect_class, android_init_emacs_gc_class)
+ (android_set_clip_rectangles)
+ (android_create_pixmap_from_bitmap_data, android_fill_polygon)
+ (android_get_image, android_put_image, android_bell)
+ (android_set_input_focus, android_raise_window)
+ (android_lower_window, android_query_tree, android_get_geometry)
+ (android_translate_coordinates, android_wc_lookup_string)
+ (android_damage_window, android_build_string)
+ (android_build_jstring, android_exception_check_1)
+ (android_exception_check_2): New functions.
+ (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.
+ * src/androidfont.c (androidfont_from_lisp, DO_SYMBOL_FIELD)
+ (DO_CARDINAL_FIELD, androidfont_list, androidfont_match)
+ (androidfont_draw, androidfont_open_font)
+ (androidfont_close_font):
+ * src/androidselect.c (Fandroid_set_clipboard)
+ (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
+
+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/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
+
+ Fix ImageMagick build on Android
+ * INSTALL.android (-linux_arm_sources):
+ * build-aux/ndk-build-helper-1.mk:
+ (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.
+
+ * 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_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.
+ * 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
+
+2023-02-22 Po Lu <luangruo@yahoo.com>
+
+ * 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):
+ * 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)).
+ * 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
+
+ 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.
+ * 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.
+ * src/android.c (struct android_emacs_service): New methods.
+ (android_content_name_p, android_get_content_name)
+ (android_check_content_access): New function.
+ (android_fstatat, android_open): Implement opening content URIs.
+ (dup): Export to Java.
+ (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.
+
+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.
+ (sfnt_grok_registry): New function.
+ (sfnt_enum_font_1): Call it.
+ (sfntfont_registries_compatible_p): New function.
+ (sfntfont_list_1): Check registry compatibility.
+ (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>
+
+ 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.
+
+ 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.
+
+ 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/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.
+
+ 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.
+
+ 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'.
+ (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.
+ * 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/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.
+ (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.
+
+ * configure.ac: Fix typo.
+
+ 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.
+ * 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
+ dumping on Android.
+ * 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.
+ (syms_of_androidterm): New variable `android-build-fingerprint'.
+
+ * src/android.c (android_exception_check): Fix typo.
+
+ 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.
+ * 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.
+ * 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)
+ (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
+
+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/EmacsView.java (handleDirtyBitmap): Don't
+ clear surfaceView bitmap.
+ * lisp/comint.el (comint-mode):
+ * 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.
+ * 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.
+ (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.
+ (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'.
+ (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
+ are valid.
+
+ * src/textconv.c (sync_overlay, really_commit_text)
+ (really_set_composing_text, really_set_composing_region)
+ (really_delete_surrounding_text, really_set_point_and_mark)
+ (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:
+ * 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)
+ (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/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.
+ (android_perform_conversion_query): Skip the active region, not
+ the conversion region.
+ (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/marker.c (set_marker_internal): Force redisplay when the
+ mark is set and the buffer is visible on builds that use text
+ conversion. Explain why.
+
+ * src/textconv.c (copy_buffer): Fix copying past gap.
+ (get_mark): New function.
+ (textconv_query): Implement new flag.
+ (sync_overlay): New function. Display conversion text in an
+ overlay.
+ (record_buffer_change, really_commit_text)
+ (really_set_composing_text, really_set_composing_region)
+ (really_delete_surrounding_text, really_set_point)
+ (handle_pending_conversion_events_1, decrement_inside)
+ (handle_pending_conversion_events, textconv_set_point)
+ (get_extracted_text, register_textconv_interface): Various fixes
+ and improvements.
+
+ * 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>
+
+ 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)
+ (getLocationOnScreen, sync, getClipboardManager, restartEmacs):
+ Use syncRunnable.
+ (syncRunnable): New function.
+ (updateIC, resetIC): New functions.
+
+ * java/org/gnu/emacs/EmacsView.java (EmacsView): New field
+ `inputConnection' and `icMode'.
+ (onCreateInputConnection): Update accordingly.
+ (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.
+ (android_query_sem): New function.
+ (android_init_events): Initialize new semaphore.
+ (android_write_event): Export.
+ (android_select): Check for UI thread code.
+ (setEmacsParams, android_init_emacs_service): Initialize new
+ 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.
+
+ * 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.
+ (android_decode_utf16, android_handle_ime_event)
+ (handle_one_android_event, android_sync_edit)
+ (android_copy_java_string, beginBatchEdit, endBatchEdit)
+ (commitCompletion, deleteSurroundingText, finishComposingText)
+ (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):
+ (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.c (enum textconv_batch_edit_flags, textconv_query)
+ (reset_frame_state, detect_conversion_events)
+ (restore_selected_window, really_commit_text)
+ (really_finish_composing_text, really_set_composing_text)
+ (really_set_composing_region, really_delete_surrounding_text)
+ (really_set_point, complete_edit)
+ (handle_pending_conversion_events_1)
+ (handle_pending_conversion_events, start_batch_edit)
+ (end_batch_edit, commit_text, finish_composing_text)
+ (set_composing_text, set_composing_region, textconv_set_point)
+ (delete_surrounding_text, get_extracted_text)
+ (report_selected_window_change, report_point_change)
+ (register_texconv_interface): New functions.
+
+ * 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
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ 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.
+ * 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.
+ (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)
+ (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
+
+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/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>
+
+ Implement more features for the Emacs ``documents provider''
+ * java/org/gnu/emacs/EmacsDocumentsProvider.java (queryRoots):
+ Implement isChild.
+ (getNotificationUri, notifyChange): New functions.
+ (queryDocument1): Set rename and remove flags.
+ (queryDocument, queryChildDocuments): Allow the requester to
+ detect changes in the directory hierarchy.
+ (createDocument, deleteDocument, removeDocument): Signal changes
+ to the directory hierarchy.
+
+ * 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/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/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.
+ (main): Update tests.
+
+2023-02-09 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ 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/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)
+ (sfnt_expand_compound_glyph_context)
+ (sfnt_decompose_compound_glyph): Take size_t contour offsets.
+ (sfnt_decompose_glyph): Always close contour even if the first
+ point isn't on-curve.
+ (sfnt_build_outline_edges): Fix coding style.
+ (sfnt_interpret_iup): Skip phantom points during IUP.
+ (sfnt_decompose_instructed_outline): Clarify documentation.
+ Always close contour even if the first point isn't on-curve.
+ (struct sfnt_test_dcontext, sfnt_test_move_to, sfnt_test_line_to)
+ (sfnt_test_curve_to, sfnt_transform_f26dot6, sfnt_test_get_glyph)
+ (sfnt_test_free_glyph, sfnt_test_span, sfnt_test_edge_ignore)
+ (sfnt_interpret_compound_glyph_2, sfnt_test_edges, main): Update
+ tests.
+
+ * src/sfnt.h: Export new function.
+
+ * src/sfntfont.c (sfntfont_get_glyph_outline): Handle compound
+ glyphs.
+ (sfntfont_measure_instructed_pcm, sfntfont_measure_pcm)
+ (sfntfont_draw): Update accordingly.
+
+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.
+
+ * java/org/gnu/emacs/EmacsView.java (EmacsView):
+ (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/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.
+
+ * src/android.c (struct android_emacs_window)
+ (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_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.
+ (sfnt_prepare_raster): Always floor coordinates, since the
+ 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_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_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.
+ (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.
+ (IUP_SINGLE_PAIR): Fix interpolation loop wraparound.
+ (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.
+
+ * src/sfnt.h (SFNT_ENABLE_HINTING, struct sfnt_cvt_table)
+ (struct sfnt_fpgm_table, struct sfnt_prep_table)
+ (struct sfnt_unit_vector, struct sfnt_interpreter_definition)
+ (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.
+ (sfntfont_setup_interpreter): New function.
+ (sfntfont_open): Avoid memory leak. Set up interpreter.
+ (sfntfont_measure_instructed_pcm): New function.
+ (sfntfont_measure_pcm): Delegate to measure_instructed_pcm where
+ appropriate.
+ (sfntfont_close): Free new tables.
+ (sfntfont_draw): Scale metrics properly.
+
+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)
+ (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
+ multiplication.
+ (sfnt_prepare_raster): Update offset calculation for changes.
+ (sfnt_step_edge, sfnt_step_edge_n): Handle bresenham terms.
+ (sfnt_build_outline_edges): Don't subtract floored xmin, just
+ xmin.
+ (sfnt_saturate_short): Make clang generate better code.
+ (sfnt_fill_span): Stop rounding coordinates.
+ (sfnt_poly_span): Poly consecutive on transitions all in one go.
+ (sfnt_lookup_glyph_metrics): Remove redundant multiplication.
+ (struct sfnt_interpreter): New hooks for debugging.
+ (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.
+ (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
+ 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_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_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)
+ (sfnt_verbose, main): Improve debug code and tests.
+
+ * src/sfnt.h (struct sfnt_edge): Add bresenham terms.
+
+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/EmacsOpenActivity.java (readEmacsClientLog)
+ (EmacsOpenActivity, startEmacsClient): Don't use redirectError
+ on Android 7.1 and earlier.
+
+2023-02-06 Po Lu <luangruo@yahoo.com>
+
+ 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)))):
+ ($$(error Unsupported suffix):
+ * 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/EmacsOpenActivity.java (run): Likewise.
+ (onCreate): Set an appropriate theme on ICS and up.
+
+ * 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.
+ (DELTAP1, DELTAP2, DELTAP3, SVTCAy, SPVTL, SFVTL, MD): Implement
+ instructions.
+ (sfnt_save_projection_vector): New argument `dual_only'. All
+ 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_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)
+ (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)
+ (sfnt_verbose, main): Make glyph instructing work.
+
+ * src/sfnt.h (SFNT_POLY_ROUND): New enumerator.
+
+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-clear-vars.mk: Handle AOSP extensions
+ LOCAL_ADDITIONAL_DEPENDENCIES,
+ LOCAL_CLANG_ASFLAGS_$(NDK_BUILD_ARCH) and LOCAL_IS_HOST_MODULE.
+
+ * doc/emacs/android.texi (Android Startup): Explain emacsclient
+ wrapper.
+
+ * java/org/gnu/emacs/EmacsView.java (EmacsView): New flag
+ `isCurrentlyTextEditor'.
+ (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.
+ (EMACS_CFLAGS): Add it.
+
+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
+
+ 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.
+
+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/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
+
+ 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.
+
+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.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-02-02 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * 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.
+ (sfnt_lookup_glyph_metrics): Allow looking up metrics without
+ scaling.
+ (struct sfnt_cvt_table): Fix type of cvt values.
+ (struct sfnt_prep_table): New structure.
+ (sfnt_read_cvt_table): Read cvt values in terms of fwords, not
+ longs (as Apple's doc seems to say).
+ (sfnt_read_fpgm_table): Fix memory allocation for font program
+ table.
+ (sfnt_read_prep_table): New function.
+ (struct sfnt_interpreter_zone): New structure.
+ (struct sfnt_interpreter_graphics_state): New fields `project',
+ `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
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+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.
+ * src/sfnt.c (TEST_STATIC): Define ARRAYELTS.
+ (sfnt_table_names): New CVT and FPGM tables.
+ (sfnt_decompose_compound_glyph, sfnt_decompose_glyph)
+ (struct sfnt_large_integer, sfnt_multiply_divide_1)
+ (sfnt_count_leading_zero_bits, sfnt_multiply_divide_2)
+ (sfnt_multiply_divide, sfnt_mul_fixed, sfnt_div_fixed)
+ (sfnt_ceil_fixed, sfnt_build_glyph_outline): Fix fixed point
+ multiplication routines on systems without 64 bit long long
+ type.
+ (SFNT_ENABLE_HINTING, 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_read_cvt_table, sfnt_test_edge, sfnt_test_raster)
+ (sfnt_read_fpgm_table, struct sfnt_unit_vector)
+ (struct sfnt_interpreter_definition)
+ (struct sfnt_interpreter_graphics_state, struct sfnt_interpreter)
+ (sfnt_div_f26dot6, sfnt_mul_f26dot6, sfnt_floor_f26dot6)
+ (sfnt_ceil_f26dot6, sfnt_round_f26dot6, sfnt_init_graphics_state)
+ (sfnt_make_interpreter, enum sfnt_interpreter_run_context)
+ (sfnt_interpret_trap, STACKSIZE, 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)
+ (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): Check in WIP hinting code.
+
+ * src/sfnt.h (enum sfnt_table): Add `cvt ' and `fpgm' tables.
+
+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.
+
+ 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.
+ * 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/Makefile.in (TIFF_CFLAGS): New variable.
+ (EMACS_CFLAGS): Use it.
+
+2023-01-28 Po Lu <luangruo@yahoo.com>
+
+ * src/image.c (syms_of_image): Fix typo.
+
+2023-01-28 Po Lu <luangruo@yahoo.com>
+
+ 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.
+ * 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.
+
+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.
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-01-28 Po Lu <luangruo@yahoo.com>
+
+ 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-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.
+
+ * 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.
+ * 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.
+
+ * 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>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ * 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
+ $(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'.
+ * 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.
+ * 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
+ 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-shared-library.mk (objname):
+ * cross/ndk-build/ndk-build-static-library.mk (objname): Avoid
+ duplicate rules by prefixing objects with module type.
+
+ * 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.
+
+ * doc/emacs/android.texi (Android File System): Document Android
+ 10 system restriction.
+
+ * java/AndroidManifest.xml.in: Target Android 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.
+
+ * 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_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
+ android_file_access_p.
+
+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:
+ * build-aux/ndk-module-extract.awk: Handle C++ modules.
+ * configure.ac: Enable libxml2 on Android.
+
+ * cross/ndk-build/Makefile.in:
+ * cross/ndk-build/ndk-build-shared-library.mk:
+ * cross/ndk-build/ndk-build-static-library.mk:
+ * cross/ndk-build/ndk-build.mk.in:
+ * cross/ndk-build/ndk-resolve.mk: Fix dependency resolution of
+ includes.
+
+ * java/org/gnu/emacs/EmacsView.java (popupMenu): Fix minimum SDK
+ 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.
+
+ * 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:
+ * src/lread.c (openp):
+ * src/process.c (allocate_pty): Use sys_faccessat.
+ * src/sysdep.c (sys_faccessat): New function.
+
+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/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.
+
+ * 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/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>
+
+ Update Android port
+ * doc/emacs/android.texi (Android Startup, Android Environment):
+ Document that restrictions on starting Emacs have been lifted.
+
+ * java/README: Document Java for Emacs developers and how the
+ Android port works.
+
+ * java/org/gnu/emacs/EmacsApplication.java (EmacsApplication)
+ (findDumpFile): New function.
+ (onCreate): Factor out dump file finding functions to there.
+
+ * 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)
+ (onCreate): Pass classpath to setEmacsParams.
+ * java/org/gnu/emacs/EmacsThread.java (EmacsThread): Make run 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/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/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>
+
+ Import gnulib modules printf-posix and vasprintf-posix
+ These are neccessary because Android's printf is missing basic format
+ modifiers such as t.
+
+ * 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/hexl.el (hexl-program):
+ * lisp/htmlfontify.el (hfy-etags-bin):
+ * lisp/ielm.el (inferior-emacs-lisp-mode):
+ * lisp/mail/rmail.el (rmail-autodetect):
+ (rmail-insert-inbox-text):
+ * lisp/org/org-ctags.el (org-ctags-path-to-ctags):
+ * lisp/progmodes/cperl-mode.el (cperl-etags):
+ * 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>
+
+ 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.
+
+ * 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.
+
+ * src/Makefile.in (JPEG_CFLAGS): New variable.
+ (EMACS_CFLAGS): Add it.
+
+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):
+ * cross/ndk-build/ndk-build-static-library.mk:
+ (ALL_OBJECT_FILES$(LOCAL_MODULE)):
+ (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.
+
+ * 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
+ 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.
+ * 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.
+
+ * 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.
+ (android_init_emacs_service): Initialize new method.
+ (android_browse_url): New function.
+
+ * src/android.h: Update prototypes.
+
+ * 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/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.
+
+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
+
+ 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.
+
+ * Makefile.in (xcompile, cross): Rename to `cross'.
+ (clean_dirs): Clean cross, not xcompile.
+
+ * 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-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):
+ * 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-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/emacs.texi (Top): Update menus.
+ * etc/MACHINES: Document Android.
+ * 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.
+ * 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)
+ (onDetachedFromWindow): When window is reattached, expose the
+ frame.
+
+ * lib/Makefile.in (VPATH):
+ (ALL_CFLAGS): Adjust for rename.
+
+ * lisp/term/android-win.el (android-clipboard-exists-p)
+ (android-get-clipboard, android-set-clipboard)
+ (android-clipboard-owner-p, android-primary-selection)
+ (android-get-clipboard-1, android-get-primary)
+ (android-selection-bounds, android-encode-select-string)
+ (gui-backend-get-selection, gui-backend-selection-exists-p)
+ (gui-backend-selection-owner-p, gui-backend-set-selection): New
+ 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.
+
+ * src/android.c (android_check_compressed_file): New function.
+ (android_open): Work around Android platform bug.
+ (sendExpose): New function.
+ (android_readdir): Set d_type if this is a directory.
+
+ * src/androidgui.h (enum android_event_type)
+ (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/androidterm.c (handle_one_android_event): Handle
+ exposures.
+ * src/androidterm.h: Update prototypes.
+ * src/emacs.c (android_emacs_init): Initialize androidselect.
+
+2023-01-24 Po Lu <luangruo@yahoo.com>
+
+ Update android port
+ * xcompile: Move to cross.
+ * cross: New directory.
+
+ 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.
+ (touch-screen-handle-scroll): Use traditional scrolling by
+ default.
+ (touch-screen-handle-touch): Adust format of
+ touch-screen-current-tool.
+ (touch-screen-track-tap): Don't print waiting for events.
+ (touch-screen-track-drag): Likewise. Also, don't call UPDATE
+ until threshold is reached.
+ (touch-screen-drag-mode-line-1, touch-screen-drag-mode-line):
+ Improve window dragging.
+
+ * 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.
+ * src/android.c (android_is_directory): New fucntion.
+ (android_fstatat): Handle directories created by
+ `android_opendir'.
+ (android_open): Return meaningful file mode.
+ (struct android_dir): New fields `next', `asset_file' and `fd'.
+ (android_opendir): Populate those fields.
+ (android_dirfd): New function.
+ (android_closedir): Close file descriptor if set.
+ (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)
+ (androidfont_has_char, androidfont_encode_char)
+ (androidfont_text_extents, androidfont_list_family): Initialize
+ font driver if necessary.
+ (init_androidfont): Don't initialize Java font if necessary.
+
+ * src/dired.c (open_directory): Return android_dirfd if
+ appropriate.
+ (directory_files_internal, file_name_completion_dirp): Implement
+ correctly for Android.
+
+ * src/fileio.c (check_mutable_filename): New function.
+ (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)
+ (Fverify_visited_file_modtime, Fset_visited_file_modtime): Check
+ that files being written to do not lie in /assets.
+
+ * 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.
+
+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.
+
+ 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.
+ * 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.
+ * java/AndroidManifest.xml.in: Add settings activity and
+ appropriate OSK adjustment mode.
+ * 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/EmacsNative.java (EmacsNative): Make all
+ event sending functions return long.
+ * java/org/gnu/emacs/EmacsPreferencesActivity.java
+ (EmacsPreferencesActivity): New class.
+ * 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)
+ (onDetachedFromWindow):
+ * java/org/gnu/emacs/EmacsWindow.java (EmacsWindow, viewLayout):
+ Implement frame resize synchronization..
+ * java/org/gnu/emacs/EmacsWindowAttachmentManager.java
+ (EmacsWindowAttachmentManager, removeWindowConsumer): Adjust
+ accordingly for changes to frame deletion behavior.
+ * lisp/frame.el (android-toggle-on-screen-keyboard)
+ (frame-toggle-on-screen-keyboard): New function.
+ * lisp/minibuffer.el (minibuffer-setup-on-screen-keyboard)
+ (minibuffer-exit-on-screen-keyboard): New functions.
+ (minibuffer-setup-hook, minibuffer-exit-hook): Add new functions
+ to hooks.
+
+ * lisp/touch-screen.el (touch-screen-relative-xy): Accept new
+ value of window `frame'. Return frame coordinates in that case.
+ (touch-screen-set-point-commands): New variable.
+ (touch-screen-handle-point-up): Respect that variable.
+ (touch-screen-track-drag): Return `no-drag' where appropriate.
+ (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.
+ (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.
+ * src/androidgui.h (struct android_any_event)
+ (struct android_key_event, struct android_configure_event)
+ (struct android_focus_event, struct android_window_action_event)
+ (struct android_crossing_event, struct android_motion_event)
+ (struct android_button_event, struct android_touch_event)
+ (struct android_wheel_event, struct android_iconify_event)
+ (struct android_menu_event): Add `serial' fields.
+
+ * 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
+
+2023-01-19 Po Lu <luangruo@yahoo.com>
+
+ 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
+ explicitly specified.
+
+ * doc/emacs/android.texi (Android): Add reference to ``Other
+ 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/EmacsContextMenu.java (inflateMenuItems):
+ * java/org/gnu/emacs/EmacsCopyArea.java (perform):
+ * java/org/gnu/emacs/EmacsDialog.java (toAlertDialog):
+ * java/org/gnu/emacs/EmacsDrawLine.java (perform):
+ * java/org/gnu/emacs/EmacsDrawRectangle.java (perform):
+ * 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/EmacsSdk7FontDriver.java (draw): Avoid
+ redundant canvas saves and restores.
+ * java/org/gnu/emacs/EmacsService.java (run):
+ * java/org/gnu/emacs/EmacsView.java (EmacsView):
+ (handleDirtyBitmap):
+ * java/org/gnu/emacs/EmacsWindow.java (changeWindowBackground)
+ (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.
+ * 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/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]):
+ ([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):
+ (widget-button-click): Improve touchscreen support.
+
+ * src/alloc.c (make_lisp_symbol): Avoid ICE on Android NDK GCC.
+ (mark_pinned_symbols): Likewise.
+
+ * src/android.c (struct android_emacs_window): New struct.
+ (window_class): New variable.
+ (android_run_select_thread): Add workaround for Android platform
+ bug.
+ (android_extract_long, android_scan_directory_tree): New
+ functions.
+ (android_file_access_p): Use those functions instead.
+ (android_init_emacs_window): New function.
+ (android_init_emacs_gc_class): Update signature of `markDirty'.
+ (android_change_gc, android_set_clip_rectangles): Tell the GC
+ whether or not clip rects were dirtied.
+ (android_swap_buffers): Do not look up method every time.
+ (struct android_dir): Adjust for new directory tree lookup.
+ (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.
+
+ * src/sfnt.c (main): Improve tests.
+
+ * src/sfntfont-android.c (sfntfont_android_put_glyphs): Fix
+ 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'.
+ (sfnt_parse_style): Append tokens to adstyle.
+ (sfnt_parse_languages): New function.
+ (sfnt_enum_font_1): Parse supported languages and adstyle.
+ (sfntfont_list_1): Handle new fields.
+ (sfntfont_text_extents): Fix uninitialized variable use.
+ (syms_of_sfntfont, mark_sfntfont): Adjust accordingly.
+
+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>
+
+ 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.
+ * java/org/gnu/emacs/EmacsView.java (EmacsView): Make
+ `bitmapDirty' a boolean.
+ (handleDirtyBitmap): Reimplement in terms of that boolean.
+ Explicitly recycle old bitmap and GC.
+ (onLayout): Fix lock up.
+ (onDetachedFromWindow): Recycle bitmap and GC.
+
+ * java/org/gnu/emacs/EmacsWindow.java (requestViewLayout):
+ Update call to explicitlyDirtyBitmap.
+
+ * 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.
+ (struct android_emacs_dialog, android_init_emacs_dialog)
+ (android_dialog_show, android_popup_dialog, init_androidmenu):
+ Implement popup dialogs on Android.
+
+ * src/androidterm.c (android_update_tools)
+ (handle_one_android_event, android_frame_up_to_date): Allow
+ 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.
+ (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.
+ (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.
+ (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.
+ (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
+ 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/display.texi (Defining Faces, Window Systems):
+ * 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/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_transform_coordinates, android_four_corners_bilinear)
+ (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.
+ (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
+ Android.
+ (Fimage_transforms_p): Implement on Android.
+
+ * src/keyboard.c (make_lispy_event, syms_of_keyboard): Handle
+ 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.
+ * 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/EmacsService.java (onCreate): Pass cache
+ directory.
+ (sync): New function.
+ * 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
+
+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'.
+ (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.
+ (struct android_menu_event, union android_event): Add new event.
+
+ * src/androidmenu.c (struct android_emacs_context_menu): New
+ structure.
+ (android_init_emacs_context_menu): Add `dismiss' method.
+ (struct android_dismiss_menu_data): New structure.
+ (android_dismiss_menu, android_process_events_for_menu): New
+ functions.
+ (android_menu_show): Set an actual item ID.
+ (popup_activated): Define when stubify as well.
+ (Fmenu_or_popup_active_p): New function.
+ (syms_of_androidmenu): New function.
+
+ * 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.
+
+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/org/gnu/emacs/EmacsActivity.java (EmacsActivity): Make
+ focusedActivities public.
+ * java/org/gnu/emacs/EmacsContextMenu.java (EmacsContextMenu):
+ New class.
+ * 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
+ highlight.
+ (onCreateContextMenu, popupMenu, cancelPopupMenu): New
+ functions.
+ * java/org/gnu/emacs/EmacsWindow.java (EmacsWindow): 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_select): Release select thread on semaphores instead of
+ signals to avoid one nasty race on SIGUSR2 delivery.
+ (android_init_emacs_service): Initialize new method.
+ (android_create_window): Handle CW_OVERRIDE_REDIRECT.
+ (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)
+ (unwind_create_tip_frame, android_create_tip_frame)
+ (android_hide_tip, compute_tip_xy, Fx_show_tip, Fx_hide_tip)
+ (syms_of_androidfns): Implement tooltips and iconification
+ reporting.
+
+ * src/androidgui.h (enum android_window_value_mask): Add
+ CWOverrideRedirect.
+ (struct android_set_window_attributes): Add `override_redirect'.
+ (ANDROID_IS_MODIFIER_KEY): Recognize Caps Lock.
+
+ * src/androidmenu.c (struct android_emacs_context_menu): New
+ struct.
+ (android_init_emacs_context_menu, android_unwind_local_frame)
+ (android_push_local_frame, android_menu_show, init_androidmenu):
+ New functions.
+
+ * src/androidterm.c (handle_one_android_event): Fix NULL pointer
+ dereference.
+ (android_fullscreen_hook): Handle fullscreen correctly.
+ (android_draw_box_rect): Fix top line.
+ (get_keysym_name): Implement function.
+ (android_create_terminal): Remove scroll bar stubs and add menu
+ hook.
+
+ * src/androidterm.h: Update prototypes.
+ * src/emacs.c (android_emacs_init): Initialize androidmenu.c.
+ * xcompile/Makefile.in: Fix clean rules.
+
+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
+ 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.
+ * 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/README: Adjust README.
+
+ Check in gnulib with Android patches
+ * 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.
+
+ * java/AndroidManifest.xml: Remove file that is now generated.
+
+ * 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
+ compiler compiles for. Generate java/AndroidManifest.xml from
+ java/AndroidManifest.xml.in. Allow using Zlib on Android.
+
+ * java/AndroidManifest.xml.in: New file. Use the minimum SDK
+ detected by configure.
+
+ * 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'.
+
+ * 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'.
+ (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.
+ (handleDirtyBitmap): Copy over the contents from the old bitmap.
+ (explicitlyDirtyBitmap): New function.
+ (onLayout): Don't dirty bitmap if unnecessary.
+ (damageRect, swapBuffers): Don't synchronize so hard.
+ (onTouchEvent): Call window.onTouchEvent instead.
+ (moveChildToBack, raise, lower): New functions.
+
+ * java/org/gnu/emacs/EmacsWindow.java (Coordinate): New
+ subclass.
+ (pointerMap, isMapped, isIconified, dontFocusOnMap)
+ (dontAcceptFocus): New fields.
+ (EmacsWindow): Don't immediately register unmapped window.
+ (viewLayout): Send configure event outside the lock.
+ (requestViewLayout): Explicitly dirty the bitmap.
+ (mapWindow): Register the window now. Respect dontFocusOnMap.
+ (unmapWindow): Unregister the window now.
+ (figureChange, onTouchEvent): New functions.
+ (onSomeKindOfMotionEvent): Handle scroll wheel events.
+ (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.
+ (copyWindows): New function.
+
+ * lisp/frame.el (frame-geometry, frame-edges)
+ (mouse-absolute-pixel-position, set-mouse-absolute-pixel-position)
+ (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.
+
+ * src/android.c (struct android_emacs_service): New methods
+ `ringBell', `queryTree', `getScreenWidth', `getScreenHeight',
+ and `detectMouse'.
+ (struct android_event_queue, android_init_events)
+ (android_next_event, android_write_event): Remove write limit.
+ (android_file_access_p): Handle directories correcty.
+ (android_close): Fix coding style.
+ (android_fclose): New function.
+ (android_init_emacs_service): Initialize new methods.
+ (android_reparent_window): Implement function.
+ (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_set_dont_focus_on_map, android_set_dont_accept_focus):
+ New functions.
+ (struct android_dir): New structure.
+ (android_opendir, android_readdir, android_closedir): New
+ functions.
+ (emacs_abort): Implement here on Android and poke debuggerd into
+ generating a tombstone.
+
+ * src/android.h: Update prototypes.
+
+ * src/androidfns.c (android_set_parent_frame): New function.
+ (android_default_font_parameter): Use sane font size by default.
+ (Fx_display_pixel_width, Fx_display_pixel_height)
+ (Fx_display_mm_width, Fx_display_mm_height)
+ (Fx_display_monitor_attributes_list): Rename to start with
+ `android-'. Implement. Fiddle with documentation to introduce
+ Android specific nuances.
+ (Fandroid_display_monitor_attributes_list): New function.
+ (Fx_frame_geometry, frame_geometry): New function.
+ (Fandroid_frame_geometry): Implement correctly.
+ (Fx_frame_list_z_order): Rename to start with `android-'.
+ (android_frame_list_z_order, Fandroid_frame_list_z_order):
+ Implement.
+ (Fx_frame_restack): Rename to start with `android-'.
+ (Fandroid_frame_restack): ``Implement''.
+ (Fx_mouse_absolute_pixel_position): Rename to start with
+ `android-'.
+ (Fandroid_mouse_absolute_pixel_position): ``Implement''.
+ (Fx_set_mouse_absolute_pixel_position): Rename to start with
+ `android-'.
+ (Fandroid_set_mouse_absolute_pixel_position): ``Implement''.
+ (Fandroid_detect_mouse): New function.
+ (android_set_menu_bar_lines): Use FRAME_ANDROID_DRAWABLE when
+ clearing area.
+ (android_set_no_focus_on_map, android_set_no_accept_focus): New
+ functions.
+ (android_frame_parm_handlers): Register new frame parameter
+ handlers.
+ (syms_of_androidfns): Update appropriately.
+
+ * 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)
+ (struct android_iconify_event): New structures.
+ (union android_event): Add new events.
+
+ * 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
+ 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
+ touch events.
+ (android_read_socket): Implement pending-autoraise-frames.
+ (android_frame_up_to_date): Implement bell ringing.
+ (android_buffer_flipping_unblocked_hook): Check if a buffer flip
+ is required before doing the flip.
+ (android_focus_frame, android_frame_highlight)
+ (android_frame_unhighlight): New function.
+ (android_frame_rehighlight): Implement functions.
+ (android_iconify_frame): Always display error.
+ (android_set_alpha): Update commentary.
+ (android_free_frame_resources): Free frame touch points.
+ (android_scroll_run, android_flip_and_flush)
+ (android_clear_rectangle, android_draw_fringe_bitmap)
+ (android_draw_glyph_string_background, android_fill_triangle)
+ (android_clear_point, android_draw_relief_rect)
+ (android_draw_box_rect, android_draw_glyph_string_bg_rect)
+ (android_draw_image_foreground, android_draw_stretch_glyph_string)
+ (android_draw_underwave, android_draw_glyph_string_foreground)
+ (android_draw_composite_glyph_string_foreground)
+ (android_draw_glyphless_glyph_string_foreground)
+ (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.
+
+ * src/androidterm.h (struct android_touch_point): New structure.
+ (struct android_output): New fields.
+ (FRAME_ANDROID_NEED_BUFFER_FLIP): New macro.
+
+ * 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.
+
+ * src/dispnew.c (Fopen_termscript):
+ * src/fileio.c (fclose_unwind): Use emacs_fclose.
+ (Faccess_file): Call android_file_access_p.
+ (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.
+ (Fopen_dribble_file): Use emacs_fclose.
+
+ * src/lisp.h: New prototype emacs_fclose.
+
+ * src/lread.c (close_infile_unwind): Use 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.
+ (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_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.
+
+ * 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
+ * configure.ac (ANDROID_CFLAGS): Add sfnt-related font objects
+ to ANDROID_OBJ when not building stubs.
+ * lisp/startup.el (android-fonts-enumerated): New variable.
+ (normal-top-level): Set it. Also enumerate fonts as early as
+ possible upon startup.
+
+ * src/alloc.c (cleanup_vector): Only finalize Android font
+ entities.
+ (garbage_collect): Mark sfntfont.c.
+
+ * src/android.c (struct android_emacs_drawable): New field
+ `damage_rect'.
+ (android_init_emacs_drawable): Initialize
+ Lorg/gnu/emacs/EmacsDrawable;#damageRect(Landroid/graphics/rect;)V.
+ (android_create_gc): Initialize cached GC fields.
+ (android_free_gc): Free cached GC clip rectangles.
+ (android_change_gc): Cache fields as appropriate.
+ (android_set_clip_rectangles): Set cached clip rectangles for
+ easy access from C.
+ (android_get_gc_values): Use cached values.
+ (android_get_image): Remove obsolete comment.
+ (android_lock_bitmap, android_damage_window): New functions that
+ don't parallel anything on X.
+
+ * src/android.h: Update prototypes.
+
+ * src/androidfns.c (android_default_font_parameter): Set Droid
+ Sans Mono as the default monospace font.
+ (Fx_create_frame): Register the sfntfont driver.
+
+ * src/androidgui.h (struct android_gc): Add C side caches for
+ clip rectangles and the foreground and background colors.
+
+ * src/androidterm.h: Update prototypes.
+
+ * src/dispextern.h (struct gui_box): New struct.
+ (gui_union_rectangles): New function.
+
+ * src/emacs.c (android_emacs_init): Initialize Android font
+ stuff late.
+ * src/font.c (font_make_entity): Clear `is_android' field on
+ Android.
+ (font_make_entity_android): Set `is_android' field.
+ * src/font.h (struct font_entity): New field `is_android'.
+
+ * src/print.c (print_vectorlike): Don't print private data,
+ which could include Lisp_Misc.
+
+ * src/sfnt.c (sfnt_read_cmap_format_0, sfnt_read_cmap_format_2)
+ (sfnt_read_cmap_format_4, sfnt_read_cmap_format_6)
+ (sfnt_read_cmap_format_8, sfnt_read_cmap_format_12): Remove
+ buggy pragmas.
+ (sfnt_lookup_glyph_4_1): New function.
+ (sfnt_lookup_glyph_4): Handle malformed lookup tables found on
+ Android.
+ (sfnt_lookup_glyph): Fix overflow problems in glyph checks.
+ (sfnt_read_glyph): Handle empty glyphs. This implements some
+ behavior which everyone else seems to as well, but I can't find
+ documented in the TrueType Reference Manual.
+ (sfnt_free_glyph): Export correctly.
+ (sfnt_transform_coordinates): Make faster.
+ (sfnt_lerp_half): Fix lerping in some cases.
+ (sfnt_decompose_glyph): Handle empty glyphs correctly. Close
+ contours manually instead of waiting for the edge building
+ process to do that. This lets curves be handled correctly.
+ (struct sfnt_build_glyph_outline_context): Move internal struct
+ back to sfnt.c.
+ (sfnt_build_append): Fix detection of initial entry.
+ (sfnt_curve_to_and_build_1): Fix De Casteljau implementation.
+ (sfnt_curve_to_and_build): Use fixed point arithmetic to scale
+ outlines.
+ (sfnt_build_glyph_outline): Clear reference counts. Use fixed
+ point arithmetic.
+ (sfnt_prepare_raster): Align rasters to 4 bytes,
+ SFNT_POLY_ALIGNMENT. Fix calculation of offx and offy.
+ (sfnt_step_edge_by): Step edge by previously computed step_x.
+ (sfnt_build_outline_edges): Adjust for already closed contours.
+ Ignore edges abandoned after grid fit. Also precompute step_x
+ to avoid multiplication on each span rastered.
+ (sfnt_poly_edges): Improve alignment.
+ (sfnt_fill_span): Rewrite to avoid control flow in while loop.
+ (sfnt_poly_span): Remove unnecessary code.
+ (sfnt_raster_glyph_outline): Use raster stride instead of width.
+ (sfnt_test_edge, sfnt_test_raster, main): Improve debugging
+ code.
+
+ * src/sfnt.h (struct sfnt_glyph_outline): Add refcount field to
+ outline.
+ (struct sfnt_build_glyph_outline_context): Remove private
+ struct.
+ (struct sfnt_raster): Add refcount field to raster.
+ (struct sfnt_edge): Improve doc. Add `source_x' field used when
+ built with TEST.
+ (SFNT_CEIL_FIXED): New macro.
+
+ * src/sfntfont-android.c (sfntfont_android_saturate32)
+ (sfntfont_android_scale32, sfntfont_android_mul8x2)
+ (sfntfont_android_blend, U255TO256)
+ (sfntfont_android_composite_bitmap, sfntfont_android_union_boxes)
+ (sfntfont_android_put_glyphs, sfntfont_android_get_cache): New
+ functions.
+ (android_sfntfont_driver): New font driver.
+ (Fandroid_enumerate_fonts): New function.
+ (syms_of_sfntfont_android_for_pdumper, init_sfntfont_android)
+ (syms_of_sfntfont_android): Initialize default fonts, special
+ family mapping and font driver.
+ * src/sfntfont.c (struct sfnt_font_desc): New fields
+ `char_cache', `cmap_invalid' and `subtable'.
+ (sfnt_setup_coding_system): Improve commentary. Add default
+ branch. Fix return value.
+ (sfnt_safe_encode_coding_object_1)
+ (sfnt_safe_encode_coding_object_2):
+ (sfnt_safe_encode_coding_object): Use decode_coding_object
+ instead of encode_coding_object.
+ (sfnt_decode_font_string): Adjust for rename.
+ (sfnt_decode_foundry_name): New function.
+ (sfnt_weight_descriptions, sfnt_slant_descriptions)
+ (sfnt_width_descriptions): Fix definitions.
+ (sfnt_parse_style): Make function work.
+ (sfnt_enum_font): Initialize designer, char-cache and subtable
+ platform ID.
+ (sfntfont_charset_for_name, mark_sfntfont)
+ (sfntfont_charset_for_cmap): New functions.
+ (syms_of_sfntfont): New variable `sfnt-default-family-alist'.
+
+ * src/sfntfont.h (_SFNTFONT_H_): Update prototypes.
+
+ * src/xdisp.c (gui_union_rectangles): New function.
+
+2023-01-08 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+ * configure.ac (ANDROID_OBJS): Add sfntfont files.
+
+ Check in new files
+ * src/sfnt.h:
+ * src/sfntfont-android.c:
+ * src/sfntfont.c:
+ * src/sfntfont.h: New files.
+
+2023-01-08 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ Note that the port currently does not work as of this check-in.
+
+ * src/android.c (android_change_gc): Fix situations where clip
+ rects are cleared.
+ (android_create_pixmap_from_bitmap_data): Fix bitmap data
+ iteration.
+ * src/androidfns.c (Fx_show_tip, Fx_hide_tip): Remove annoying
+ errors.
+
+ * src/androidgui.h (enum android_event_type):
+ (struct android_crossing_event):
+ (struct android_motion_event):
+ (struct android_button_event):
+ (union android_event): New crossing, motion and button events.
+
+ * src/androidterm.c (android_note_mouse_movement)
+ (mouse_or_wdesc_frame, android_construct_mouse_click)
+ (handle_one_android_event, android_mouse_position)
+ (android_wait_for_event, android_set_window_size_1)
+ (android_bitmap_icon, android_free_frame_resources)
+ (syms_of_androidterm): New functions. Handle crossing, motion
+ and button events.
+
+ * src/androidterm.h (struct android_display_info): New field
+ `last_mouse_movement_time'.
+ (struct android_output): Remove unused `need_buffer_flip' field.
+
+ * src/emacs.c (android_emacs_init): Initialize sfntfont.
+ * src/frame.c (syms_of_frame): Set frame_inhibit_implied_resize
+ to some reasonable value.
+ * src/frame.h (GCALIGNED_STRUCT): Set wait_event_type on
+ Android.
+
+ * src/sfnt.c (eassert):
+ (TEST_STATIC):
+ (available):
+ (enum sfnt_table):
+ (sfnt_table_names):
+ (SFNT_ENDOF):
+ (struct sfnt_table_directory):
+ (enum sfnt_scaler_type):
+ (sfnt_coerce_fixed):
+ (struct sfnt_hhea_table):
+ (struct sfnt_cmap_table):
+ (enum sfnt_platform_id):
+ (enum sfnt_unicode_platform_specific_id):
+ (enum sfnt_macintosh_platform_specific_id):
+ (enum sfnt_microsoft_platform_specific_id):
+ (struct sfnt_cmap_encoding_subtable):
+ (struct sfnt_cmap_encoding_subtable_data):
+ (struct sfnt_cmap_format_0):
+ (struct sfnt_cmap_format_2_subheader):
+ (struct sfnt_cmap_format_2):
+ (struct sfnt_cmap_format_4):
+ (struct sfnt_cmap_format_6):
+ (struct sfnt_cmap_format_8_or_12_group):
+ (struct sfnt_cmap_format_8):
+ (struct sfnt_cmap_format_12):
+ (struct sfnt_maxp_table):
+ (struct sfnt_loca_table_short):
+ (struct sfnt_loca_table_long):
+ (struct sfnt_glyf_table):
+ (struct sfnt_simple_glyph):
+ (struct sfnt_compound_glyph_component):
+ (struct sfnt_compound_glyph):
+ (struct sfnt_glyph):
+ (sfnt_read_table_directory):
+ (file):
+ (sfnt_read_cmap_table):
+ (sfnt_read_head_table):
+ (success):
+ (sfnt_read_hhea_table):
+ (sfnt_read_loca_table_short):
+ (sfnt_read_loca_table_long):
+ (sfnt_read_maxp_table):
+ (sfnt_read_glyf_table):
+ (sfnt_read_compound_glyph):
+ (sfnt_read_glyph):
+ (struct sfnt_point):
+ (sfnt_expand_compound_glyph_context):
+ (sfnt_decompose_compound_glyph):
+ (struct sfnt_glyph_outline):
+ (enum sfnt_glyph_outline_flags):
+ (struct sfnt_build_glyph_outline_context):
+ (sfnt_build_append):
+ (sfnt_build_glyph_outline):
+ (struct sfnt_raster):
+ (struct sfnt_edge):
+ (sfnt_prepare_raster):
+ (sfnt_build_outline_edges):
+ (sfnt_raster_glyph_outline): Move structures to sfnt.h.
+
+ (struct sfnt_long_hor_metric):
+ (struct sfnt_hmtx_table):
+ (struct sfnt_glyph_metrics):
+ (sfnt_read_hmtx_table):
+ (sfnt_lookup_glyph_metrics):
+ (sfnt_read_name_table):
+ (sfnt_find_name):
+ (sfnt_read_meta_table):
+ (sfnt_find_metadata):
+ (sfnt_test_edge_ignore): New functions.
+ (main): Add new tests.
+ * src/xdisp.c (redisplay_tool_bar):
+
+2023-01-08 Po Lu <luangruo@yahoo.com>
+
+ Delete unused files
+ * java/org/gnu/emacs/EmacsPaintQueue.java
+ * java/org/gnu/emacs/EmacsPaintReq.java: Remove files.
+
+ Update Java part of Android port
+ * java/org/gnu/emacs/EmacsCopyArea.java (EmacsCopyArea, perform)
+ (paintTo):
+ * java/org/gnu/emacs/EmacsDrawLine.java (EmacsDrawLine):
+ * java/org/gnu/emacs/EmacsDrawPoint.java (EmacsDrawPoint):
+ * java/org/gnu/emacs/EmacsDrawRectangle.java (EmacsDrawRectangle)
+ (paintTo):
+ * java/org/gnu/emacs/EmacsDrawable.java (EmacsDrawable):
+ * java/org/gnu/emacs/EmacsFillPolygon.java (EmacsFillPolygon):
+ * java/org/gnu/emacs/EmacsFillRectangle.java
+ (EmacsFillRectangle):
+ * java/org/gnu/emacs/EmacsFontDriver.java (EmacsFontDriver):
+ * java/org/gnu/emacs/EmacsGC.java (EmacsGC):
+ * java/org/gnu/emacs/EmacsNative.java (EmacsNative):
+ * java/org/gnu/emacs/EmacsPixmap.java (EmacsPixmap):
+ * java/org/gnu/emacs/EmacsSdk23FontDriver.java
+ (EmacsSdk23FontDriver):
+ * java/org/gnu/emacs/EmacsSdk7FontDriver.java
+ (EmacsSdk7FontDriver, textExtents1, textExtents, draw):
+ * java/org/gnu/emacs/EmacsService.java (EmacsService, copyArea):
+ * java/org/gnu/emacs/EmacsSurfaceView.java (EmacsSurfaceView):
+ * java/org/gnu/emacs/EmacsView.java (EmacsView, onLayout)
+ (onFocusChanged):
+ * java/org/gnu/emacs/EmacsWindow.java (EmacsWindow, run)
+ (resizeWindow, lockCanvas, getBitmap, onKeyDown, onKeyUp)
+ (onActivityDetached): Move rendering to main thread. Make
+ drawing operations completely static.
+
+ Check in new file androidmenu.c
+ * src/androidmenu.c: New file.
+
+2023-01-07 Po Lu <luangruo@yahoo.com>
+
+ Check in new file sfnt.c
+ * src/sfnt.c (xmalloc, xrealloc, xfree, eassert, MIN)
+ (sfnt_table_names, SFNT_ENDOF, struct sfnt_table_directory)
+ (enum sfnt_scaler_type, sfnt_coerce_fixed, struct sfnt_hhea_table)
+ (struct sfnt_cmap_table, enum sfnt_platform_id)
+ (enum sfnt_unicode_platform_specific_id)
+ (enum sfnt_macintosh_platform_specific_id)
+ (enum sfnt_microsoft_platform_specific_id)
+ (struct sfnt_cmap_encoding_subtable)
+ (struct sfnt_cmap_encoding_subtable_data)
+ (struct sfnt_cmap_format_0, struct sfnt_cmap_format_2_subheader)
+ (struct sfnt_cmap_format_2, struct sfnt_cmap_format_4)
+ (struct sfnt_cmap_format_6, struct sfnt_cmap_format_8_or_12_group)
+ (struct sfnt_cmap_format_8, struct sfnt_cmap_format_12)
+ (struct sfnt_maxp_table, struct sfnt_loca_table_short)
+ (struct sfnt_loca_table_long, struct sfnt_glyf_table)
+ (struct sfnt_simple_glyph, struct sfnt_compound_glyph_component)
+ (struct sfnt_compound_glyph, struct sfnt_glyph, _sfnt_swap16)
+ (_sfnt_swap32, sfnt_swap16, sfnt_find_table)
+ (sfnt_read_cmap_format_0, sfnt_read_cmap_format_2)
+ (sfnt_read_cmap_format_4, sfnt_read_cmap_format_6)
+ (sfnt_read_cmap_format_8, sfnt_read_cmap_format_12)
+ (sfnt_read_cmap_table_1, sfnt_read_cmap_table, sfnt_lookup_glyph_0)
+ (sfnt_lookup_glyph_2, sfnt_bsearch_above, sfnt_compare_uint16)
+ (sfnt_lookup_glyph_4, sfnt_lookup_glyph_6, sfnt_lookup_glyph_8)
+ (sfnt_lookup_glyph_12, sfnt_lookup_glyph, sfnt_read_head_table)
+ (sfnt_read_hhea_table, sfnt_read_loca_table_short)
+ (sfnt_read_loca_table_long, sfnt_read_maxp_table)
+ (sfnt_read_glyf_table, sfnt_read_simple_glyph)
+ (sfnt_read_compound_glyph, sfnt_read_glyph, sfnt_free_glyph)
+ (struct sfnt_point, sfnt_transform_coordinates)
+ (struct sfnt_compound_glyph_context)
+ (sfnt_expand_compound_glyph_context, sfnt_round_fixed)
+ (sfnt_decompose_compound_glyph, sfnt_lerp_half)
+ (sfnt_decompose_glyph, struct sfnt_glyph_outline)
+ (enum sfnt_glyph_outline_flags)
+ (struct sfnt_build_glyph_outline_context, sfnt_build_append)
+ (sfnt_move_to_and_build, sfnt_line_to_and_build, sfnt_mul_fixed)
+ (sfnt_div_fixed, sfnt_ceil_fixed, sfnt_floor_fixed)
+ (sfnt_curve_is_flat, sfnt_curve_to_and_build_1)
+ (sfnt_curve_to_and_build, sfnt_build_glyph_outline)
+ (struct sfnt_raster, struct sfnt_edge, sfnt_poly_coverage)
+ (sfnt_poly_grid_ceil, sfnt_prepare_raster, sfnt_step_edge_by)
+ (sfnt_build_outline_edges, sfnt_compare_edges, sfnt_poly_edges)
+ (sfnt_saturate_short, sfnt_fill_span, sfnt_poly_span)
+ (sfnt_raster_span, sfnt_raster_edge, sfnt_raster_glyph_outline)
+ (struct sfnt_long_hor_metric, struct sfnt_hmtx_table)
+ (struct sfnt_glyph_metrics, sfnt_read_hmtx_table)
+ (sfnt_lookup_glyph_metrics, 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, sfnt_test_raster, main): Check in
+ 5000-line-long file written by me for reading TrueType and
+ OpenType fonts with TrueType outlines.
+
+2023-01-02 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2023-01-02 Po Lu <luangruo@yahoo.com>
+
+ Update Android port
+ * Makefile.in (java): Depend on info.
+ (MAKEFILE_NAME):
+ (config.status): Remove unneeded changes.
+ * configure.ac (BUILD_DETAILS, ANDROID_STUBIFY): Don't require a
+ C++ compiler on Android.
+ * java/AndroidManifest.xml: <EmacsActivity>: Set launchMode
+ appropriately. <EmacsMultitaskActivity>: New activity.
+ * java/Makefile.in (CROSS_BINS): Add EmacsClient.
+ * java/org/gnu/emacs/EmacsActivity.java (EmacsActivity)
+ (onCreate): Use the window attachment manager.
+ * java/org/gnu/emacs/EmacsCopyArea.java (EmacsCopyArea)
+ (paintTo): Implement clip masks correctly.
+ * java/org/gnu/emacs/EmacsDrawRectangle.java (getRect, paintTo):
+ Fix damage tracking rectangles.
+ * java/org/gnu/emacs/EmacsFontDriver.java (FontSpec, toString):
+ New function.
+ (FontMetrics, EmacsFontDriver): Fix signature of textExtents.
+ * java/org/gnu/emacs/EmacsMultitaskActivity.java
+ (EmacsMultitaskActivity): New file.
+ * java/org/gnu/emacs/EmacsNative.java (EmacsNative): New
+ functions sendFocusIn, sendFocusOut, sendWindowAction.
+ * java/org/gnu/emacs/EmacsPaintQueue.java (run): Fix clipping
+ handling.
+ * java/org/gnu/emacs/EmacsPixmap.java (EmacsPixmap): Add
+ constructor for mutable pixmaps.
+ * java/org/gnu/emacs/EmacsSdk23FontDriver.java
+ (EmacsSdk23FontDriver): New file.
+ * java/org/gnu/emacs/EmacsSdk7FontDriver.java
+ (EmacsSdk7FontDriver, Sdk7Typeface, Sdk7FontEntity, Sdk7FontObject)
+ (checkMatch, hasChar, encodeChar): Implement text display and
+ fix font metrics semantics.
+
+ * java/org/gnu/emacs/EmacsService.java (EmacsService): Remove
+ availableChildren.
+ (getLibraryDirectory, onCreate): Pass pixel density to Emacs.
+ (clearArea): Fix arguments. Switch to using the window
+ attachment manager.
+ * java/org/gnu/emacs/EmacsSurfaceView.java (surfaceChanged)
+ (surfaceCreated): Flip buffers on surface attachment.
+ * java/org/gnu/emacs/EmacsView.java (EmacsView, swapBuffers):
+ New argument FORCE. Always swap if it is true.
+ (onKeyMultiple, onFocusChanged): New functions.
+
+ * java/org/gnu/emacs/EmacsWindow.java (EmacsWindow, destroyHandle)
+ (run): Switch to using the window attachment manager.
+ * java/org/gnu/emacs/EmacsWindowAttachmentManager.java
+ (EmacsWindowAttachmentManager): New file.
+
+ * lisp/cus-edit.el (custom-button, custom-button-mouse)
+ (custom-button-pressed):
+ * lisp/faces.el (tool-bar): Define faces correctly on Android.
+ * src/android.c (struct android_emacs_pixmap): Add mutable
+ constructor.
+ (struct android_emacs_drawable): New structure.
+ (android_write_event): Check if event queue hasn't yet been
+ initialized.
+ (android_select): Set errno to EINTR if pselect fails.
+ (android_close): Remove unused debugging code.
+ (android_get_home_directory): New function.
+ (Java_org_gnu_emacs_EmacsNative_setEmacsParams): Set pixel
+ density and compute game path.
+ (android_init_emacs_drawable): New function.
+ (Java_org_gnu_emacs_EmacsNative_sendKeyPress): New argument
+ `unicode_char'. Pass it in events.
+ (Java_org_gnu_emacs_EmacsNative_sendKeyRelease): Likewise.
+ (Java_org_gnu_emacs_EmacsNative_sendFocusIn)
+ (Java_org_gnu_emacs_EmacsNative_sendFocusOut)
+ (Java_org_gnu_emacs_EmacsNative_sendWindowAction): New
+ functions.
+ (android_resolve_handle): Export function.
+ (android_change_gc): Clear clip rects under the right
+ circumstances. Set right clip mask field.
+ (android_create_pixmap_from_bitmap_data): Use correct alpha
+ channels.
+ (android_create_pixmap): Create mutable pixmap and avoid
+ redundant color array allocation.
+ (android_create_bitmap_from_data, android_create_image)
+ (android_destroy_image, android_put_pixel, android_get_pixel)
+ (android_get_image, android_put_image, faccessat): New
+ functions.
+
+ * src/android.h: Update prototypes.
+
+ * src/androidfns.c (android_default_font_parameter): Prefer
+ monospace to Droid Sans Mono.
+ * src/androidfont.c (struct android_emacs_font_driver): New
+ method `draw'.
+ (struct android_emacs_font_spec): New field `dpi'.
+ (struct androidfont_info): Add font metrics cache.
+ (android_init_font_driver, android_init_font_spec): Adjust
+ accordingly.
+ (androidfont_from_lisp, androidfont_from_java): Handle new
+ fields.
+ (androidfont_draw): Implement function.
+ (androidfont_open_font): Set pixel size correctly.
+ (androidfont_close_font): Free metrics cache.
+ (androidfont_cache_text_extents)
+ (androidfont_check_cached_extents): New functions.
+ (androidfont_text_extents): Cache glyph metrics somewhere for
+ future use.
+ (androidfont_list_family): Implement function.
+
+ * src/androidgui.h (enum android_event_type): New focus and
+ window action events.
+ (enum android_modifier_mask): New masks.
+ (struct android_key_event): New field `unicode_char'.
+ (ANDROID_IS_MODIFIER_KEY): Newmacro.
+ (struct android_focus_event, struct
+ android_window_action_event): New structs.
+ (union android_event): Add new fields.
+ (enum android_image_format, struct android_image): New enums and
+ structs.
+
+ * src/androidterm.c (android_android_to_emacs_modifiers)
+ (android_emacs_to_android_modifiers, android_lower_frame)
+ (android_raise_frame, android_new_focus_frame)
+ (android_focus_changed, android_detect_focus_change): New
+ functions.
+ (handle_one_android_event): Implement focus and key event
+ handling.
+ (android_frame_rehighlight): New function.
+ (android_frame_raise_lower): Implement accordingly.
+ (android_make_frame_invisible): Clear highlight_frame if
+ required.
+ (android_free_frame_resources): Clear x_focus_event_frame if
+ required.
+ (android_draw_fringe_bitmap, android_draw_image_foreground)
+ (android_draw_image_foreground_1)
+ (android_draw_image_glyph_string): Remove unnecessary code.
+ (android_create_terminal, android_term_init): Set the baud rate
+ to something sensible.
+ * src/androidterm.h (struct android_bitmap_record): Make
+ structure the same as on X.
+ (struct android_display_info): New focus tracking fields.
+ (struct android_output): Likewise.
+ * src/dispextern.h (struct image): Add ximg and mask_img on
+ Android.
+
+ * src/emacs.c (android_emacs_init): Fix argc sorting iteration.
+
+ * src/fileio.c (user_homedir):
+ (get_homedir): Implement correctly on Android.
+
+ * src/font.h (PT_PER_INCH): Define correctly on Android.
+
+ * src/fringe.c (X, swap_nibble, init_fringe_bitmap): Swap fringe
+ bitmaps correctly on Android.
+
+ * src/image.c (GET_PIXEL, image_create_bitmap_from_data)
+ (image_create_bitmap_from_file, free_bitmap_record)
+ (image_unget_x_image_or_dc, struct image_type)
+ (prepare_image_for_display, image_clear_image_1)
+ (image_size_in_bytes, x_check_image_size)
+ (x_create_x_image_and_pixmap, x_destroy_x_image)
+ (image_check_image_size, image_create_x_image_and_pixmap_1)
+ (image_destroy_x_image, gui_put_x_image, image_put_x_image)
+ (image_get_x_image, image_unget_x_image)
+ (Create_Pixmap_From_Bitmap_Data, image_pixmap_draw_cross)
+ (MaskForeground, image_types, syms_of_image): Implement all of
+ the above on Android in terms of an API very similar to X.
+
+ * src/keyboard.c (FUNCTION_KEY_OFFSET, lispy_function_keys):
+ Define on Android to something sensible.
+
+ * src/lread.c (build_load_history): Fix problem.
+
+2022-12-31 Po Lu <luangruo@yahoo.com>
+
+ Merge remote-tracking branch 'origin/master' into feature/android
+
+2022-12-31 Po Lu <luangruo@yahoo.com>
+
+ Bring up the Android operating system and its window system
+ * .dir-locals.el (c-mode): Add ANDROID_EXPORT noise macro.
+ * .gitignore: Add new files to ignore.
+ * Makefile.in: Adjust for Android.
+ * admin/merge-gnulib: Add new warning.
+ * configure.ac: Detect Android. Run cross-configuration for
+ Android when appropriate.
+
+ * etc/DEBUG: Document how to debug Emacs on Android.
+
+ * java/AndroidManifest.xml:
+ * java/Makefile.in:
+ * java/README:
+ * java/debug.sh:
+ * java/org/gnu/emacs/EmacsActivity.java (EmacsActivity):
+ * java/org/gnu/emacs/EmacsApplication.java (EmacsApplication):
+ * java/org/gnu/emacs/EmacsCopyArea.java (EmacsCopyArea):
+ * java/org/gnu/emacs/EmacsDrawLine.java (EmacsDrawLine):
+ * java/org/gnu/emacs/EmacsDrawPoint.java (EmacsDrawPoint):
+ * java/org/gnu/emacs/EmacsDrawRectangle.java
+ (EmacsDrawRectangle):
+ * java/org/gnu/emacs/EmacsDrawable.java (EmacsDrawable):
+ * java/org/gnu/emacs/EmacsFillPolygon.java (EmacsFillPolygon):
+ * java/org/gnu/emacs/EmacsFillRectangle.java
+ (EmacsFillRectangle):
+ * java/org/gnu/emacs/EmacsFontDriver.java (EmacsFontDriver):
+ * java/org/gnu/emacs/EmacsGC.java (EmacsGC):
+ * java/org/gnu/emacs/EmacsHandleObject.java (EmacsHandleObject):
+ * java/org/gnu/emacs/EmacsNative.java (EmacsNative):
+ * java/org/gnu/emacs/EmacsPaintQueue.java (EmacsPaintQueue):
+ * java/org/gnu/emacs/EmacsPaintReq.java (EmacsPaintReq):
+ * java/org/gnu/emacs/EmacsPixmap.java (EmacsPixmap):
+ * java/org/gnu/emacs/EmacsSdk7FontDriver.java
+ (EmacsSdk7FontDriver):
+ * java/org/gnu/emacs/EmacsService.java (class Holder<T>)
+ (EmacsService):
+ * java/org/gnu/emacs/EmacsSurfaceView.java (EmacsSurfaceView):
+ * java/org/gnu/emacs/EmacsThread.java (EmacsThread):
+ * java/org/gnu/emacs/EmacsView.java (EmacsView):
+ * java/org/gnu/emacs/EmacsWindow.java (EmacsWindow): New files
+ and classes.
+
+ * lib-src/Makefile.in (srcdir):
+ * lib/Makefile.in (VPATH):
+ (HAVE_NATIVE_COMP):
+ (libgnu_a_SOURCES):
+ (DEPFLAGS): Configure correctly for cross-compiling.
+
+ * lib/faccessat.c:
+ * lib/fpending.c (__fpending):
+ * lib/open.c:
+ * lib/unistd.c (_GL_UNISTD_INLINE): Temporary adjustments to
+ gnulib.
+
+ * lisp/frame.el (display-graphic-p):
+ (display-screens):
+ (display-pixel-height):
+ (display-pixel-width):
+ (display-mm-height):
+ (display-mm-width):
+ (display-backing-store):
+ (display-save-under):
+ (display-planes):
+ (display-color-cells):
+ (display-visual-class): Adjust for new window system `android'.
+
+ * lisp/image/wallpaper.el (x-open-connection): Add declaration.
+ * lisp/loadup.el (featurep): Load up files for Android.
+ * lisp/net/eww.el (eww-form-submit, eww-form-file)
+ (eww-form-checkbox, eww-form-select): Adjust faces for android.
+ * lisp/term/android-win.el: New file.
+ * src/Makefile.in: Add new targets emacs.so and android-emacs,
+ then adjust for cross compilation.
+ * src/alloc.c (cleanup_vector): Clean up Android font entities
+ as well.
+ (garbage_collect): Mark androidterm.
+ * src/android-emacs.c (main):
+ * src/android.c (ANDROID_THROW, enum android_fd_table_entry_flags)
+ (struct android_emacs_service, struct android_emacs_pixmap)
+ (struct android_graphics_point, struct android_event_container)
+ (struct android_event_queue, android_run_select_thread)
+ (android_handle_sigusr1, android_init_events, android_pending)
+ (android_next_event, android_write_event, android_select)
+ (android_run_debug_thread, android_user_full_name)
+ (android_get_asset_name, android_fstat, android_fstatat)
+ (android_file_access_p, android_hack_asset_fd, android_open)
+ (android_close, JNICALL, android_init_emacs_service)
+ (android_init_emacs_pixmap, android_init_graphics_point)
+ (MAX_HANDLE, struct android_handle_entry, android_alloc_id)
+ (android_destroy_handle, android_resolve_handle)
+ (android_resolve_handle2, android_change_window_attributes)
+ (android_create_window, android_set_window_background)
+ (android_destroy_window, android_init_android_rect_class)
+ (android_init_emacs_gc_class, android_create_gc, android_free_gc)
+ (android_change_gc, android_set_clip_rectangles)
+ (android_reparent_window, android_lookup_method)
+ (android_clear_window, android_map_window, android_unmap_window)
+ (android_resize_window, android_move_window, android_swap_buffers)
+ (android_get_gc_values, android_set_foreground)
+ (android_fill_rectangle, android_create_pixmap_from_bitmap_data)
+ (android_set_clip_mask, android_set_fill_style, android_copy_area)
+ (android_free_pixmap, android_set_background, android_fill_polygon)
+ (android_draw_rectangle, android_draw_point, android_draw_line)
+ (android_create_pixmap, android_set_ts_origin, android_clear_area):
+ * src/android.h (ANDROID_EXPORT):
+ * src/androidfns.c (android_display_info_for_name)
+ (check_android_display_info, check_x_display_info, gamma_correct)
+ (android_defined_color, android_decode_color)
+ (android_implicitly_set_name, android_explicitly_set_name)
+ (android_set_tool_bar_lines, android_change_tool_bar_height)
+ (android_set_tab_bar_lines, android_change_tab_bar_height)
+ (android_set_scroll_bar_default_height)
+ (android_set_scroll_bar_default_width, android_icon_verify)
+ (android_icon, android_make_gc, android_free_gcs)
+ (unwind_create_frame, do_unwind_create_frame)
+ (android_default_font_parameter, android_create_frame_window)
+ (Fx_create_frame, Fxw_color_defined_p, Fxw_color_values)
+ (Fxw_display_color_p, Fx_display_grayscale_p)
+ (Fx_display_pixel_width, Fx_display_pixel_height)
+ (Fx_display_planes, Fx_display_color_cells, Fx_display_screens)
+ (Fx_display_mm_width, Fx_display_mm_height)
+ (Fx_display_backing_store, Fx_display_visual_class)
+ (Fx_display_monitor_attributes_list, Fx_frame_geometry)
+ (Fx_frame_list_z_order, Fx_frame_restack)
+ (Fx_mouse_absolute_pixel_position)
+ (Fx_set_mouse_absolute_pixel_position, Fandroid_get_connection)
+ (Fx_display_list, Fx_show_tip, Fx_hide_tip)
+ (android_set_background_color, android_set_border_color)
+ (android_set_cursor_color, android_set_cursor_type)
+ (android_set_foreground_color)
+ (android_set_child_frame_border_width)
+ (android_set_internal_border_width, android_set_menu_bar_lines)
+ (android_set_mouse_color, android_set_title, android_set_alpha)
+ (android_frame_parm_handlers, syms_of_androidfns):
+ * src/androidfont.c (struct android_emacs_font_driver)
+ (struct android_emacs_font_spec, struct android_emacs_font_metrics)
+ (struct android_emacs_font_object, struct android_integer)
+ (struct androidfont_info, struct androidfont_entity)
+ (android_init_font_driver, android_init_font_spec)
+ (android_init_font_metrics, android_init_integer)
+ (android_init_font_object, androidfont_get_cache)
+ (androidfont_from_lisp, androidfont_from_java, androidfont_list)
+ (androidfont_match, androidfont_draw, androidfont_open_font)
+ (androidfont_close_font, androidfont_has_char)
+ (androidfont_encode_char, androidfont_text_extents)
+ (androidfont_list_family, androidfont_driver)
+ (syms_of_androidfont_for_pdumper, syms_of_androidfont)
+ (init_androidfont, android_finalize_font_entity):
+ * src/androidgui.h (_ANDROID_GUI_H_, struct android_rectangle)
+ (struct android_point, enum android_gc_function)
+ (enum android_gc_value_mask, enum android_fill_style)
+ (enum android_window_value_mask)
+ (struct android_set_window_attributes, struct android_gc_values)
+ (struct android_gc, enum android_swap_action, enum android_shape)
+ (enum android_coord_mode, struct android_swap_info)
+ (NativeRectangle, struct android_any_event)
+ (struct android_key_event, struct android_configure_event)
+ (union android_event):
+ * src/androidterm.c (android_window_to_frame, android_clear_frame)
+ (android_ring_bell, android_toggle_invisible_pointer)
+ (android_update_begin, android_update_end, show_back_buffer)
+ (android_flush_dirty_back_buffer_on, handle_one_android_event)
+ (android_read_socket, android_frame_up_to_date)
+ (android_buffer_flipping_unblocked_hook)
+ (android_query_frame_background_color, android_parse_color)
+ (android_alloc_nearest_color, android_query_colors)
+ (android_mouse_position, android_get_focus_frame)
+ (android_focus_frame, android_frame_rehighlight)
+ (android_frame_raise_lower, android_make_frame_visible)
+ (android_make_frame_invisible)
+ (android_make_frame_visible_invisible, android_fullscreen_hook)
+ (android_iconify_frame, android_set_window_size_1)
+ (android_set_window_size, android_set_offset, android_set_alpha)
+ (android_new_font, android_bitmap_icon, android_free_pixmap_hook)
+ (android_free_frame_resources, android_delete_frame)
+ (android_delete_terminal, android_scroll_run)
+ (android_after_update_window_line, android_flip_and_flush)
+ (android_clear_rectangle, android_reset_clip_rectangles)
+ (android_clip_to_row, android_draw_fringe_bitmap)
+ (android_set_cursor_gc, android_set_mouse_face_gc)
+ (android_set_mode_line_face_gc, android_set_glyph_string_gc)
+ (android_set_glyph_string_clipping)
+ (android_set_glyph_string_clipping_exactly)
+ (android_compute_glyph_string_overhangs)
+ (android_clear_glyph_string_rect)
+ (android_draw_glyph_string_background, android_fill_triangle)
+ (android_make_point, android_inside_rect_p, android_clear_point)
+ (android_draw_relief_rect, android_draw_box_rect)
+ (HIGHLIGHT_COLOR_DARK_BOOST_LIMIT, android_setup_relief_color)
+ (android_setup_relief_colors, android_draw_glyph_string_box)
+ (android_draw_glyph_string_bg_rect, android_draw_image_relief)
+ (android_draw_image_foreground, android_draw_image_foreground_1)
+ (android_draw_image_glyph_string)
+ (android_draw_stretch_glyph_string, android_draw_underwave)
+ (android_draw_glyph_string_foreground)
+ (android_draw_composite_glyph_string_foreground)
+ (android_draw_glyphless_glyph_string_foreground)
+ (android_draw_glyph_string, android_define_frame_cursor)
+ (android_clear_frame_area, android_clear_under_internal_border)
+ (android_draw_hollow_cursor, android_draw_bar_cursor)
+ (android_draw_window_cursor, android_draw_vertical_window_border)
+ (android_draw_window_divider, android_redisplay_interface)
+ (frame_set_mouse_pixel_position, get_keysym_name)
+ (android_create_terminal, android_term_init, syms_of_androidterm)
+ (mark_androidterm):
+ * src/androidterm.h (_ANDROID_TERM_H_, struct android_display_info)
+ (struct android_output, FRAME_ANDROID_OUTPUT, XSCROLL_BAR): New
+ files.
+ * src/dired.c (file_attributes): Do not use openat on Android.
+ * src/dispextern.h (No_Cursor): Define appropriately on Android.
+ (struct glyph_string, struct face): Make gc field of type struct
+ android_gc on Android.
+ * src/dispnew.c (clear_current_matrices, clear_desired_matrices)
+ (adjust_frame_glyphs_for_window_redisplay, free_glyphs)
+ (update_frame, scrolling, char_ins_del_cost, update_frame_line)
+ (init_display_interactive): Disable text terminal support
+ completely on Android. Fix non-toolkit menus for non-X systems.
+ * src/editfns.c (Fuser_full_name): Call android_user_full_name.
+ * src/emacs.c (android_emacs_init): Make main this on Android.
+ Prohibit argv sorting from exceeding end of argv.
+ * src/epaths.in: Add path definitions for Android.
+
+ * src/fileio.c (file_access_p): Call android_file_access_p.
+ (file_name_directory): Avoid using openat on Android.
+ (Fcopy_file): Adjust to call sys_fstat instead.
+ (file_directory_p):
+ (Finsert_file_contents):
+ (write_region): Likewise.
+ * src/filelock.c:
+ * src/fns.c (Flocale_info): Pacify warning on Android.
+ * src/font.c (font_make_entity_android): New function.
+ * src/font.h:
+ * src/frame.c (Fframep):
+ (Fwindow_system): Handle new window system `android'. Update doc strings.
+ (Fmake_terminal_frame): Disable on Android.
+ (gui_display_get_resource): Disable get_string_resource_hook on Android.
+ (syms_of_frame): New defsym `android'.
+
+ * src/frame.h (GCALIGNED_STRUCT): Add new output data for
+ Android.
+ (ENUM_BF): Expand enumerator size.
+ (FRAME_ANDROID_P, FRAME_WINDOW_P, MOUSE_HL_INFO): Add
+ definitions for Android.
+
+ * src/image.c (GET_PIXEL):
+ (image_create_bitmap_from_file):
+ (image_create_x_image_and_pixmap_1):
+ (image_get_x_image):
+ (slurp_file):
+ (lookup_rgb_color):
+ (image_to_emacs_colors):
+ (image_from_emacs_colors):
+ (image_pixmap_draw_cross):
+ (image_disable_image):
+ (MaskForeground):
+ (gif_load): Add stubs for Android.
+
+ * src/lisp.h:
+ * src/lread.c (safe_to_load_version, maybe_swap_for_eln1, openp):
+ * src/pdumper.c (pdumper_load): Call sys_fstat instead of fstat.
+ * src/process.c (wait_reading_process_output): Use
+ android_select instead of pselect.
+ * src/scroll.c: Disable on Android.
+ * src/sysdep.c (widen_foreground_group, reset_sys_modes)
+ (init_signals, emacs_fstatat, sys_fstat): New function.
+ (emacs_open, emacs_open_noquit, emacs_close): Implement
+ differently on Android.
+ (close_output_streams): Disable what is not required on Android.
+
+ * src/term.c (OUTPUT1_IF, encode_terminal_code, string_cost)
+ (string_cost_one_line, per_line_cost, calculate_costs)
+ (struct fkey_table, tty_append_glyph, produce_glyphs)
+ (tty_capable_p, Fsuspend_tty, Fresume_tty, device, init_tty)
+ (maybe_fatal, syms_of_term): Disable text terminal support on
+ Android.
+
+ * src/termhooks.h (enum output_method): Add android output
+ method.
+ (GCALIGNED_STRUCT, TERMINAL_FONT_CACHE): Define for Android.
+
+ * src/terminal.c (Fterminal_live_p): Implement for Android.
+
+ * src/verbose.mk.in (AM_V_GLOBALS): Add JAVAC and DX.
+ * src/xdisp.c (redisplay_internal): Disable text terminals on Android.
+ (display_menu_bar):
+ (display_tty_menu_item):
+ (draw_row_with_mouse_face):
+ (expose_frame): Make the non toolkit menu bar work on Android.
+
+ * src/xfaces.c (GCGraphicsExposures):
+ (x_create_gc):
+ (x_free_gc):
+ (Fx_load_color_file): Define for Android.
+
+ * xcompile/Makefile.in (top_srcdir):
+ (top_builddir):
+ * xcompile/README:
+ * xcompile/langinfo.h (nl_langinfo): New files.
+
+This ChangeLog only chronicles changes constituting the initial
+development of the Android port. Refer to other ChangeLog files for a
+narrative of unrelated modifications made to Emacs during that time,
+and those made after the Android port was installed.
+
+;; Local Variables:
+;; coding: utf-8
+;; End:
+
+ Copyright (C) 2023 Free Software Foundation, Inc.
+
+ This file is part of GNU Emacs.
+
+ GNU Emacs is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ GNU Emacs is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.