Browse Subversion Repository
Diff of /jpki-pdf-signer/trunk/src/main/java/net/osdn/jpki/pdf_signer/Main.java
Parent Directory
| Revision Log
| Patch
| 6 |
public class Main { |
public class Main { |
| 7 |
|
|
| 8 |
public static void main(String[] args) { |
public static void main(String[] args) { |
| 9 |
|
// 画面の一部が再描画されずに白くなってしまうバグを回避するために、prism.dirtyopts=false を指定しています。 |
| 10 |
|
System.setProperty("prism.dirtyopts", "false"); |
| 11 |
|
|
| 12 |
Platform.setImplicitExit(false); |
Platform.setImplicitExit(false); |
| 13 |
SingletonApplication.launch(MainApp.class, args); |
SingletonApplication.launch(MainApp.class, args); |
| 14 |
|
|
| 15 |
|
// プロセス終了 |
| 16 |
|
// この時点で main (id=1) と DestroyJavaVM の他に AWT-Shutdown などの非デーモンスレッドが残っていることがあります。 |
| 17 |
|
// 非デーモンスレッドによってプロセスの終了が遅くなることがあります。 |
| 18 |
|
// macOS では特に顕著で main メソッドの復帰からプロセス終了まで 5秒程度かかることもあります。 |
| 19 |
|
// この影響で App Store の審査で「メインウィンドウを閉じてもプロセスが終了していない」というリジェクトを受けました。 |
| 20 |
|
// 対処として、非デーモンスレッドが残っていても すばやくプロセスを終了できるように System.exit(0) を呼ぶようにしました。 |
| 21 |
|
// |
| 22 |
|
// exewrap で二重起動を防止している場合は最初の launch が復帰して isStopped == true になったスレッドで System.exit(0) を呼びます。 |
| 23 |
|
// isStopped == false の場合は、二重起動時のウィンドウを最前面にするだけの main メソッド呼び出しであり、System.exit(0) を呼び出してはいけません。 |
| 24 |
|
if(SingletonApplication.isStopped()) { |
| 25 |
|
System.exit(0); |
| 26 |
|
} |
| 27 |
} |
} |
| 28 |
} |
} |
|
|
Legend:
| Removed from v.67 |
|
| changed lines |
| |
Added in v.68 |
|
|
|