File tree Expand file tree Collapse file tree
src/main/java/com/jthemedetecor Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -39,11 +39,14 @@ class MacOSThemeDetector extends OsThemeDetector {
3939
4040 private final Set <Consumer <Boolean >> listeners = Collections .synchronizedSet (new HashSet <>());
4141 private final Pattern themeNamePattern = Pattern .compile (".*dark.*" , Pattern .CASE_INSENSITIVE );
42+ private final Object iterateLock = new Object ();
4243
4344 private final Callback themeChangedCallback = new Callback () {
4445 @ SuppressWarnings ("unused" )
4546 public void callback () {
46- notifyListeners (isDark ());
47+ synchronized (iterateLock ) {
48+ notifyListeners (isDark ());
49+ }
4750 }
4851 };
4952
@@ -97,12 +100,16 @@ private boolean isDarkTheme(String themeName) {
97100
98101 @ Override
99102 public void registerListener (@ NotNull Consumer <Boolean > darkThemeListener ) {
100- listeners .add (darkThemeListener );
103+ synchronized (iterateLock ) {
104+ listeners .add (darkThemeListener );
105+ }
101106 }
102107
103108 @ Override
104109 public void removeListener (@ Nullable Consumer <Boolean > darkThemeListener ) {
105- listeners .remove (darkThemeListener );
110+ synchronized (iterateLock ) {
111+ listeners .remove (darkThemeListener );
112+ }
106113 }
107114
108115 private void notifyListeners (boolean isDark ) {
You can’t perform that action at this time.
0 commit comments