Skip to content

Commit d7510b4

Browse files
Fix stat menu performance issue (#302)
* Update StatsMenu.java * Use SwingUtilities.invokeLater * use runAsync in invokeLater in StatsMenu * checkstyle * extract method --------- Co-authored-by: supersaiyansubtlety <[email protected]>
1 parent c750bb3 commit d7510b4

File tree

1 file changed

+11
-4
lines changed
  • enigma-swing/src/main/java/org/quiltmc/enigma/gui/element/menu_bar/view

1 file changed

+11
-4
lines changed

enigma-swing/src/main/java/org/quiltmc/enigma/gui/element/menu_bar/view/StatsMenu.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,12 @@
99

1010
import javax.swing.JCheckBoxMenuItem;
1111
import javax.swing.JMenu;
12+
import javax.swing.SwingUtilities;
1213
import java.util.HashMap;
1314
import java.util.Map;
1415

16+
import static java.util.concurrent.CompletableFuture.runAsync;
17+
1518
public class StatsMenu extends AbstractEnigmaMenu {
1619
private final JCheckBoxMenuItem enableIcons = new JCheckBoxMenuItem();
1720
private final JCheckBoxMenuItem includeSynthetic = new JCheckBoxMenuItem();
@@ -67,17 +70,17 @@ public void updateState(boolean jarOpen, ConnectionState state) {
6770

6871
private void onEnableIconsClicked() {
6972
Config.main().features.enableClassTreeStatIcons.setValue(this.enableIcons.isSelected());
70-
this.gui.getController().regenerateAndUpdateStatIcons();
73+
this.updateIconsLater();
7174
}
7275

7376
private void onIncludeSyntheticClicked() {
7477
Config.main().stats.shouldIncludeSyntheticParameters.setValue(this.includeSynthetic.isSelected());
75-
this.gui.getController().regenerateAndUpdateStatIcons();
78+
this.updateIconsLater();
7679
}
7780

7881
private void onCountFallbackClicked() {
7982
Config.main().stats.shouldCountFallbackNames.setValue(this.countFallback.isSelected());
80-
this.gui.getController().regenerateAndUpdateStatIcons();
83+
this.updateIconsLater();
8184
}
8285

8386
private void onCheckboxClicked(StatType type) {
@@ -89,6 +92,10 @@ private void onCheckboxClicked(StatType type) {
8992
Config.stats().includedStatTypes.value().remove(type);
9093
}
9194

92-
this.gui.getController().regenerateAndUpdateStatIcons();
95+
this.updateIconsLater();
96+
}
97+
98+
private void updateIconsLater() {
99+
SwingUtilities.invokeLater(() -> runAsync(() -> this.gui.getController().regenerateAndUpdateStatIcons()));
93100
}
94101
}

0 commit comments

Comments
 (0)