On Fri, 22 Jan 2021 10:35:13 GMT, Sergey Bylokhov <s...@openjdk.org> wrote:
>> This change intended to enhance the lazy initialization of the standard >> color profiles concurrently by different threads. >> >> We defer standard profiles loading because most of UI application uses a >> small amount of data from the profile like numComponents and colorSpaceType, >> and this data is known in advance. But any other profile-related activity >> (like a color conversion, profile data accesses, etc.) triggers profile >> activation when we load all profile data to the memory. >> >> Before the fix for JDK-6793818, we defer only one sRGB color profile, see: >> https://github.com/openjdk/jdk/commit/2726f2a3621dd2562d4fb660b4c3d376c65027aa >> >> Notes about the link above: >> - The code in the ProfileDeferralMgr, which contain the Vector of profiles >> for activation does not use any synchronization >> - The `activateDeferredProfile` and `activate` methods are implemented to >> throw `ProfileDataException`, but this exception is ignored during >> activation process: >> >> https://github.com/openjdk/jdk/commit/2726f2a3621dd2562d4fb660b4c3d376c65027aa#diff-0839c25a6c999452be28b431c54d5daa91364d302cfda6efa5c56421c2f2bdcbR96 >> >> The fix: >> - Drops the usage of ProfileDeferralMgr (which contained the Vector of >> profiles for activation) and ProfileActivator machinery. Instead, we will >> have just one `ICC_Profile.activate()` method which will activate and >> initialize the `ICC_Profile.cmmProfile` if it is null >> - The `activate` method implementation mimics the old behavior when the >> CMMException and IOException were wrapped by the ProfileDataException, and >> the ProfileDataException itself was ignored during activation - > so an >> exception will not be thrown in the method itself, but only when the null >> profile will be used. >> >> See some comments inline. > > Sergey Bylokhov has updated the pull request with a new target base due to a > merge or a rebase. The pull request now contains 14 commits: > > - Merge branch 'master' into JDK-6986863 > - Merge branch 'master' into JDK-6986863 > - Update ProfileActivationDuringPropertyAccess.java > - Merge branch 'master' into JDK-6986863 > - Merge branch 'master' into JDK-6986863 > - Merge branch 'master' into JDK-6986863 > - Merge branch 'master' into JDK-6986863 > - Delete the DeferralMgr machinery > - Update ICC_Profile.java > - Wrong spec in ProfileDeferralInfo > - ... and 4 more: > https://git.openjdk.java.net/jdk/compare/14522800...ecfc1ed8 src/java.desktop/share/classes/sun/java2d/cmm/lcms/LCMSTransform.java line 2: > 1: /* > 2: * Copyright (c) 2007, 2020, Oracle and/or its affiliates. All rights > reserved. Review took so long that years here and in other headers of modified files needs to be updated. ------------- PR: https://git.openjdk.java.net/jdk/pull/1613