use up to date TransactionGuard when dispatching swing events; hopefully this will fix flaky TransactionTest

This commit is contained in:
peter
2016-05-10 16:49:03 +02:00
parent 06fe6d214c
commit 48cce18d6c
@@ -357,7 +357,6 @@ public class IdeEventQueue extends EventQueue {
boolean loaded = IdeaApplication.isLoaded();
if (loaded) {
ourAppIsLoaded = true;
ourTransactionGuard = (TransactionGuardImpl)TransactionGuard.getInstance();
}
return loaded;
}
@@ -389,7 +388,7 @@ public class IdeEventQueue extends EventQueue {
myCurrentEvent = e;
boolean userActivity = myIsInInputEvent || e instanceof ItemEvent;
try (AccessToken ignored = ourTransactionGuard == null ? null : ourTransactionGuard.startActivity(userActivity)) {
try (AccessToken ignored = startActivity(userActivity)) {
_dispatchEvent(e, false);
}
catch (Throwable t) {
@@ -409,6 +408,14 @@ public class IdeEventQueue extends EventQueue {
}
}
@Nullable
private static AccessToken startActivity(boolean userActivity) {
if (ourTransactionGuard == null && appIsLoaded()) {
ourTransactionGuard = (TransactionGuardImpl)TransactionGuard.getInstance();
}
return ourTransactionGuard == null ? null : ourTransactionGuard.startActivity(userActivity);
}
private void processException(Throwable t) {
if (!myToolkitBugsProcessor.process(t)) {
PluginManager.processException(t);