<AWT Dev> <AWT dev>[9] Review request for JDK-8147841: [macosx] Updating TrayIcons popup menu does not work on Mac OS X

Manajit Halder manajit.halder at oracle.com
Wed Apr 13 11:26:53 UTC 2016


Hi Prasanta,

Could you please push the patch to JDK9 with the following details:

http://cr.openjdk.java.net/~aghaisas/manajit/8147841/webrev.01/ <http://cr.openjdk.java.net/~aghaisas/manajit/8147841/webrev.01/>


8147841: [macosx] Updating TrayIcons popup menu does not work on Mac OS X
Reviewed-by: serb, ssadetsky
username: mhalder

Thanks,
Manajit

> On 13-Apr-2016, at 2:37 pm, Manajit Halder <manajit.halder at oracle.com> wrote:
> 
> Hi Sergey and Semyon,
> 
> Thank you both for the review comments.
> 
> Thanks,
> Manajit
> 
>> On 13-Apr-2016, at 2:01 pm, Semyon Sadetsky <semyon.sadetsky at oracle.com <mailto:semyon.sadetsky at oracle.com>> wrote:
>> 
>> Looks good. 
>> 
>> --Semyon
>> 
>> On 4/1/2016 1:58 PM, Manajit Halder wrote:
>>> Hi Sergey,
>>> 
>>> Thank you for your review comments. The following scenarios were taken care while modifying the code along with your comments.
>>> 
>>> Case 1) popup and newPopup refers to same object. In cases where the same popup menu is used thorughout the execution of the program or both of them are null.
>>>     a) first popup menu is null 
>>> 		return 0 as address.
>>>     b) first popup menu is not null
>>> 		poupup is already set in the constructor.
>>>     
>>> Case 2) popup and newPopup refers to different objects.
>>>     a) newPopup is not null.
>>>         i) popup is not null 
>>> 		call removeNotify() on popup and set it to newPopup
>>>         ii) popup is null 
>>> 		set popup to newPoup
>>>     b) newPopup is null then return 0 address (In this case the first popup menu is not checked for null because we are interested in the newPopup).
>>> 
>>> Please review the modified code @ 
>>>  <http://cr.openjdk.java.net/%7Eaghaisas/manajit/8147841/webrev.01/>http://cr.openjdk.java.net/~aghaisas/manajit/8147841/webrev.01/ <http://cr.openjdk.java.net/~aghaisas/manajit/8147841/webrev.01/>
>>> 
>>> Thanks,
>>> Manajit
>>> 
>>>> On 30-Mar-2016, at 11:53 pm, Sergey Bylokhov <Sergey.Bylokhov at oracle.com <mailto:Sergey.Bylokhov at oracle.com>> wrote:
>>>> 
>>>> Hi, Manajit.
>>>> Please double check two cases.
>>>> - The initial popup menu is set to null in CTrayIcon(); it seems after the fix it will never be changed to non-null value.
>>>> - Who and when will call removeNotify() on the old popup menu after you replace it by the new popup. it will be leaked?
>>>> 
>>>> On 30.03.16 15:45, Manajit Halder wrote:
>>>>> Hi All,
>>>>> 
>>>>> Kindly review the fix for JDK9.
>>>>> 
>>>>> *Bug*:
>>>>> _https://bugs.openjdk.java.net/browse/JDK-8147841_ <https://bugs.openjdk.java.net/browse/JDK-8147841_>
>>>>> _
>>>>> _
>>>>> *Webrev*:
>>>>> http://cr.openjdk.java.net/~arapte/manajit/8147841/webrev.00/ <http://cr.openjdk.java.net/%7Earapte/manajit/8147841/webrev.00/>
>>>>> 
>>>>> *Issue: *
>>>>> [macosx] Updating TrayIcons popup menu does not work on Mac OS X.
>>>>> 
>>>>> *Cause: *
>>>>> Wrong address of Popup menu was referred by native code (Mac OS). The
>>>>> native side was always referring to the popup menu created initially and
>>>>> the popup menu created later was not referred by the native code. Popup
>>>>> menu was getting updated internally (in java code), the new popup menu
>>>>> was not getting accessed/used by the native code (mac os x).
>>>>> 
>>>>> Explanation with code points as below:
>>>>> 
>>>>> File CTrayIcon.m:
>>>>> On mouseDown event java method getPopupMenuModel was called
>>>>> using JNFCallLongMethod. getPopupMenuModel on the java side was always
>>>>> returning the address of the popup menu created initially and because of
>>>>> this updated popup menus was not getting shown on clicking the Tray icon.
>>>>> 
>>>>> *Fix: *
>>>>> In method getPopupMenuModel the address of the new popup menu is updated
>>>>> in case there is a new popup menu. If the new popup points to null then
>>>>> 0 is returned as address. And in cases the new popup and the initial
>>>>> popup menu are same then the initial popup menu's address is returned.
>>>>> 
>>>>> 
>>>>> Regards,
>>>>> Manajit
>>>> 
>>>> 
>>>> -- 
>>>> Best regards, Sergey.
>>> 
>> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/awt-dev/attachments/20160413/39046d08/attachment.html>


More information about the awt-dev mailing list