Gentoo Archives: gentoo-commits

From: James Le Cuirot <chewi@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-java/icedtea/files/, dev-java/icedtea/
Date: Sat, 10 Oct 2015 22:23:03
Message-Id: 1444515773.23e8fa2dfbb91d9e3da98e3da7c607085df62406.chewi@gentoo
1 commit: 23e8fa2dfbb91d9e3da98e3da7c607085df62406
2 Author: James Le Cuirot <chewi <AT> gentoo <DOT> org>
3 AuthorDate: Sat Oct 10 22:22:05 2015 +0000
4 Commit: James Le Cuirot <chewi <AT> gentoo <DOT> org>
5 CommitDate: Sat Oct 10 22:22:53 2015 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=23e8fa2d
7
8 dev-java/icedtea: Backport XShm fix from 2.7.0
9
10 Addresses bug #561500.
11
12 Package-Manager: portage-2.2.20.1
13
14 dev-java/icedtea/files/TryXShmAttach.patch | 201 +++++++++++++++++++++
15 ...ea-7.2.6.1.ebuild => icedtea-7.2.6.1-r1.ebuild} | 4 +
16 2 files changed, 205 insertions(+)
17
18 diff --git a/dev-java/icedtea/files/TryXShmAttach.patch b/dev-java/icedtea/files/TryXShmAttach.patch
19 new file mode 100644
20 index 0000000..4157bb6
21 --- /dev/null
22 +++ b/dev-java/icedtea/files/TryXShmAttach.patch
23 @@ -0,0 +1,201 @@
24 +
25 +# HG changeset patch
26 +# User andrew
27 +# Date 1438275152 -3600
28 +# Node ID a2334007f1a8504d2bd4a2c2a037732c289649c3
29 +# Parent ab23850139cb2c666e613010842a1f984b184a3a
30 +PR2568: openjdk causes a full desktop crash on RHEL 6 i586
31 +Summary: Re-apply "8025775: JNI warnings in TryXShmAttach"; some changes lost in bad merge changeset 4b26f93b23ba
32 +
33 +diff -r ab23850139cb -r a2334007f1a8 src/solaris/classes/sun/awt/X11/XConstants.java
34 +--- openjdk/jdk/src/solaris/classes/sun/awt/X11/XConstants.java Wed Oct 23 10:50:34 2013 +0200
35 ++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XConstants.java Thu Jul 30 17:52:32 2015 +0100
36 +@@ -699,9 +699,4 @@
37 + public static final long XkbModifierMapMask = (1L<<2);
38 + public static final long XkbVirtualModsMask = (1L<<6); //server map
39 +
40 +- /*****************************************************************
41 +- * X SHARED MEMORY EXTENSION FUNCTIONS
42 +- *****************************************************************/
43 +-
44 +- public static final int X_ShmAttach = 1;
45 + }
46 +diff -r ab23850139cb -r a2334007f1a8 src/solaris/classes/sun/awt/X11/XErrorHandler.java
47 +--- openjdk/jdk/src/solaris/classes/sun/awt/X11/XErrorHandler.java Wed Oct 23 10:50:34 2013 +0200
48 ++++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XErrorHandler.java Thu Jul 30 17:52:32 2015 +0100
49 +@@ -41,29 +41,6 @@
50 + return XErrorHandlerUtil.SAVED_XERROR_HANDLER(display, err);
51 + }
52 + }
53 +-
54 +- /**
55 +- * This is a base synthetic error handler containing a boolean flag which allows
56 +- * to show that an error is handled or not.
57 +- */
58 +- public static class XErrorHandlerWithFlag extends XBaseErrorHandler {
59 +- private volatile boolean errorOccurred = false;
60 +-
61 +- public boolean getErrorOccurredFlag() {
62 +- return errorOccurred;
63 +- }
64 +-
65 +- /**
66 +- * Sets an internal boolean flag to a particular value. Should be always called
67 +- * with {@code false} value of the parameter {@code errorOccurred} before this
68 +- * error handler is set as current.
69 +- * @param errorOccurred {@code true} to indicate that an error was handled,
70 +- * {@code false} to reset the internal boolean flag
71 +- */
72 +- public void setErrorOccurredFlag(boolean errorOccurred) {
73 +- this.errorOccurred = errorOccurred;
74 +- }
75 +- }
76 +
77 + /*
78 + * Instead of validating window id, we simply call XGetWindowProperty,
79 +@@ -99,75 +76,4 @@
80 + return theInstance;
81 + }
82 + }
83 +-
84 +- /**
85 +- * This is a synthetic error handler for errors generated by the native function
86 +- * {@code XShmAttach}. If an error is handled, an internal boolean flag of the
87 +- * handler is set to {@code true}.
88 +- */
89 +- public static final class XShmAttachHandler extends XErrorHandlerWithFlag {
90 +- private XShmAttachHandler() {}
91 +-
92 +- @Override
93 +- public int handleError(long display, XErrorEvent err) {
94 +- if (err.get_minor_code() == XConstants.X_ShmAttach) {
95 +- setErrorOccurredFlag(true);
96 +- return 0;
97 +- }
98 +- return super.handleError(display, err);
99 +- }
100 +-
101 +- // Shared instance
102 +- private static XShmAttachHandler theInstance = new XShmAttachHandler();
103 +- public static XShmAttachHandler getInstance() {
104 +- return theInstance;
105 +- }
106 +- }
107 +-
108 +- /**
109 +- * This is a synthetic error handler for {@code BadAlloc} errors generated by the
110 +- * native {@code glX*} functions. Its internal boolean flag is set to {@code true},
111 +- * if an error is handled.
112 +- */
113 +- public static final class GLXBadAllocHandler extends XErrorHandlerWithFlag {
114 +- private GLXBadAllocHandler() {}
115 +-
116 +- @Override
117 +- public int handleError(long display, XErrorEvent err) {
118 +- if (err.get_error_code() == XConstants.BadAlloc) {
119 +- setErrorOccurredFlag(true);
120 +- return 0;
121 +- }
122 +- return super.handleError(display, err);
123 +- }
124 +-
125 +- private static GLXBadAllocHandler theInstance = new GLXBadAllocHandler();
126 +- public static GLXBadAllocHandler getInstance() {
127 +- return theInstance;
128 +- }
129 +- }
130 +-
131 +- /**
132 +- * This is a synthetic error handler for errors generated by the native function
133 +- * {@code XChangeWindowAttributes}. If an error is handled, an internal boolean
134 +- * flag of the handler is set to {@code true}.
135 +- */
136 +- public static final class XChangeWindowAttributesHandler extends XErrorHandlerWithFlag {
137 +- private XChangeWindowAttributesHandler() {}
138 +-
139 +- @Override
140 +- public int handleError(long display, XErrorEvent err) {
141 +- if ((err.get_request_code() == XProtocolConstants.X_ChangeWindowAttributes) &&
142 +- (err.get_error_code() == XConstants.BadAccess)) {
143 +- setErrorOccurredFlag(true);
144 +- return 0;
145 +- }
146 +- return super.handleError(display, err);
147 +- }
148 +-
149 +- private static XChangeWindowAttributesHandler theInstance = new XChangeWindowAttributesHandler();
150 +- public static XChangeWindowAttributesHandler getInstance() {
151 +- return theInstance;
152 +- }
153 +- }
154 + }
155 +diff -r ab23850139cb -r a2334007f1a8 src/solaris/native/sun/awt/awt_GraphicsEnv.h
156 +--- openjdk/jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.h Wed Oct 23 10:50:34 2013 +0200
157 ++++ openjdk/jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.h Thu Jul 30 17:52:32 2015 +0100
158 +@@ -54,7 +54,7 @@
159 +
160 + void TryInitMITShm(JNIEnv *env, jint *shmExt, jint *shmPixmaps);
161 + void resetXShmAttachFailed();
162 +-jboolean TryXShmAttach(JNIEnv *env, Display *display, XShmSegmentInfo *shminfo);
163 ++jboolean isXShmAttachFailed();
164 +
165 + #endif /* MITSHM */
166 +
167 +diff -r ab23850139cb -r a2334007f1a8 src/solaris/native/sun/awt/awt_xembed_server.c
168 +--- openjdk/jdk/src/solaris/native/sun/awt/awt_xembed_server.c Wed Oct 23 10:50:34 2013 +0200
169 ++++ openjdk/jdk/src/solaris/native/sun/awt/awt_xembed_server.c Thu Jul 30 17:52:32 2015 +0100
170 +@@ -644,19 +644,12 @@
171 + return dim;
172 + }
173 +
174 +-Boolean isMapped(JNIEnv* env, Window w) {
175 ++Boolean isMapped(Window w) {
176 + XWindowAttributes attr;
177 + Status status = 0;
178 +- jboolean errorOccurredFlag;
179 +- jobject errorHandlerRef;
180 +- jobject savedError;
181 +- unsigned char xerror_code;
182 +-
183 +- EXEC_WITH_XERROR_HANDLER(env, "sun/awt/X11/XErrorHandler$IgnoreBadWindowHandler",
184 +- "()Lsun/awt/X11/XErrorHandler$IgnoreBadWindowHandler;", JNI_FALSE,
185 +- errorHandlerRef, errorOccurredFlag,
186 +- status = XGetWindowAttributes(awt_display, w, &attr));
187 +- xerror_code = GET_XERROR_CODE(env, savedError);
188 ++ WITH_XERROR_HANDLER(xerror_ignore_bad_window);
189 ++ status = XGetWindowAttributes(awt_display, w, &attr);
190 ++ RESTORE_XERROR_HANDLER;
191 + if (status == 0 || xerror_code != Success) {
192 + return False;
193 + }
194 +@@ -692,7 +685,7 @@
195 + sdata->version = *data;
196 + flags = *(data+1);
197 + new_mapped = (flags & XEMBED_MAPPED) != 0;
198 +- currently_mapped = isMapped(env, sdata->handle);
199 ++ currently_mapped = isMapped(sdata->handle);
200 + if (new_mapped != currently_mapped) {
201 + if (new_mapped) {
202 + XMapWindow(awt_display, sdata->handle);
203 +diff -r ab23850139cb -r a2334007f1a8 src/solaris/native/sun/java2d/x11/X11SurfaceData.c
204 +--- openjdk/jdk/src/solaris/native/sun/java2d/x11/X11SurfaceData.c Wed Oct 23 10:50:34 2013 +0200
205 ++++ openjdk/jdk/src/solaris/native/sun/java2d/x11/X11SurfaceData.c Thu Jul 30 17:52:32 2015 +0100
206 +@@ -551,8 +551,6 @@
207 + {
208 + XImage *img = NULL;
209 + XShmSegmentInfo *shminfo;
210 +- JNIEnv* env;
211 +- jboolean xShmAttachResult;
212 +
213 + shminfo = malloc(sizeof(XShmSegmentInfo));
214 + if (shminfo == NULL) {
215 +@@ -603,7 +601,7 @@
216 + */
217 + shmctl(shminfo->shmid, IPC_RMID, 0);
218 +
219 +- if (xShmAttachResult == JNI_FALSE) {
220 ++ if (isXShmAttachFailed() == JNI_TRUE) {
221 + J2dRlsTraceLn1(J2D_TRACE_ERROR,
222 + "X11SD_SetupSharedSegment XShmAttach has failed: %s",
223 + strerror(errno));
224 +
225
226 diff --git a/dev-java/icedtea/icedtea-7.2.6.1.ebuild b/dev-java/icedtea/icedtea-7.2.6.1-r1.ebuild
227 similarity index 98%
228 rename from dev-java/icedtea/icedtea-7.2.6.1.ebuild
229 rename to dev-java/icedtea/icedtea-7.2.6.1-r1.ebuild
230 index 2027cea..9645c54 100644
231 --- a/dev-java/icedtea/icedtea-7.2.6.1.ebuild
232 +++ b/dev-java/icedtea/icedtea-7.2.6.1-r1.ebuild
233 @@ -284,6 +284,10 @@ src_configure() {
234
235 unset JAVA_HOME JDK_HOME CLASSPATH JAVAC JAVACFLAGS
236
237 + # https://bugs.gentoo.org/show_bug.cgi?id=561500
238 + ln -s "${FILESDIR}/TryXShmAttach.patch" || die
239 + export DISTRIBUTION_PATCHES="TryXShmAttach.patch"
240 +
241 econf ${config} \
242 --with-openjdk-src-zip="${DISTDIR}/${OPENJDK_GENTOO_TARBALL}" \
243 --with-corba-src-zip="${DISTDIR}/${CORBA_GENTOO_TARBALL}" \