Commit 21f32b85 authored by Nikolay Igotti's avatar Nikolay Igotti

Optimize library loading.

parent 41ad22b9
package org.jetbrains.skija.impl package org.jetbrains.skija.impl
import org.jetbrains.skiko.Library import org.jetbrains.skiko.Library
import java.util.concurrent.atomic.AtomicBoolean
class Library { class Library {
companion object { companion object {
var loaded = AtomicBoolean(false)
@JvmStatic @JvmStatic
fun staticLoad() { fun staticLoad() {
if (!loaded.compareAndExchange(false, true)) {
Library.load() Library.load()
} }
}
@JvmStatic @JvmStatic
external fun _nAfterLoad() external fun _nAfterLoad()
......
...@@ -7,8 +7,6 @@ import java.nio.file.Files ...@@ -7,8 +7,6 @@ import java.nio.file.Files
import java.nio.file.StandardCopyOption import java.nio.file.StandardCopyOption
object Library { object Library {
private var loaded = false
private val skikoLibraryPath = System.getProperty("skiko.library.path") private val skikoLibraryPath = System.getProperty("skiko.library.path")
private val cacheRoot = "${System.getProperty("user.home")}/.skiko/" private val cacheRoot = "${System.getProperty("user.home")}/.skiko/"
...@@ -32,8 +30,6 @@ object Library { ...@@ -32,8 +30,6 @@ object Library {
// localization resource on platforms wher it is needed. // localization resource on platforms wher it is needed.
@Synchronized @Synchronized
fun load() { fun load() {
if (loaded) return
val name = "skiko-$hostId" val name = "skiko-$hostId"
val platformName = System.mapLibraryName(name) val platformName = System.mapLibraryName(name)
...@@ -55,6 +51,7 @@ object Library { ...@@ -55,6 +51,7 @@ object Library {
loadOrGet(cacheDir, resourcePath, platformName, true) loadOrGet(cacheDir, resourcePath, platformName, true)
val loadIcu = hostOs.isWindows val loadIcu = hostOs.isWindows
if (loadIcu) { if (loadIcu) {
println("Loading ICU")
loadOrGet(cacheDir, resourcePath, "icudtl.dat", false) loadOrGet(cacheDir, resourcePath, "icudtl.dat", false)
} }
} }
...@@ -69,11 +66,9 @@ object Library { ...@@ -69,11 +66,9 @@ object Library {
try { try {
// Init code executed after library was loaded. // Init code executed after library was loaded.
org.jetbrains.skija.impl.Library._nAfterLoad() org.jetbrains.skija.impl.Library._nAfterLoad()
println("after load called")
} catch (t: Throwable) { } catch (t: Throwable) {
t.printStackTrace() t.printStackTrace()
} }
loaded = true
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment