Hi Sergey, Thank you for the review. You suggested a really good solution for the issue. I have updated the fix based on your recommendation. The new version is located at http://cr.openjdk.java.net/~dmarkov/8163979/webrev.02/
Thanks, Dmitry > On 13 Feb 2017, at 20:22, Sergey Bylokhov <sergey.bylok...@oracle.com> wrote: > > Hi, Dmitry. > Probably we can reuse Java_sun_lwawt_macosx_CInputMethod_getNativeLocale? > > And change the java code in the CInputMethodDescriptor to something like: > > static Object[] getAvailableLocalesInternal() { > List<?> workList = nativeGetAvailableLocales(); > Locale nativeLocale = CIM.getNativeLocale() > > if (workList == null && nativeLocale == null)) { > return new Object[] { > Locale.getDefault() > }; > } > if(workList != null && !workList.isEmpty() && nativeLocale == null) { > return workList.toArray(); > } > if((workList == null || workList.isEmpty()) && nativeLocale != null) { > return new Object[] { > nativeLocale; > }; > } > if (!workList.contains(nativeLocale)){ > workList.add(nativeLocale); > } > return workList.toArray(); > } > > >> >> I am sorry, I sent the incorrect version of the fix, (i.e. >> http://cr.openjdk.java.net/~dmarkov/8163979/webrev.00/). It releases >> currenLocale two times. >> The correct version is located at >> http://cr.openjdk.java.net/~dmarkov/8163979/webrev.01/ >> Could you review the updated fix, please? >> >> Thanks, >> Dmitry >>> On 13 Feb 2017, at 16:58, Dmitry Markov <dmitry.mar...@oracle.com> wrote: >>> >>> Hello, >>> >>> Could you review a fix for jdk9, please? >>> >>> bug: https://bugs.openjdk.java.net/browse/JDK-8163979 >>> webrev: http://cr.openjdk.java.net/~dmarkov/8163979/webrev.00/ >>> >>> Problem description: >>> If the current keyboard layout is set to non-default value, (e.g. ABC, ABC >>> Extended, etc) during Java launch, the input method functionality is not >>> initialised correctly and may not work for some input methods, (e.g. >>> OpenVanilla input method). The initialisation problems are caused by >>> nativeGetAvailableLocales() function from CInputMethod.m. The function >>> tries to obtain the list of available input method locales using platform >>> API. If the retrieval is failed for some reason, >>> nativeGetAvailableLocales() returns empty list or null. >>> >>> Fix: >>> The function nativeGetAvailableLocales() should return the list contained >>> the current input method locale, if it cannot retrieve the list of >>> available locales from the platform. >>> >>> >>> Thanks, >>> Dmitry >> >