[EMAIL PROTECTED] wrote:
> Due to big changes in GNU Classpath of 2004-05-31, I updated my tarball
> to adapt it accordingly. However, there are some notes to be mentioned:
>
> (1) javax/swing/JComponent.java uses holdsLock() method in
> java.lang.Thread to handle double-buffering, but Kaffe lacks it.
>
> (2) Java2D implementation in GNU Classpath makes use of much newer
> version of Cairo, but the one shipped with some Linux ditributions
> is a bit old.
>
> In my tarball, remove-holdslock.diff solves the (1) and (2) can be fixed
> with fix-gtkcairopeer.diff. Another way to solve (1) is to implement it,
> but I have no idea how it should exactly be implemented, so that I did
> a dummy one[1].
Okay, I've implemented holdLock like this in pure java code:
public static boolean holdsLock(Object obj) {
// use obj.notify to check if the current thread holds
// the monitor of the object.
// if it doesn't, notify will throw an exception.
try {
obj.notify();
// okay, current thread holds lock
return true;
}
catch (IllegalMonitorStateException e) {
// it doesn't hold the lock
return false;
}
}
I believe it's correct, thought it's not optimal performance wise :)
cheers,
dalibor topic
_______________________________________________
kaffe mailing list
[EMAIL PROTECTED]
http://kaffe.org/cgi-bin/mailman/listinfo/kaffe