1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-07 04:10:27 -08:00

Initialize signal mask earlier

* java/org/gnu/emacs/EmacsService.java (onCreate, run): Don't
initialize signal mask here.
* java/org/gnu/emacs/EmacsApplication.java (onCreate): Do it
here instead.
* src/android.c (JNICALL): Restore previous signal masks.
This commit is contained in:
Po Lu 2023-06-17 12:07:40 +08:00
parent fa821ed186
commit 797c30b7ab
3 changed files with 30 additions and 26 deletions

View file

@ -78,7 +78,15 @@ public final class EmacsApplication extends Application
public void
onCreate ()
{
/* Block signals which don't interest the current thread and its
descendants created by the system. The original signal mask
will be restored for the Emacs thread in `initEmacs'. */
EmacsNative.setupSystemThread ();
/* Locate a suitable dump file. */
findDumpFile (this);
/* Start the rest of the application. */
super.onCreate ();
}
};

View file

@ -25,7 +25,6 @@ import java.io.UnsupportedEncodingException;
import java.util.List;
import java.util.concurrent.Semaphore;
import java.util.concurrent.atomic.AtomicInteger;
import android.graphics.Matrix;
@ -212,7 +211,6 @@ public final class EmacsService extends Service
final String filesDir, libDir, cacheDir, classPath;
final double pixelDensityX;
final double pixelDensityY;
final Semaphore signalSemaphore;
SERVICE = this;
handler = new Handler (Looper.getMainLooper ());
@ -222,7 +220,6 @@ public final class EmacsService extends Service
pixelDensityX = metrics.xdpi;
pixelDensityY = metrics.ydpi;
resolver = getContentResolver ();
signalSemaphore = new Semaphore (0);
try
{
@ -251,33 +248,11 @@ public final class EmacsService extends Service
cacheDir, (float) pixelDensityX,
(float) pixelDensityY,
classPath, EmacsService.this);
/* Wait for the signal mask to be set up in the UI
thread. */
while (true)
{
try
{
signalSemaphore.acquire ();
break;
}
catch (InterruptedException e)
{
;;
}
}
}
}, extraStartupArgument,
/* If any file needs to be opened, open it now. */
EmacsOpenActivity.fileToOpen);
thread.start ();
/* Now that the thread has been started, block signals which
don't interest the current thread. */
EmacsNative.setupSystemThread ();
signalSemaphore.release ();
}
catch (IOException exception)
{