emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

feature/android 9cf166db63b: Initialize Android API level earlier


From: Po Lu
Subject: feature/android 9cf166db63b: Initialize Android API level earlier
Date: Mon, 31 Jul 2023 02:18:28 -0400 (EDT)

branch: feature/android
commit 9cf166db63b7383a94dc47a6a5251c0dbe1dae9b
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>

    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.
---
 java/org/gnu/emacs/EmacsNative.java         | 14 +++++++-------
 java/org/gnu/emacs/EmacsNoninteractive.java |  6 +++---
 java/org/gnu/emacs/EmacsService.java        |  3 ++-
 java/org/gnu/emacs/EmacsThread.java         |  4 +---
 src/android.c                               | 12 +++++++-----
 src/androidvfs.c                            | 14 ++++++++++++++
 6 files changed, 34 insertions(+), 19 deletions(-)

diff --git a/java/org/gnu/emacs/EmacsNative.java 
b/java/org/gnu/emacs/EmacsNative.java
index ea200037218..7d72a9f192e 100644
--- a/java/org/gnu/emacs/EmacsNative.java
+++ b/java/org/gnu/emacs/EmacsNative.java
@@ -66,7 +66,9 @@ public final class EmacsNative
      classPath must be the classpath of this app_process process, or
      NULL.
 
-     emacsService must be the EmacsService singleton, or NULL.  */
+     emacsService must be the EmacsService singleton, or NULL.
+
+     apiLevel is the version of Android being run.  */
   public static native void setEmacsParams (AssetManager assetManager,
                                            String filesDir,
                                            String libDir,
@@ -75,18 +77,16 @@ public final class EmacsNative
                                            float pixelDensityY,
                                            float scaledDensity,
                                            String classPath,
-                                           EmacsService emacsService);
+                                           EmacsService emacsService,
+                                           int apiLevel);
 
   /* Initialize Emacs with the argument array ARGV.  Each argument
      must contain a NULL terminated string, or else the behavior is
      undefined.
 
      DUMPFILE is the dump file to use, or NULL if Emacs is to load
-     loadup.el itself.
-
-     APILEVEL is the version of Android being used.  */
-  public static native void initEmacs (String argv[], String dumpFile,
-                                      int apiLevel);
+     loadup.el itself.  */
+  public static native void initEmacs (String argv[], String dumpFile);
 
   /* Abort and generate a native core dump.  */
   public static native void emacsAbort ();
diff --git a/java/org/gnu/emacs/EmacsNoninteractive.java 
b/java/org/gnu/emacs/EmacsNoninteractive.java
index aa6fa41ba97..1c7513e1cc9 100644
--- a/java/org/gnu/emacs/EmacsNoninteractive.java
+++ b/java/org/gnu/emacs/EmacsNoninteractive.java
@@ -190,14 +190,14 @@ public final class EmacsNoninteractive
 
     EmacsNative.setEmacsParams (assets, filesDir,
                                libDir, cacheDir, 0.0f,
-                               0.0f, 0.0f, null, null);
+                               0.0f, 0.0f, null, null,
+                               Build.VERSION.SDK_INT);
 
     /* Now find the dump file that Emacs should use, if it has already
        been dumped.  */
     EmacsApplication.findDumpFile (context);
 
     /* Start Emacs.  */
-    EmacsNative.initEmacs (args, EmacsApplication.dumpFileName,
-                          Build.VERSION.SDK_INT);
+    EmacsNative.initEmacs (args, EmacsApplication.dumpFileName);
   }
 };
diff --git a/java/org/gnu/emacs/EmacsService.java 
b/java/org/gnu/emacs/EmacsService.java
index e714f75fdf2..3c1bb0855f4 100644
--- a/java/org/gnu/emacs/EmacsService.java
+++ b/java/org/gnu/emacs/EmacsService.java
@@ -291,7 +291,8 @@ public final class EmacsService extends Service
                                          cacheDir, (float) pixelDensityX,
                                          (float) pixelDensityY,
                                          (float) scaledDensity,
-                                         classPath, EmacsService.this);
+                                         classPath, EmacsService.this,
+                                         Build.VERSION.SDK_INT);
            }
          }, extraStartupArgument,
          /* If any file needs to be opened, open it now.  */
diff --git a/java/org/gnu/emacs/EmacsThread.java 
b/java/org/gnu/emacs/EmacsThread.java
index c003ea95c50..5307015b46f 100644
--- a/java/org/gnu/emacs/EmacsThread.java
+++ b/java/org/gnu/emacs/EmacsThread.java
@@ -22,7 +22,6 @@ package org.gnu.emacs;
 import java.lang.Thread;
 import java.util.Arrays;
 
-import android.os.Build;
 import android.util.Log;
 
 public final class EmacsThread extends Thread
@@ -78,7 +77,6 @@ public final class EmacsThread extends Thread
 
     /* Run the native code now.  */
     Log.d (TAG, "run: " + Arrays.toString (args));
-    EmacsNative.initEmacs (args, EmacsApplication.dumpFileName,
-                          Build.VERSION.SDK_INT);
+    EmacsNative.initEmacs (args, EmacsApplication.dumpFileName);
   }
 };
diff --git a/src/android.c b/src/android.c
index 8c0232a51f8..f60ff5acb54 100644
--- a/src/android.c
+++ b/src/android.c
@@ -1281,7 +1281,8 @@ NATIVE_NAME (setEmacsParams) (JNIEnv *env, jobject object,
                              jfloat pixel_density_y,
                              jfloat scaled_density,
                              jobject class_path,
-                             jobject emacs_service_object)
+                             jobject emacs_service_object,
+                             jint api_level)
 {
   JNI_STACK_ALIGNMENT_PROLOGUE;
 
@@ -1289,6 +1290,10 @@ NATIVE_NAME (setEmacsParams) (JNIEnv *env, jobject 
object,
   pthread_t thread;
   const char *java_string;
 
+  /* Set the Android API level early, as it is used by
+     `android_vfs_init'.  */
+  android_api_level = api_level;
+
   /* This function should only be called from the main thread.  */
 
   android_pixel_density_x = pixel_density_x;
@@ -1771,7 +1776,7 @@ android_init_emacs_cursor (void)
 
 JNIEXPORT void JNICALL
 NATIVE_NAME (initEmacs) (JNIEnv *env, jobject object, jarray argv,
-                        jobject dump_file_object, jint api_level)
+                        jobject dump_file_object)
 {
   /* android_emacs_init is not main, so GCC is not nice enough to add
      the stack alignment prologue.
@@ -1788,9 +1793,6 @@ NATIVE_NAME (initEmacs) (JNIEnv *env, jobject object, 
jarray argv,
   const char *c_argument;
   char *dump_file;
 
-  /* Set the Android API level.  */
-  android_api_level = api_level;
-
   android_java_env = env;
 
   nelements = (*env)->GetArrayLength (env, argv);
diff --git a/src/androidvfs.c b/src/androidvfs.c
index 9acc8f2b139..eeef5ea5db0 100644
--- a/src/androidvfs.c
+++ b/src/androidvfs.c
@@ -5976,6 +5976,14 @@ android_saf_new_opendir (struct android_vnode *vnode)
 /* Semaphore posted upon the completion of an SAF operation.  */
 static sem_t saf_completion_sem;
 
+#ifdef __clang__
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wmissing-prototypes"
+#else /* GNUC */
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wmissing-prototypes"
+#endif /* __clang__ */
+
 JNIEXPORT jint JNICALL
 NATIVE_NAME (safSyncAndReadInput) (JNIEnv *env, jobject object)
 {
@@ -6010,6 +6018,12 @@ NATIVE_NAME (safPostRequest) (JNIEnv *env, jobject 
object)
   sem_post (&saf_completion_sem);
 }
 
+#ifdef __clang__
+#pragma clang diagnostic pop
+#else /* GNUC */
+#pragma GCC diagnostic pop
+#endif /* __clang__ */
+
 
 
 /* Root vnode.  This vnode represents the root inode, and is a regular



reply via email to

[Prev in Thread] Current Thread [Next in Thread]