diff options
author | Po Lu <luangruo@yahoo.com> | 2024-02-06 17:52:33 +0800 |
---|---|---|
committer | Po Lu <luangruo@yahoo.com> | 2024-02-06 17:53:23 +0800 |
commit | 42db7292c3e05920bc9f2fa5c3478eb2ba835c5c (patch) | |
tree | 7683bc7a9595f48734b43e5ee6c0eac660fdc39a /lisp/emacs-lisp/lisp-mode.el | |
parent | 0d2b7120783255fbb0f8e98717573c35425f4df6 (diff) | |
download | emacs-42db7292c3e05920bc9f2fa5c3478eb2ba835c5c.tar.gz emacs-42db7292c3e05920bc9f2fa5c3478eb2ba835c5c.tar.bz2 emacs-42db7292c3e05920bc9f2fa5c3478eb2ba835c5c.zip |
Implement Lisp threading on Android
Much like the NS port, only the main thread receives input from
the user interface, which is fortunately not a major problem for
packages such as lsp-mode that create Lisp threads.
* configure.ac: Enable with_threads under Android.
* src/android.c (android_init_events): Set `main_thread_id' to
the ID of the main thread.
(setEmacsParams): Set new global variable `android_jvm' to the
JVM object, for the purpose of attaching Lisp threads to the
JVM.
(android_select): [THREADS_ENABLED]: If the caller isn't the
main thread, resort to pselect. Don't check query before select
returns.
(android_check_query): Export.
* src/android.h (_ANDROID_H_): Define new macro and update
prototypes.
* src/process.c (android_select_wrapper): New function.
(wait_reading_process_output): If THREADS_ENABLED, call
thread_select through the Android select wrapper.
* src/thread.c (post_acquire_global_lock): Call
android_check_query; replace android_java_env with the incoming
Lisp thread's.
(run_thread): Attach and detach the thread created to the JVM.
(init_threads): Set the main thread's JNI environment object.
* src/thread.h (struct thread_state) <java_env>: New field.
Diffstat (limited to 'lisp/emacs-lisp/lisp-mode.el')
0 files changed, 0 insertions, 0 deletions