[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 19857b51b0e: Update Android port
From: |
Po Lu |
Subject: |
master 19857b51b0e: Update Android port |
Date: |
Wed, 20 Sep 2023 21:13:26 -0400 (EDT) |
branch: master
commit 19857b51b0e04d62d7e82fa285db2f40dfbaf75d
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>
Update Android port
* src/android.c (android_query_tree, android_get_geometry)
(android_translate_coordinates, android_wc_lookup_string)
(android_get_keysym_name, android_browse_url)
(android_query_battery):
* src/androidmenu.c (android_dismiss_menu, android_menu_show):
Circumvent JNI dynamic method dispatch overhead.
---
src/android.c | 79 +++++++++++++++++++++++++++++++++----------------------
src/androidmenu.c | 19 +++++++------
2 files changed, 56 insertions(+), 42 deletions(-)
diff --git a/src/android.c b/src/android.c
index 4caaf377781..6142f2be8ff 100644
--- a/src/android.c
+++ b/src/android.c
@@ -4963,15 +4963,17 @@ android_query_tree (android_window handle,
android_window *root_return,
jsize nelements, i;
android_window *children;
jshort *shorts;
+ jmethodID method;
window = android_resolve_handle (handle, ANDROID_HANDLE_WINDOW);
/* window can be NULL, so this is a service method. */
+ method = service_class.query_tree;
array
- = (*android_java_env)->CallObjectMethod (android_java_env,
- emacs_service,
- service_class.query_tree,
- window);
+ = (*android_java_env)->CallNonvirtualObjectMethod (android_java_env,
+ emacs_service,
+ service_class.class,
+ method, window);
android_exception_check ();
/* The first element of the array is the parent window. The rest
@@ -5024,9 +5026,10 @@ android_get_geometry (android_window handle,
get_geometry = window_class.get_window_geometry;
window_geometry
- = (*android_java_env)->CallObjectMethod (android_java_env,
- window,
- get_geometry);
+ = (*android_java_env)->CallNonvirtualObjectMethod (android_java_env,
+ window,
+ window_class.class,
+ get_geometry);
android_exception_check ();
/* window_geometry is an array containing x, y, width and
@@ -5084,9 +5087,11 @@ android_translate_coordinates (android_window src, int x,
window = android_resolve_handle (src, ANDROID_HANDLE_WINDOW);
method = window_class.translate_coordinates;
coordinates
- = (*android_java_env)->CallObjectMethod (android_java_env,
- window, method,
- (jint) x, (jint) y);
+ = (*android_java_env)->CallNonvirtualObjectMethod (android_java_env,
+ window,
+ window_class.class,
+ method, (jint) x,
+ (jint) y);
android_exception_check ();
/* The array must contain two elements: X, Y translated to the root
@@ -5124,7 +5129,9 @@ android_wc_lookup_string (android_key_pressed_event
*event,
const jchar *characters;
jsize size;
size_t i;
+ JNIEnv *env;
+ env = android_java_env;
status = ANDROID_LOOKUP_NONE;
rc = 0;
@@ -5175,9 +5182,10 @@ android_wc_lookup_string (android_key_pressed_event
*event,
{
window = android_handles[event->window].handle;
string
- = (*android_java_env)->CallObjectMethod (android_java_env, window,
- window_class.lookup_string,
- (jint) event->serial);
+ = (*env)->CallNonvirtualObjectMethod (env, window,
+ window_class.class,
+ window_class.lookup_string,
+ (jint) event->serial);
android_exception_check ();
if (!string)
@@ -5185,13 +5193,11 @@ android_wc_lookup_string (android_key_pressed_event
*event,
else
{
/* Now return this input method string. */
- characters = (*android_java_env)->GetStringChars (android_java_env,
- string, NULL);
+ characters = (*env)->GetStringChars (env, string, NULL);
android_exception_check_nonnull ((void *) characters, string);
- /* Figure out how big the string is. */
- size = (*android_java_env)->GetStringLength (android_java_env,
- string);
+ /* Establish the size of the the string. */
+ size = (*env)->GetStringLength (env, string);
/* Copy over the string data. */
for (i = 0; i < MIN ((unsigned int) wchars_buffer, size); ++i)
@@ -5210,8 +5216,7 @@ android_wc_lookup_string (android_key_pressed_event
*event,
else
rc = size;
- (*android_java_env)->ReleaseStringChars (android_java_env, string,
- characters);
+ (*env)->ReleaseStringChars (env, string, characters);
ANDROID_DELETE_LOCAL_REF (string);
}
}
@@ -5425,11 +5430,15 @@ android_get_keysym_name (int keysym, char *name_return,
size_t size)
{
jobject string;
const char *buffer;
+ jmethodID method;
- string = (*android_java_env)->CallObjectMethod (android_java_env,
- emacs_service,
- service_class.name_keysym,
- (jint) keysym);
+ method = service_class.name_keysym;
+ string
+ = (*android_java_env)->CallNonvirtualObjectMethod (android_java_env,
+ emacs_service,
+ service_class.class,
+ method,
+ (jint) keysym);
android_exception_check ();
buffer = (*android_java_env)->GetStringUTFChars (android_java_env,
@@ -6136,11 +6145,13 @@ android_browse_url (Lisp_Object url, Lisp_Object send)
const char *buffer;
string = android_build_string (url);
- value = (*android_java_env)->CallObjectMethod (android_java_env,
- emacs_service,
- service_class.browse_url,
- string,
- (jboolean) !NILP (send));
+ value
+ = (*android_java_env)->CallNonvirtualObjectMethod (android_java_env,
+ emacs_service,
+ service_class.class,
+ service_class.browse_url,
+ string,
+ (jboolean) !NILP (send));
android_exception_check ();
ANDROID_DELETE_LOCAL_REF (string);
@@ -6205,10 +6216,14 @@ android_query_battery (struct android_battery_state
*status)
{
jlongArray array;
jlong *longs;
+ jmethodID method;
- array = (*android_java_env)->CallObjectMethod (android_java_env,
- emacs_service,
- service_class.query_battery);
+ method = service_class.query_battery;
+ array
+ = (*android_java_env)->CallNonvirtualObjectMethod (android_java_env,
+ emacs_service,
+ service_class.class,
+ method);
android_exception_check ();
/* A NULL return with no exception means that battery information
diff --git a/src/androidmenu.c b/src/androidmenu.c
index 70452b5dab0..3b34f032c35 100644
--- a/src/androidmenu.c
+++ b/src/androidmenu.c
@@ -162,10 +162,11 @@ android_dismiss_menu (void *pointer)
struct android_dismiss_menu_data *data;
data = pointer;
- (*android_java_env)->CallVoidMethod (android_java_env,
- data->menu,
- menu_class.dismiss,
- data->window);
+ (*android_java_env)->CallNonvirtualVoidMethod (android_java_env,
+ data->menu,
+ menu_class.class,
+ menu_class.dismiss,
+ data->window);
popup_activated_flag = 0;
}
@@ -362,14 +363,12 @@ android_menu_show (struct frame *f, int x, int y, int
menuflags,
pane_string++;
/* Add the pane. */
- temp = (*android_java_env)->NewStringUTF (android_java_env,
- pane_string);
+ temp = (*env)->NewStringUTF (env, pane_string);
android_exception_check ();
- (*android_java_env)->CallVoidMethod (android_java_env,
- current_context_menu,
- menu_class.add_pane,
- temp);
+ (*env)->CallNonvirtualVoidMethod (env, current_context_menu,
+ menu_class.class,
+ menu_class.add_pane, temp);
android_exception_check ();
ANDROID_DELETE_LOCAL_REF (temp);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master 19857b51b0e: Update Android port,
Po Lu <=