<Swing Dev> [9] Review request for 8164032 JViewport backing store image is not scaled on HiDPI display

Alexandr Scherbatiy alexandr.scherbatiy at oracle.com
Thu Sep 1 08:25:45 UTC 2016


Hi Sergey,

According to your previous comments:
- VolatileImage.validate(GraphicsConfiguration) does not return 
IMAGE_INCOMPATIBLE for a graphics configuration which default transform 
was changed.
   This is because the BufImgVolatileSurfaceManager has acceleration 
disabled and it skips check to the valid graphics configuration.
   I have filled an issue on it: JDK-8165212 VolatileImage is compatible 
with GraphicsConfiguration which transform is changed

- JViewport.backingStoreImage field is protected so it is not possible 
to change its type. Moreover, it is not clear can a someone override 
JViewport and use backingStoreImage as a buffered image so he does not 
expect that the image content can be lost.

Could we just file a new issue that the backing store image can be 
changed to VolatileImage in JViewport and return to discussion where 
graphics scale changing is checked:
   http://cr.openjdk.java.net/~alexsch/8164032/webrev.02

   Thanks,
   Alexandr.

On 8/30/2016 3:54 PM, Alexandr Scherbatiy wrote:
>
> Hello,
>
> Could you review the updated fix:
>   http://cr.openjdk.java.net/~alexsch/8164032/webrev.04/
>
> The Component.createVolatileImage() is used to create a backing store 
> volatile image.
>
> On 8/29/2016 4:18 PM, Sergey Bylokhov wrote:
>> On 19.08.16 10:15, Alexandr Scherbatiy wrote:
>>> On 8/18/2016 3:05 PM, Alexandr Scherbatiy wrote:
>>>>
>>>> Hello,
>>>>
>>>> Could you review the updated fix:
>>>>   http://cr.openjdk.java.net/~alexsch/8164032/webrev.02
>>>>
>>>>   The backing store image is recreated for the case where scaled sizes
>>>> are changed.
>>>
>>>   A version where a VolatileImage is used as a backing store image:
>>>     http://cr.openjdk.java.net/~alexsch/8164032/webrev.03/
>>
>> The VI case looks simpler. I guess it can be simplified even more:
>> Peobably this code  is unnecessary?
>> } else if (vImg instanceof SunVolatileImage) {
>>  753                     SunVolatileImage svImg = (SunVolatileImage) 
>> vImg;
>>  754                     if 
>> (!graphicsConfig.equals(svImg.getGraphicsConfig())) {
>>  755                         backingStoreImage = null;
>>  756                     }
>>  757                 }
>>
>> My understanding is that if VI.validate!=IMAGE_INCOMPATIBLE then we 
>> can use it for drawing even if the GC is different?
>   Different graphics configurations can have different default 
> transforms. The backing store image should be recreated in this case.
>
>   Thanks,
>   Alexandr.
>> Probably we can reuse Component.createVolatileImage() instead of 
>> createImage()?
>>
>> Also can you please check a performance of these two solutions?
>>
>>
>>>
>>>   Thanks,
>>>   Alexandr.
>>>>
>>>> Thanks,
>>>> Alexandr.
>>>>
>>>> On 8/17/2016 5:05 PM, Sergey Bylokhov wrote:
>>>>> On 17.08.16 14:02, Alexandr Scherbatiy wrote:
>>>>>>
>>>>>> Hello,
>>>>>>
>>>>>> Could you review the updated fix:
>>>>>>   http://cr.openjdk.java.net/~alexsch/8164032/webrev.01
>>>>>>
>>>>>> The generic transform is used for the backing store image scaling.
>>>>>
>>>>> As far as I understand the current fix will not work if the scale was
>>>>> changed(the JViewport will use old buffer)?
>>>>>
>>>>> It seems that the new local AbstractMultiResolutionImage contain only
>>>>> one image variant inside and looks quite similar to the
>>>>> VolatileImage, probably we can change this cache from BufferedImage
>>>>> to VolatileImage? In this case the scale of the VI will be the same
>>>>> as "g":
>>>>> g.getDeviceConfiguration().createCompatibleVolatileImage()
>>>>>
>>>>>
>>>>>> On 8/15/2016 4:58 PM, Sergey Bylokhov wrote:
>>>>>>> Hi, Alexandr.
>>>>>>> I doubt that getScaleX/getScaleY can be used here because the scale
>>>>>>> can be generic(translate+rotate+scale). How this cache will work if
>>>>>>> transform will be changed after we save "backingStoreImage"?
>>>>>>>
>>>>>>> On 15.08.16 16:16, Alexandr Scherbatiy wrote:
>>>>>>>>
>>>>>>>> Hello,
>>>>>>>>
>>>>>>>> Could you review the fix:
>>>>>>>>   bug: https://bugs.openjdk.java.net/browse/JDK-8164032
>>>>>>>>   webrev: http://cr.openjdk.java.net/~alexsch/8164032/webrev.00
>>>>>>>>
>>>>>>>>   The fix scales the JViewport backing store image when graphics
>>>>>>>> transform is not identity.
>>>>>>>>
>>>>>>>>  Thanks,
>>>>>>>>  Alexandr.
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>
>>
>




More information about the swing-dev mailing list