[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

Reply via email to