Also, perhaps gids could be stack allocated if it is small enough like
xids is in the other function?
...jim
On 3/30/2011 4:35 PM, Phil Race wrote:
Hi Clemens,
677 if ((ids = (jint *) (*env)->GetPrimitiveArrayCritical(env, gidArray,
NULL)) == NULL) {
..
688 (*env)->ReleasePrimitiveArrayCritical(env, gidArray, gids, JNI_ABORT);
^^^^^
So the release should be on "ids".
I wonder if in the 32 bit case (or more precisely sizeof(jint) ==
sizeof(Glyph)
if we could skip the extra malloc and free ? Not sure how critical this is.
723 xids = (Glyph *) malloc(sizeof(unsigned int) * glyphCnt);
The cast should now be to (unsigned int*)
I can make these changes.
BTW when I look at the XRender headers "render.h" I see that it defines
typedef unsigned long Glyph;
so its not that the XID is defined to be 64 bits its the Glyph type
directly and this maybe is something that Xrender should have done
differently.
Also it is (was) a bug on Solaris as well. It was pilot error on my part
that made me think otherwise.
The only thing I've seen that concerns me is I've had a couple of abrupt
disconnects from the Xserver shutting down Java2Demo. I am not sure
if that's an Xserver problem or a client problem or if its even specific
to this 64 bit remote display scenario or what .. because its not
been that easy to reproduce.
-phil.
Clemens Eisserer wrote:
Hi Phil,
The problem was caused by the assumption that sizeof(int) ==
sizeof(XID), however Xlib uses unsigned long for XIDs, even if XIDs
are defined to be 32-bit on wire. According to the xorg mailing list
ists safe to store those values in 4-byte variables, the only case
which needs attention are arrays.
In this case the problem was I passed a Glyph* to
XRenderCompositeText, which however expected a unsigned int*. Both are
4bytes wide on ia32, but Glyph is 8 bytes on amd64. XRenderFreeGlyphs
was also affected.
- Clemens
PS: I can't access information for 7029934 - which seems to be rather
common for many bug-numbers I see floating arround on the mailing
lists. Any idea why?
2011/3/22 Clemens Eisserer <[email protected]>:
Hi Phil,
I'll have a look at this one soon.
I also hope to fix the bug causing intellij's editor to be completly
unuseable before jdk7's freeze phase - however I guess I'll need a
little help for that.
Just remembered that I promies results some time ago, sorry, I'll
send it soon.
Its just, university is giving me a really hard time. Starting with
6th April everything will be far more relaxed =)
Thanks, Clemens
2011/3/22 Phil Race <[email protected]>:
Clemens,
Have you tried 64 bit Linux JRE? SQE reports, and I have verified,
text is
truncated
But only on Linux. Solaris is OK. B&W, greyscale, LCD are all the same.
-phil..
*Change Request ID*: 7029934
*Synopsis*: Xrender: Text is truncated with 64 bit Linux JRE
=== *Description*
============================================================
java version "1.7.0-ea"
Java(TM) SE Runtime Environment (build 1.7.0-ea-b134)
Java HotSpot(TM) 64-Bit Server VM (build 21.0-b04, mixed mode)
Platform: OEL6
2.6.32-100.28.5.el6.x86_64 #1 SMP Wed Feb 2 18:40:23 EST 2011 x86_64
x86_64
x86_64 GNU/Linux
Problem:
When launch Java2Demo in OEL6 machine, the text partially shows in the
application. It only happens in 64 bits java.
I tried 32 bits java, the demo looks fine.
Please see attached screen shot for detail.
How to reproduce the problem:
1, Launch the demo by using jdk1.7.0-b134 ever early versions(like
b120)
2, When the demo GUI comes up, you can see all text in frame shows only
partially
[root@dhcp-santaclara22-2fl-west-10-132-182-109 linux-x64]# bin/java
-jar
-Dsun.java2d.xrender=True demo/jfc/Java2D/*.jar
XRender pipeline enabled
Xrender: INFO: Jules library not installed.
You can use the OEL6 machine to reproduce this problem,
I add machine info is in comments
*** (#1 of 1): 2011-03-22 16:41:39 GMT+00:00 [email protected]
*** Last Edit: 2011-03-22 17:15:42 GMT+00:00 [email protected]
=== *Evaluation*
=============================================================
Looks bad. Seems like all text rendering that goes via Xrender is
truncated.
Looks like the first half of any given drawString is visible and the
rest is
missing. Its not specific to Java2Demo. Its in SwingSet2 and in applet
demos.
It seems to have been this way since the first Xrender build (b97)
and its
not just OEL 6. Its also Ubuntu 10.04, so probably all 64 bit Linuxes.
But 64 bit Solaris on Intel/AMD is fine!
I reproduced this displaying remotely from an OEL 6 box and an
Ubuntu box
with Solaris 11 x86 as the display server, so its presumably
something on
the client (application) end.
The code is all the same so maybe its something to do with the
compilation.
*** (#1 of 1): 2011-03-22 20:37:53 GMT+00:00 [email protected]