[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
| [Prev in Thread] |
Current Thread |
[Next in Thread] |
- feature/android 9cf166db63b: Initialize Android API level earlier,
Po Lu <=