mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
ensure that all transaction-related invokeLater-s are executed, even after application is disposed (on shutdown hook)
This commit is contained in:
@@ -21,6 +21,7 @@ import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.progress.ProcessCanceledException;
|
||||
import com.intellij.openapi.progress.ProgressIndicator;
|
||||
import com.intellij.openapi.progress.ProgressIndicatorProvider;
|
||||
import com.intellij.openapi.util.Condition;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.util.registry.Registry;
|
||||
import com.intellij.util.concurrency.Semaphore;
|
||||
@@ -62,7 +63,7 @@ public class TransactionGuardImpl extends TransactionGuard {
|
||||
}
|
||||
|
||||
private void pollQueueLater() {
|
||||
ApplicationManager.getApplication().invokeLater(new Runnable() {
|
||||
invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
Queue<Transaction> queue = getQueue(myCurrentTransaction);
|
||||
@@ -72,7 +73,7 @@ public class TransactionGuardImpl extends TransactionGuard {
|
||||
runSyncTransaction(next);
|
||||
}
|
||||
}
|
||||
}, ModalityState.any());
|
||||
});
|
||||
}
|
||||
|
||||
private void runSyncTransaction(@NotNull Transaction transaction) {
|
||||
@@ -121,7 +122,7 @@ public class TransactionGuardImpl extends TransactionGuard {
|
||||
if (isDispatchThread) {
|
||||
runnable.run();
|
||||
} else {
|
||||
app.invokeLater(runnable, ModalityState.any());
|
||||
invokeLater(runnable);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -241,13 +242,17 @@ public class TransactionGuardImpl extends TransactionGuard {
|
||||
@Override
|
||||
public void submitTransactionLater(@NotNull final Disposable parentDisposable, @NotNull final Runnable transaction) {
|
||||
final TransactionIdImpl id = getContextTransaction();
|
||||
Application app = ApplicationManager.getApplication();
|
||||
app.invokeLater(new Runnable() {
|
||||
Runnable runnable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
submitTransaction(parentDisposable, id, transaction);
|
||||
}
|
||||
}, ModalityState.any());
|
||||
};
|
||||
invokeLater(runnable);
|
||||
}
|
||||
|
||||
private static void invokeLater(Runnable runnable) {
|
||||
ApplicationManager.getApplication().invokeLater(runnable, ModalityState.any(), Condition.FALSE);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user