<AWT Dev> Proposal: X11 icon window color handing patch

Sergey Bylokhov Sergey.Bylokhov at oracle.com
Sun Aug 5 01:10:21 UTC 2018


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