-
Bug
-
Resolution: Fixed
-
P3
-
8, 11, 12
-
b14
-
generic
-
linux
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8229520 | 11.0.6-oracle | Sergey Bylokhov | P3 | Resolved | Fixed | b01 |
JDK-8224753 | 11.0.4 | Sergey Bylokhov | P3 | Resolved | Fixed | b05 |
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
http://mail.openjdk.java.net/pipermail/awt-dev/2018-June/014043.html
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
http://mail.openjdk.java.net/pipermail/awt-dev/2018-June/014043.html
- backported by
-
JDK-8224753 X11 icon window color handing bug
-
- Resolved
-
-
JDK-8229520 X11 icon window color handing bug
-
- Resolved
-