> 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 13 commits: - 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 - Update ICC_Profile.java - ... and 3 more: https://git.openjdk.java.net/jdk/compare/d63388c0...884f9e90 ------------- Changes: https://git.openjdk.java.net/jdk/pull/1613/files Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=1613&range=03 Stats: 520 lines in 9 files changed: 183 ins; 265 del; 72 mod Patch: https://git.openjdk.java.net/jdk/pull/1613.diff Fetch: git fetch https://git.openjdk.java.net/jdk pull/1613/head:pull/1613 PR: https://git.openjdk.java.net/jdk/pull/1613