<AWT Dev> RFR: 8208996 X11 icon window color handing bug

Sergey Bylokhov Sergey.Bylokhov at oracle.com
Tue Aug 7 02:09:09 UTC 2018


Looks fine.

On 06/08/2018 09:06, Ichiroh Takiguchi wrote:
> Thanks Sergey.
> 
> Hello.
> Could you review it ?
> 
> Bug:    https://bugs.openjdk.java.net/browse/JDK-8208996
> Change: http://cr.openjdk.java.net/~aleonard/8208996/webrev.00/
> 
> Thanks,
> Ichiroh Takiguchi
> IBM Japan, Ltd.
> 
> On 2018-08-05 10:10, Sergey Bylokhov wrote:
>> Hello.
>> I was able to reproduce the bug as described and verify that the
>> proposed fix works.
>> I have filed a bug:
>> https://bugs.openjdk.java.net/browse/JDK-8208996
>> Please send an official review request.
>>
>> Thank you for the fix.
>>
>> On 13/06/2018 02:36, Ichiroh Takiguchi wrote:
>>> Hello,
>>> IBM would like to contribute X11 icon window color handing patch to 
>>> OpenJDK project.
>>>
>>> Issue:
>>> It seems some of colors on icon for pseudo color are not appropriate.
>>> Test program is as follows:
>>> ======
>>> $ cat IconifiedFrame.java
>>> import java.awt.*;
>>> import java.awt.event.*;
>>>
>>> public class IconifiedFrame extends Frame {
>>>    IconifiedFrame() {
>>>      super("IconifiedFrame");
>>>      setSize(100, 100);
>>>      addWindowListener(new WindowAdapter() {
>>>        public void windowClosing(WindowEvent event) { System.exit(0); }
>>>      });
>>>      setExtendedState(Frame.ICONIFIED);
>>>      setVisible(true);
>>>    }
>>>    public static void main(String[] args) {
>>>      new IconifiedFrame();
>>>    }
>>> }
>>> ======
>>>
>>> To recreate this issue on RHEL7, please try following steps.
>>> (xorg-x11-server-Xephyr and openmotif rpm packages are required)
>>>
>>> 1. Type following commands from terminal
>>> $ Xephyr :1 -ac -screen 800x600x8 &
>>> $ xterm -display :1 &
>>> 2. On xterm on Xephyr
>>> $ mwm &
>>> $ javac IconifiedFrame.java
>>> $ java IconifiedFrame
>>>
>>> Reason:
>>> Pseudo color is handled by unsigned byte data.
>>> But Java's byte is signed, it was not converted to unsigned.
>>> Modified code is as follows:
>>> ======
>>> --- old/src/java.desktop/unix/classes/sun/awt/X11/XIconWindow.java 
>>>  2018-06-13 16:23:17.889946251 +0900
>>> +++ new/src/java.desktop/unix/classes/sun/awt/X11/XIconWindow.java 
>>>  2018-06-13 16:23:17.274958922 +0900
>>> @@ -281,8 +281,9 @@
>>>                   ColorData cdata = adata.get_color_data(0);
>>>                   int num_colors = cdata.get_awt_numICMcolors();
>>>                   for (int i = 0; i < buf.length; i++) {
>>> -                    buf[i] = (buf[i] >= num_colors) ?
>>> -                        0 : cdata.get_awt_icmLUT2Colors(buf[i]);
>>> +                    int b = Byte.toUnsignedInt(buf[i]);
>>> +                    buf[i] = (b >= num_colors) ?
>>> +                        0 : cdata.get_awt_icmLUT2Colors(b);
>>>                   }
>>>                   bytes = Native.toData(buf);
>>>               } else if (srcBuf instanceof DataBufferInt) {
>>> ======
>>>
>>> I'd like contribute following 1 file:
>>> M src/java.desktop/unix/classes/sun/awt/X11/XIconWindow.java
>>>
>>> I appreciate any feedback please, and how I would go about obtaining 
>>> a sponsor and contributor?
>>>
>>> Thanks,
>>> Ichiroh Takiguchi
>>> IBM Japan, Ltd.
>>>
> 


-- 
Best regards, Sergey.


More information about the awt-dev mailing list