Fix DEBUG_THREADS in the Android port

* java/org/gnu/emacs/EmacsService.java (EmacsService): New field
`mainThread'.
(onCreate): Set `mainThread' to the thread where the service's
looper executes.
(checkEmacsThread): Compare against SERVICE.mainThread.
This commit is contained in:
Po Lu 2024-02-07 21:09:18 +08:00
parent ccae58a425
commit e5cb268b2c

View file

@ -136,6 +136,10 @@ public final class EmacsService extends Service
been created yet. */
private EmacsSafThread storageThread;
/* The Thread object representing the Android user interface
thread. */
private Thread mainThread;
static
{
servicingQuery = new AtomicInteger ();
@ -236,6 +240,7 @@ public final class EmacsService extends Service
/ metrics.density)
* pixelDensityX);
resolver = getContentResolver ();
mainThread = Thread.currentThread ();
/* If the density used to compute the text size is lesser than
160, there's likely a bug with display density computation.
@ -384,7 +389,13 @@ invocation of app_process (through android-emacs) can
{
if (DEBUG_THREADS)
{
if (Thread.currentThread () instanceof EmacsThread)
/* When SERVICE is NULL, Emacs is being executed non-interactively. */
if (SERVICE == null
/* It was previously assumed that only instances of
`EmacsThread' were valid for graphics calls, but this is
no longer true now that Lisp threads can be attached to
the JVM. */
|| (Thread.currentThread () != SERVICE.mainThread))
return;
throw new RuntimeException ("Emacs thread function"