import java.awt.geom.PathIterator
import java.awt.image.BufferedImage
import java.io.File
+import java.util.concurrent.locks.ReentrantLock
+import kotlin.concurrent.withLock
import kotlin.properties.ReadOnlyProperty
import kotlin.reflect.KProperty
import kotlin.text.toCharArray
.deriveFont(DEFAULT_FONT_SIZE)
}
- @Synchronized
+ private val getValueLock = ReentrantLock()
+
override fun getValue(thisRef: Any?, property: KProperty<*>): Font {
- val font = loadedFont
- val lastMod = fontFile.lastModified()
-
- if (font == null || lastLoaded < lastMod)
- return loadFont().also {
- loadedFont = it
- lastLoaded = lastMod
- }
-
- return font
+ return getValueLock.withLock {
+ val font = loadedFont
+ val lastMod = fontFile.lastModified()
+
+ if (font == null || lastLoaded < lastMod)
+ loadFont().also {
+ loadedFont = it
+ lastLoaded = lastMod
+ }
+ else font
+ }
}
}
}