<AWT Dev> [9] Review request for 8033534 Get MultiResolution image from native system

Sergey Bylokhov Sergey.Bylokhov at oracle.com
Tue Mar 4 12:41:45 UTC 2014


On 3/4/14 4:35 PM, Alexander Scherbatiy wrote:
>
>  Could you review the updated fix:
>     http://cr.openjdk.java.net/~alexsch/8033534/webrev.05/
>
>   - JNU_CHECK_EXCEPTION_RETURN(env, NULL) after the 
> SetObjectArrayElement call.
>     Hope that the exception will never be thrown in the production code.
Thanks. The fix looks good.

>
>   Thanks,
>   Alexandr.
>
> On 3/4/2014 4:12 PM, Sergey Bylokhov wrote:
>> On 3/4/14 3:53 PM, Petr Pchelko wrote:
>>> I'm fine with the fix.
>>>
>>>>> Hello, Alexander.
>>>>>
>>>>> In CImage.m:430 - Do we really want to describe and clear the 
>>>>> exception?
>>>>> May be it's better to simply return NULL and let Java handle the 
>>>>> exception?
>>>>> This made sense when you were continuing the loop, but now doesn't.
>>>>    The exception is cleared because it should not be thrown on the 
>>>> Java side.
>>>>    For example the 
>>>> Toolkit.getDefaultToolkit().getImage("NSImage://NSApplicationIcon") 
>>>> call
>>>>    should not throw an exception in case if 
>>>> nativeGetNSImageRepresentationSizes() call fails.
>>>>    It should just return an Image without resolution variants.
>>>>    The ExceptionDescribe is left just for debugging purposes.
>>> In real life this will never happen, so I'm fine with any decision)
>>> Just CHECK_EXCEPTION_RETUEN looks nicer than these 3 lines.
>> I agree. If call to nativeGetNSImageRepresentationSizes will fail, 
>> will mean that some error exists in our code and it will be better to 
>> fail fast in this case, just return and throw and exception on java 
>> side.
>>>
>>> With best regards. Petr.
>>>
>>> On 04.03.2014, at 15:39, Alexander Scherbatiy 
>>> <alexandr.scherbatiy at oracle.com> wrote:
>>>
>>>> On 3/4/2014 3:30 PM, Petr Pchelko wrote:
>>>>> Hello, Alexander.
>>>>>
>>>>> In CImage.m:430 - Do we really want to describe and clear the 
>>>>> exception?
>>>>> May be it's better to simply return NULL and let Java handle the 
>>>>> exception?
>>>>> This made sense when you were continuing the loop, but now doesn't.
>>>>    The exception is cleared because it should not be thrown on the 
>>>> Java side.
>>>>    For example the 
>>>> Toolkit.getDefaultToolkit().getImage("NSImage://NSApplicationIcon") 
>>>> call
>>>>    should not throw an exception in case if 
>>>> nativeGetNSImageRepresentationSizes() call fails.
>>>>    It should just return an Image without resolution variants.
>>>>    The ExceptionDescribe is left just for debugging purposes.
>>>>
>>>>   Thanks,
>>>>   Alexandr.
>>>>
>>>>> With best regards. Petr.
>>>>>
>>>>> On 04.03.2014, at 15:04, Alexander Scherbatiy 
>>>>> <alexandr.scherbatiy at oracle.com> wrote:
>>>>>
>>>>>>   Hello,
>>>>>>
>>>>>> Could you review the updated fix:
>>>>>>    http://cr.openjdk.java.net/~alexsch/8033534/webrev.04
>>>>>>
>>>>>>   - NULL is returned for all cases from the 
>>>>>> nativeGetNSImageRepresentationsCount method
>>>>>>   - long lines are split
>>>>>>   - SetObjectArrayElement can throw 
>>>>>> ArrayIndexOutOfBoundsException and ArrayStoreException exceptions.
>>>>>>     We do not expect neither of them because the same length and 
>>>>>> type is used for the array creation and element settings.
>>>>>>     I updated the exception handling to return NULL if an 
>>>>>> exception occurs.
>>>>>>
>>>>>>   Thanks,
>>>>>>   Alexandr.
>>>>>>
>>>>>>
>>>>>> On 3/3/2014 11:48 PM, Sergey Bylokhov wrote:
>>>>>>> Hi, Alexander.
>>>>>>> nativeGetNSImageRepresentationsCount three times return 
>>>>>>> different values in case of error (0, NULL, nil).
>>>>>>> What exception we expect from the SetObjectArrayElement and why 
>>>>>>> we continue in this case?
>>>>>>> Also please split soooooooooooooo long lines in these files.
>>>>>>>
>>>>>>> On 2/26/14 6:40 PM, Alexander Scherbatiy wrote:
>>>>>>>> Hello,
>>>>>>>>
>>>>>>>>   Could you review the updated fix:
>>>>>>>> http://cr.openjdk.java.net/~alexsch/8033534/webrev.03/
>>>>>>>>
>>>>>>>> On 2/26/2014 4:54 PM, Petr Pchelko wrote:
>>>>>>>>> Hello, Alexander.
>>>>>>>>>
>>>>>>>>> I have a couple of comments:
>>>>>>>>>
>>>>>>>>> 1. You could replace the first loop with 
>>>>>>>>> indexOfObjectPassingTest method.. Not sure if this would look 
>>>>>>>>> cleaner, up to you.
>>>>>>>>     Updated. There is one more way to use one loop instead of 
>>>>>>>> two. All of them does not look simple.
>>>>>>>>
>>>>>>>>>   2. I suppose JNFNewObjectArray could throw the OOM and we 
>>>>>>>>> would get a parfait warning, could you please add 
>>>>>>>>> CHECK_NULL_RETURN after it.
>>>>>>>>     CHECK_NULL_RETURN is added.
>>>>>>>>> 3. In CImage.java you are setting the currentImageIndex to the 
>>>>>>>>> biggest image representation smaller that the one requested 
>>>>>>>>> and this representation
>>>>>>>>> would be used as a base one in the 
>>>>>>>>> MultiResolutionBufferedImage. However in 
>>>>>>>>> MultiResolutionBufferedImage getResolutionVariant you are 
>>>>>>>>> returning
>>>>>>>>> the smallest variant bigger than the requested one. Is this 
>>>>>>>>> correct?
>>>>>>>>     I think that it is correct. Assume that an image with size 
>>>>>>>> 300x300 is requested but there are only resolution variants 
>>>>>>>> with sizes [250x250] and [350x350].
>>>>>>>>     The resolution variant with  [350x350] size is used as the 
>>>>>>>> base image.  Now we need to draw the image to region [300x300]. 
>>>>>>>> The resolution variant
>>>>>>>>     with size [350x350] will be used from the MultiResolution 
>>>>>>>> image.
>>>>>>>>
>>>>>>>>   Thanks,
>>>>>>>>   Alexandr.
>>>>>>>>
>>>>>>>>
>>>>>>>>> Thank you.
>>>>>>>>> With best regards. Petr.
>>>>>>>>>
>>>>>>>>> On 26.02.2014, at 16:08, Alexander Scherbatiy 
>>>>>>>>> <alexandr.scherbatiy at oracle.com> wrote:
>>>>>>>>>
>>>>>>>>>>   Hello,
>>>>>>>>>>
>>>>>>>>>>   Could you review the updated fix:
>>>>>>>>>> http://cr.openjdk.java.net/~alexsch/8033534/webrev.02/
>>>>>>>>>>
>>>>>>>>>>   This is the same fix. The only difference is that the 
>>>>>>>>>> MultiResolutionBufferedImage class is used from the fix 
>>>>>>>>>> JDK-8035069.
>>>>>>>>>>
>>>>>>>>>>   Thanks,
>>>>>>>>>>   Alexandr.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On 2/10/2014 7:05 PM, Scott Palmer wrote:
>>>>>>>>>>> Just to be clear, "the image representations are chosen to 
>>>>>>>>>>> be closest to the requested size" is not accurate.
>>>>>>>>>>> This change returns the smallest image representation that 
>>>>>>>>>>> is greater than or equal to the requested size.  (Which I 
>>>>>>>>>>> believe is the correct thing to do.)
>>>>>>>>>>> A smaller image representation may be closer to the 
>>>>>>>>>>> requested size, but it makes more sense to return a larger 
>>>>>>>>>>> image since scaling down to size should produce better 
>>>>>>>>>>> results than scaling up.
>>>>>>>>>>>
>>>>>>>>>>> Scott
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Mon, Feb 10, 2014 at 8:53 AM, Alexander Scherbatiy 
>>>>>>>>>>> <alexandr.scherbatiy at oracle.com 
>>>>>>>>>>> <mailto:alexandr.scherbatiy at oracle.com>> wrote:
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>     Could you review the updated fix:
>>>>>>>>>>> http://cr.openjdk.java.net/~alexsch/8033534/webrev.01
>>>>>>>>>>> <http://cr.openjdk.java.net/%7Ealexsch/8033534/webrev.01>
>>>>>>>>>>>
>>>>>>>>>>>      - The image representations are chosen to be closest to 
>>>>>>>>>>> the
>>>>>>>>>>>     requested size.
>>>>>>>>>>>
>>>>>>>>>>>       Thanks,
>>>>>>>>>>>       Alexandr.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>     On 2/4/2014 5:00 PM, Sergey Bylokhov wrote:
>>>>>>>>>>>
>>>>>>>>>>>         Hi, Alexander.
>>>>>>>>>>>         I think that getResolutionVariant should return an 
>>>>>>>>>>> image which
>>>>>>>>>>>         is close as much as possible to the requested size.
>>>>>>>>>>>
>>>>>>>>>>>         On 04.02.2014 16:42, Alexander Scherbatiy wrote:
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>             Hello,
>>>>>>>>>>>
>>>>>>>>>>>             Could you review the fix:
>>>>>>>>>>>               bug: 
>>>>>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8033534
>>>>>>>>>>>               webrev:
>>>>>>>>>>> http://cr.openjdk.java.net/~alexsch/8033534/webrev.00
>>>>>>>>>>> <http://cr.openjdk.java.net/%7Ealexsch/8033534/webrev.00>
>>>>>>>>>>>
>>>>>>>>>>>             - The method that gets a sorted array of NSImage
>>>>>>>>>>>             representaion pixel sizes for the given image 
>>>>>>>>>>> size is added
>>>>>>>>>>>             - A MultiResolution image is created if an 
>>>>>>>>>>> NSImage has
>>>>>>>>>>>             several representations for the given image size
>>>>>>>>>>>
>>>>>>>>>>>             Thanks,
>>>>>>>>>>>             Alexandr.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>> -- 
>>>>>>> Best regards, Sergey.
>>
>>
>


-- 
Best regards, Sergey.



More information about the awt-dev mailing list