From fc7260a8ea310762f671fe56e638c0f84b14d32d Mon Sep 17 00:00:00 2001 From: peter Date: Tue, 22 Mar 2016 19:16:56 +0100 Subject: [PATCH] remove some unnecessary synchronous transactions --- .../openapi/application/WriteAction.java | 16 +++++----------- .../openapi/command/WriteCommandAction.java | 12 +++--------- .../impl/editorActions/EscapeHandler.java | 4 +--- 3 files changed, 9 insertions(+), 23 deletions(-) diff --git a/platform/core-api/src/com/intellij/openapi/application/WriteAction.java b/platform/core-api/src/com/intellij/openapi/application/WriteAction.java index e0d8f90d2d0a..6f046997fec6 100644 --- a/platform/core-api/src/com/intellij/openapi/application/WriteAction.java +++ b/platform/core-api/src/com/intellij/openapi/application/WriteAction.java @@ -47,24 +47,18 @@ public abstract class WriteAction extends BaseActionRunnable { LOG.error("Must not start write action from within read action in the other thread - deadlock is coming"); } - application.invokeAndWait(new Runnable() { + TransactionGuard.getInstance().submitTransactionAndWait(TransactionKind.ANY_CHANGE, new Runnable() { @Override public void run() { - AccessToken transaction = TransactionGuard.getInstance().startSynchronousTransaction(TransactionKind.ANY_CHANGE); + AccessToken token = start(WriteAction.this.getClass()); try { - AccessToken token = start(WriteAction.this.getClass()); - try { - result.run(); - } - finally { - token.finish(); - } + result.run(); } finally { - transaction.finish(); + token.finish(); } } - }, ModalityState.defaultModalityState()); + }); result.throwException(); return result; diff --git a/platform/core-api/src/com/intellij/openapi/command/WriteCommandAction.java b/platform/core-api/src/com/intellij/openapi/command/WriteCommandAction.java index aaeef86ea374..9e4c81207493 100644 --- a/platform/core-api/src/com/intellij/openapi/command/WriteCommandAction.java +++ b/platform/core-api/src/com/intellij/openapi/command/WriteCommandAction.java @@ -83,18 +83,12 @@ public abstract class WriteCommandAction extends BaseActionRunnable { performWriteCommandAction(result); } else { try { - application.invokeAndWait(new Runnable() { + TransactionGuard.getInstance().submitTransactionAndWait(TransactionKind.ANY_CHANGE, new Runnable() { @Override public void run() { - AccessToken token = TransactionGuard.getInstance().startSynchronousTransaction(TransactionKind.ANY_CHANGE); - try { - performWriteCommandAction(result); - } - finally { - token.finish(); - } + performWriteCommandAction(result); } - }, ModalityState.defaultModalityState()); + }); } catch (ProcessCanceledException ignored) { } } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/template/impl/editorActions/EscapeHandler.java b/platform/lang-impl/src/com/intellij/codeInsight/template/impl/editorActions/EscapeHandler.java index 2af20c95c3e9..e24b60ee212f 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/template/impl/editorActions/EscapeHandler.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/template/impl/editorActions/EscapeHandler.java @@ -20,8 +20,6 @@ import com.intellij.codeInsight.CodeInsightBundle; import com.intellij.codeInsight.template.impl.TemplateManagerImpl; import com.intellij.codeInsight.template.impl.TemplateState; import com.intellij.openapi.actionSystem.DataContext; -import com.intellij.openapi.application.TransactionGuard; -import com.intellij.openapi.application.TransactionKind; import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.actionSystem.EditorActionHandler; @@ -39,7 +37,7 @@ public class EscapeHandler extends EditorActionHandler { final TemplateState templateState = TemplateManagerImpl.getTemplateState(editor); if (templateState != null && !templateState.isFinished()) { CommandProcessor.getInstance().setCurrentCommandName(CodeInsightBundle.message("finish.template.command")); - TransactionGuard.syncTransaction(TransactionKind.TEXT_EDITING, () -> templateState.gotoEnd(true)); + templateState.gotoEnd(true); return; } }