]> git.eshelyaron.com Git - emacs.git/commitdiff
Update Android port
authorPo Lu <luangruo@yahoo.com>
Sun, 12 Mar 2023 12:53:34 +0000 (20:53 +0800)
committerPo Lu <luangruo@yahoo.com>
Sun, 12 Mar 2023 12:53:34 +0000 (20:53 +0800)
* src/android.c (android_get_screen_width):
(android_get_screen_height):
(android_get_mm_width):
(android_get_mm_height):
(android_detect_mouse): Correctly handle Java exceptions.

src/android.c

index a2c239736a70822eb4eb5f1efd8ba51ec0f24dd6..16c645ced1e646c0291b772f58e48cbfbaf5084c 100644 (file)
@@ -4880,45 +4880,80 @@ android_damage_window (android_drawable handle,
 int
 android_get_screen_width (void)
 {
-  return (*android_java_env)->CallIntMethod (android_java_env,
-                                            emacs_service,
-                                            service_class.get_screen_width,
-                                            (jboolean) false);
+  int rc;
+  jmethodID method;
+
+  method = service_class.get_screen_width;
+  rc = (*android_java_env)->CallNonvirtualIntMethod (android_java_env,
+                                                    emacs_service,
+                                                    service_class.class,
+                                                    method,
+                                                    (jboolean) false);
+  android_exception_check ();
+  return rc;
 }
 
 int
 android_get_screen_height (void)
 {
-  return (*android_java_env)->CallIntMethod (android_java_env,
-                                            emacs_service,
-                                            service_class.get_screen_height,
-                                            (jboolean) false);
+  int rc;
+  jmethodID method;
+
+  method = service_class.get_screen_height;
+  rc = (*android_java_env)->CallNonvirtualIntMethod (android_java_env,
+                                                    emacs_service,
+                                                    service_class.class,
+                                                    method,
+                                                    (jboolean) false);
+  android_exception_check ();
+  return rc;
 }
 
 int
 android_get_mm_width (void)
 {
-  return (*android_java_env)->CallIntMethod (android_java_env,
-                                            emacs_service,
-                                            service_class.get_screen_width,
-                                            (jboolean) true);
+  int rc;
+  jmethodID method;
+
+  method = service_class.get_screen_width;
+  rc = (*android_java_env)->CallNonvirtualIntMethod (android_java_env,
+                                                    emacs_service,
+                                                    service_class.class,
+                                                    method,
+                                                    (jboolean) true);
+  android_exception_check ();
+  return rc;
 }
 
 int
 android_get_mm_height (void)
 {
-  return (*android_java_env)->CallIntMethod (android_java_env,
-                                            emacs_service,
-                                            service_class.get_screen_height,
-                                            (jboolean) true);
+  int rc;
+  jmethodID method;
+
+  method = service_class.get_screen_height;
+  rc = (*android_java_env)->CallNonvirtualIntMethod (android_java_env,
+                                                    emacs_service,
+                                                    service_class.class,
+                                                    method,
+                                                    (jboolean) true);
+  android_exception_check ();
+  return rc;
 }
 
 bool
 android_detect_mouse (void)
 {
-  return (*android_java_env)->CallBooleanMethod (android_java_env,
-                                                emacs_service,
-                                                service_class.detect_mouse);
+  bool rc;
+  jmethodID method;
+
+  method = service_class.detect_mouse;
+  rc = (*android_java_env)->CallNonvirtualBooleanMethod (android_java_env,
+                                                        emacs_service,
+                                                        service_class.class,
+                                                        method);
+  android_exception_check ();
+  return rc;
 }
 
 void