aboutsummaryrefslogtreecommitdiffstats
path: root/java/org/gnu
diff options
context:
space:
mode:
Diffstat (limited to 'java/org/gnu')
-rw-r--r--java/org/gnu/emacs/EmacsNative.java9
-rw-r--r--java/org/gnu/emacs/EmacsNoninteractive.java2
-rw-r--r--java/org/gnu/emacs/EmacsService.java20
3 files changed, 25 insertions, 6 deletions
diff --git a/java/org/gnu/emacs/EmacsNative.java b/java/org/gnu/emacs/EmacsNative.java
index 49a21ce1c4d..fac4b6f01df 100644
--- a/java/org/gnu/emacs/EmacsNative.java
+++ b/java/org/gnu/emacs/EmacsNative.java
@@ -61,6 +61,9 @@ public final class EmacsNative
61 scaledDensity is the DPI value used to translate point sizes to 61 scaledDensity is the DPI value used to translate point sizes to
62 pixel sizes when loading fonts. 62 pixel sizes when loading fonts.
63 63
64 uiMode holds the bits of the system's UI mode specification
65 defining the active system theme.
66
64 classPath must be the classpath of this app_process process, or 67 classPath must be the classpath of this app_process process, or
65 NULL. 68 NULL.
66 69
@@ -74,6 +77,7 @@ public final class EmacsNative
74 float pixelDensityX, 77 float pixelDensityX,
75 float pixelDensityY, 78 float pixelDensityY,
76 float scaledDensity, 79 float scaledDensity,
80 int uiMode,
77 String classPath, 81 String classPath,
78 EmacsService emacsService, 82 EmacsService emacsService,
79 int apiLevel); 83 int apiLevel);
@@ -197,8 +201,9 @@ public final class EmacsNative
197 public static native void sendNotificationAction (String tag, String action); 201 public static native void sendNotificationAction (String tag, String action);
198 202
199 /* Send an ANDROID_CONFIGURATION_CHANGED event. */ 203 /* Send an ANDROID_CONFIGURATION_CHANGED event. */
200 public static native void sendConfigurationChanged (float dpiX, float dpiY, 204 public static native void sendConfigurationChanged (int detail, float dpiX,
201 float dpiScaled); 205 float dpiY, float dpiScaled,
206 int ui_mode);
202 207
203 /* Return the file name associated with the specified file 208 /* Return the file name associated with the specified file
204 descriptor, or NULL if there is none. */ 209 descriptor, or NULL if there is none. */
diff --git a/java/org/gnu/emacs/EmacsNoninteractive.java b/java/org/gnu/emacs/EmacsNoninteractive.java
index 83ef04b1cf1..b4d055ce4c9 100644
--- a/java/org/gnu/emacs/EmacsNoninteractive.java
+++ b/java/org/gnu/emacs/EmacsNoninteractive.java
@@ -67,7 +67,7 @@ public final class EmacsNoninteractive
67 cacheDir = context.getCacheDir ().getCanonicalPath (); 67 cacheDir = context.getCacheDir ().getCanonicalPath ();
68 EmacsNative.setEmacsParams (assets, filesDir, 68 EmacsNative.setEmacsParams (assets, filesDir,
69 libDir, cacheDir, 0.0f, 69 libDir, cacheDir, 0.0f,
70 0.0f, 0.0f, null, null, 70 0.0f, 0.0f, 0x0, null, null,
71 Build.VERSION.SDK_INT); 71 Build.VERSION.SDK_INT);
72 72
73 /* Now find the dump file that Emacs should use, if it has already 73 /* Now find the dump file that Emacs should use, if it has already
diff --git a/java/org/gnu/emacs/EmacsService.java b/java/org/gnu/emacs/EmacsService.java
index 3630329839f..d141f6f4d0d 100644
--- a/java/org/gnu/emacs/EmacsService.java
+++ b/java/org/gnu/emacs/EmacsService.java
@@ -150,6 +150,10 @@ public final class EmacsService extends Service
150 consulted for font scaling. */ 150 consulted for font scaling. */
151 private double dpiX, dpiY, dpiScaled; 151 private double dpiX, dpiY, dpiScaled;
152 152
153 /* The display's previously observed UI mode as it relates to the
154 system theme. */
155 private int uiMode;
156
153 static 157 static
154 { 158 {
155 servicingQuery = new AtomicInteger (); 159 servicingQuery = new AtomicInteger ();
@@ -240,6 +244,7 @@ public final class EmacsService extends Service
240 float tempScaledDensity; 244 float tempScaledDensity;
241 Resources resources; 245 Resources resources;
242 DisplayMetrics metrics; 246 DisplayMetrics metrics;
247 Configuration configuration;
243 248
244 super.onCreate (); 249 super.onCreate ();
245 250
@@ -254,6 +259,8 @@ public final class EmacsService extends Service
254 tempScaledDensity = ((getScaledDensity (metrics) 259 tempScaledDensity = ((getScaledDensity (metrics)
255 / metrics.density) 260 / metrics.density)
256 * pixelDensityX); 261 * pixelDensityX);
262 configuration = resources.getConfiguration ();
263 uiMode = configuration.uiMode & Configuration.UI_MODE_NIGHT_MASK;
257 resolver = getContentResolver (); 264 resolver = getContentResolver ();
258 mainThread = Thread.currentThread (); 265 mainThread = Thread.currentThread ();
259 266
@@ -311,7 +318,8 @@ public final class EmacsService extends Service
311 EmacsNative.setEmacsParams (manager, filesDir, libDir, 318 EmacsNative.setEmacsParams (manager, filesDir, libDir,
312 cacheDir, pixelDensityX, 319 cacheDir, pixelDensityX,
313 pixelDensityY, scaledDensity, 320 pixelDensityY, scaledDensity,
314 classPath, EmacsService.this, 321 uiMode, classPath,
322 EmacsService.this,
315 Build.VERSION.SDK_INT); 323 Build.VERSION.SDK_INT);
316 } 324 }
317 }, extraStartupArguments); 325 }, extraStartupArguments);
@@ -375,8 +383,14 @@ public final class EmacsService extends Service
375 dpiX = pixelDensityX; 383 dpiX = pixelDensityX;
376 dpiY = pixelDensityY; 384 dpiY = pixelDensityY;
377 dpiScaled = scaledDensity; 385 dpiScaled = scaledDensity;
378 EmacsNative.sendConfigurationChanged (pixelDensityX, pixelDensityY, 386 EmacsNative.sendConfigurationChanged (0, pixelDensityX, pixelDensityY,
379 scaledDensity); 387 scaledDensity, 0);
388 }
389
390 if ((newConfig.uiMode & Configuration.UI_MODE_NIGHT_MASK) != uiMode)
391 {
392 uiMode = newConfig.uiMode & Configuration.UI_MODE_NIGHT_MASK;
393 EmacsNative.sendConfigurationChanged (1, 0.0f, 0.0f, 0.0f, uiMode);
380 } 394 }
381 395
382 super.onConfigurationChanged (newConfig); 396 super.onConfigurationChanged (newConfig);