diff --git a/platform/util/src/com/intellij/jna/JnaLoader.java b/platform/util/src/com/intellij/jna/JnaLoader.java index de7956ae0eef..ad6f2a134daa 100644 --- a/platform/util/src/com/intellij/jna/JnaLoader.java +++ b/platform/util/src/com/intellij/jna/JnaLoader.java @@ -1,35 +1,39 @@ -/* - * Copyright 2000-2016 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2000-2017 JetBrains s.r.o. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. package com.intellij.jna; import com.intellij.openapi.diagnostic.Logger; import com.sun.jna.Native; public class JnaLoader { - private static volatile boolean ourJnaLoaded = false; + private static Boolean ourJnaLoaded = null; - public static void load(Logger logger) { - long t = System.currentTimeMillis(); - int ptrSize = Native.POINTER_SIZE; - t = System.currentTimeMillis() - t; - logger.info("JNA library (" + (ptrSize << 3) + "-bit) loaded in " + t + " ms"); - ourJnaLoaded = true; + public static synchronized void load(Logger logger) { + if (ourJnaLoaded == null) { + ourJnaLoaded = Boolean.FALSE; + long t = System.currentTimeMillis(); + int ptrSize = Native.POINTER_SIZE; + t = System.currentTimeMillis() - t; + logger.info("JNA library (" + (ptrSize << 3) + "-bit) loaded in " + t + " ms"); + ourJnaLoaded = Boolean.TRUE; + } } - public static boolean isLoaded() { + public static synchronized boolean isLoaded() { + if (ourJnaLoaded == null) { + load(Logger.getInstance(JnaLoader.class)); + } return ourJnaLoaded; } } \ No newline at end of file