<AWT Dev> [9] Review request for 8035069 [macosx] Loading resolution variants by demand
Petr Pchelko
petr.pchelko at oracle.com
Fri Mar 14 18:38:13 UTC 2014
Hello, Alexander.
The updated version of the fix looks good to me.
With best regards. Petr.
14 марта 2014 г., в 7:53 после полудня, Alexander Scherbatiy <alexandr.scherbatiy at oracle.com> написал(а):
>
> Hello,
>
> Could you review the updated fix:
> http://cr.openjdk.java.net/~alexsch/8035069/webrev.01
>
> On 3/13/2014 12:21 PM, Petr Pchelko wrote:
>> Hello, Alexander.
>>
>> 1. As Sergey always says, could you please split the long lines.
>> 2. Instead of the MultiResolutionImageMapper you could use a BiFunction<Image, Integer, Integer>
>> 3. About the ImageCache. As it's uses an AppContext, could you please mention in the JavaDoc that is must be used from the thread with an AppContext only?
> 1. 2. and 3 are updated.
>> 4. I don't really like that you are duplicating the RecyclableSingleton class. May be it's better to make also move it out from com.apple.laf and reuse?
> I have added the getSoftReferenceValue(Object key, Supplier<T> supplier) method to the AppContext class. It should reduce the code duplication.
>> 5. Looks like the old ImageCache contained the following lines:
>>
>> 116 if (state.is(JRSUIConstants.Animating.YES)) {
>> 117 return false;
>> 118 }
>> I agree that these are probably not needed, but could you please verify that? Also after these were removed the ImageCache.setImage never returns false, so it could be made void.
> Thank you for pointing it out. This is the necessary check for the animated images in the Aqua L&F. I just forgot to move it to the AquaPainter.
>
> I have found one more issue that ImageIcon preloads images by calling image.getProperty("comment", imageObserver) where the imageObserver
> is usually null. The MultiResolutionBufferedImage created non-preloaded resolution variants and they were not shown because JMenuItem as an image observer
> returns false for the image loading. This is described in the issue 8037405 JMenuItem should check L&F icons in the image observer
> https://bugs.openjdk.java.net/browse/JDK-8037405
>
> It seems as a common problem so I added resolution variants preloading to the MultiResolutionBufferedImage.
>
> Thanks,
> Alexandr.
>> With best regards. Petr.
>>
>> On 12.03.2014, at 19:03, Alexander Scherbatiy <alexandr.scherbatiy at oracle.com> wrote:
>>
>>> Hello,
>>>
>>> Could you review the fix:
>>> bug: https://bugs.openjdk.java.net/browse/JDK-8035069
>>> webrev: http://cr.openjdk.java.net/~alexsch/8035069/webrev.00
>>>
>>> Image resolution variants are generated by request and cached in the ImageCache.
>>>
>>> - ImageCache is refactored to store different type of images and moved to sun.awt.image package.
>>> - An object is used as the cache key instead of hash code to prevent inetsection of hash codes for
>>> different type of images.
>>> - The base image for MultiResolutionBufferedImage is not cached and used for the hash code calculation
>>> in the getResolutionVariant method.
>>>
>>> Thanks,
>>> Alexandr.
>>>
>
More information about the awt-dev
mailing list