[8] request for review: 7146550: [macosx] DnD test failure in createCompatibleWritableRaster()
Sergey Bylokhov
Sergey.Bylokhov at oracle.com
Tue May 22 05:48:45 PDT 2012
22.05.2012 12:14, Andrew Brygin wrote:
> Hi Sergey,
>
> please see my comments inline.
> On 21.05.2012 16:28, Sergey Bylokhov wrote:
>> Hi. Andrew.
>> Fix looks good.
>> But I have another 2 question.
>> 1 Is it possible to leak Graphics object in the
>> CImage.imageToArray()? probably g2.dispose(); should be called in the
>> finally block?
> I do not think so: the toolkit image which we are going to draw is
> already prepared and has a good state,
> so I do not see why do we need a finally block here. Could you please
> explain in more details what scenario
> do you have in mind?
>
> It is not a bug deal to add a finally block here, but we have be able
> to prevent a leak even if dispose() method
> was not invoked, because the spec does not make such claims. If we
> strongly need it to be called, I think we
> are in trouble...
>
>> 2 In the windows implementation ex.getMessage() added to "drag image
>> creation problem:". Also exception text a bit different(dot and colon).
> It is a statement. What is the question? Would you like to see the
> exception message to be exactly same as on windows?
yes, if there is no reason to have different messages.
>
> Looking for two next questions :)
>
> Thanks,
> Andrew
>>
>>
>> 21.05.2012 16:07, Andrew Brygin wrote:
>>> Hi Sergey,
>>>
>>> thanks for the review!
>>>
>>> I have updated the fix according to your comments:
>>> - debug output is removed,
>>> - image with zero dimension is accepted.
>>>
>>> Please take a look to updated webrev:
>>> http://cr.openjdk.java.net/~bae/7146550/webrev.01/
>>>
>>> Thanks,
>>> Andrew
>>>
>>> On 21.05.2012 15:55, Sergey Bylokhov wrote:
>>>> Hi, Andrew.
>>>> Two questions:
>>>> 1 Probably System.err.println("createFromImage: buffer: " +
>>>> buffer); should be removed from CImage.createFromImage()?
>>>> 2 I guess windows implementation uses images with width&height=0 as
>>>> the correct image. Should we do the same?
>>>>
>>>> 17.05.2012 16:34, Andrew Brygin wrote:
>>>>> Hello,
>>>>>
>>>>> could you please review a fix for 7146550?
>>>>>
>>>>> DnD code does not check whether a toolkit image is ready to be
>>>>> painted
>>>>> into a buffer. We have to do this check in order to get correct
>>>>> image
>>>>> dimension.
>>>>>
>>>>> Suggested fix just delegates the conversion of toolkit image into a
>>>>> CImage instance to a helper class CImage.Creator. This helper class
>>>>> provides two ways to convert a toolkit image int CImage:
>>>>>
>>>>> - immediate conversion: returns valid CImage only if toolkit image
>>>>> has valid dimension, and null otherwise.
>>>>> Immediate conversion works fine for toolkit images which are
>>>>> prepared in advance, or are based on memory image source.
>>>>>
>>>>> - normal conversion: a toolkit image is prepared for rendering
>>>>> using
>>>>> a media tracker.
>>>>>
>>>>> We can not use the normal conversion in case of DnD, because broken
>>>>> toolkit image (whose producer never updates the image state for any
>>>>> reasons) can cause a hang in the DnD the code (test in question
>>>>> implements such scenario).
>>>>>
>>>>> If supplied drag image can not be conversed to CImage (either an
>>>>> exception is thrown or it is not ready, i.e. a result of conversion
>>>>> is null for any reasons) the InvalidDnDOperationException is thrown
>>>>> in order to notify user about the problem with drag image.
>>>>> Note that such approach is already used on windows platform, so with
>>>>> this fix, macosx behaves in a uniform way with windows.
>>>>>
>>>>> Beside this, this fix pushes the drag image (an instance of CImage)
>>>>> down to native DnD machinery in order to be able to display drag
>>>>> images.
>>>>>
>>>>> Bug: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7146550
>>>>> Webrev: http://cr.openjdk.java.net/~bae/7146550/webrev.00/
>>>>>
>>>>> Thanks,
>>>>> Andrew
>>>>
>>>>
>>>
>>
>>
>
--
Best regards, Sergey.
More information about the macosx-port-dev
mailing list