diff options
author | Po Lu <luangruo@yahoo.com> | 2023-11-09 10:12:24 +0800 |
---|---|---|
committer | Po Lu <luangruo@yahoo.com> | 2023-11-09 10:12:24 +0800 |
commit | 21f36705266934d5a351d4d7f360734540132139 (patch) | |
tree | c67ff837f417bec1663df6700fe9b2b5ce330cc9 /java | |
parent | 06e4ebc81a44c709b08ce72c746629c6c77e6f6e (diff) | |
download | emacs-21f36705266934d5a351d4d7f360734540132139.tar.gz |
Guarantee files are auto-saved when Emacs is terminated by Android
* java/org/gnu/emacs/EmacsNative.java (shutDownEmacs):
* java/org/gnu/emacs/EmacsService.java (onDestroy): New
function. When invoked, call shut_down_emacs and await its
completion.
* src/android.c (android_shut_down_emacs, shutDownEmacs): New
functions.
Diffstat (limited to 'java')
-rw-r--r-- | java/org/gnu/emacs/EmacsNative.java | 4 | ||||
-rw-r--r-- | java/org/gnu/emacs/EmacsService.java | 12 |
2 files changed, 16 insertions, 0 deletions
diff --git a/java/org/gnu/emacs/EmacsNative.java b/java/org/gnu/emacs/EmacsNative.java index f15927bb3a7..946a38f7f84 100644 --- a/java/org/gnu/emacs/EmacsNative.java +++ b/java/org/gnu/emacs/EmacsNative.java @@ -92,6 +92,10 @@ public final class EmacsNative loadup.el itself. */ public static native void initEmacs (String argv[], String dumpFile); + /* Call shut_down_emacs to auto-save and unlock files in the main + thread, then return. */ + public static native void shutDownEmacs (); + /* Abort and generate a native core dump. */ public static native void emacsAbort (); diff --git a/java/org/gnu/emacs/EmacsService.java b/java/org/gnu/emacs/EmacsService.java index 1325cd85e9b..ab6d57b9c4f 100644 --- a/java/org/gnu/emacs/EmacsService.java +++ b/java/org/gnu/emacs/EmacsService.java @@ -321,6 +321,18 @@ public final class EmacsService extends Service } } + @Override + public void + onDestroy () + { + /* This function is called immediately before the system kills + Emacs. In this respect, it is rather akin to a SIGDANGER + signal, so force an auto-save accordingly. */ + + EmacsNative.shutDownEmacs (); + super.onDestroy (); + } + /* Functions from here on must only be called from the Emacs |